linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@redhat.com>
To: Josh Hunt <joshhunt00@gmail.com>
Cc: Jens Axboe <axboe@kernel.dk>,
	linux-kernel@vger.kernel.org, tj@kernel.org
Subject: Re: multi-second application stall in open()
Date: Mon, 25 Jun 2012 17:18:50 -0400	[thread overview]
Message-ID: <20120625211850.GC10916@redhat.com> (raw)
In-Reply-To: <CAKA=qzbXm7LaDziH=cms1W5X+cwNNRkG0LNFfWKEppr2oht6_w@mail.gmail.com>

On Mon, Jun 25, 2012 at 11:22:32AM -0500, Josh Hunt wrote:
> On Mon, Jun 25, 2012 at 8:30 AM, Vivek Goyal <vgoyal@redhat.com> wrote:
> > On Fri, Jun 22, 2012 at 04:34:07PM -0500, Josh Hunt wrote:
> >
> > [..]
> >> Shouldn't the queue stay on the RR list until it is empty?
> >
> > This does look odd. cfqq should stay on service tree as long as it has
> > requests.
> >
> > Can you attach the full log again. Also make sure that blktrace is not
> > dropping any trace events.
> >
> > In slice_expire() we check following.
> >
> >        if (cfq_cfqq_on_rr(cfqq) && RB_EMPTY_ROOT(&cfqq->sort_list))
> >                cfq_del_cfqq_rr(cfqd, cfqq);
> >
> > So for some reason RB_EMPTY_ROOT() is returning true. But we must have
> > added the request and it should not have been empty.
> >
> > cfq_insert_request()
> >  cfq_add_rq_rb()
> >    elv_rb_add()
> >
> > So may be little more tracing after request addition will help. Just check
> > that RB_EMPTY_ROOT() is not true after addition of request and also print
> > number of requests queued.
> >
> > In slice_expired() we can probably put a BUG_ON() which checks following.
> >
> > BUG_ON(RB_EMPTY_ROOT(&cfqq->sort_list) && (cfqq->queued[0] || cfqq->queued[1]));
> >
> > Thanks
> > Vivek
> 
> Vivek
> 
> First off thanks for all the time you've spent helping me on this :)
> 
> I'm attaching the log. I will add more instrumentation based on your
> mail and let you know the results.

I suspect that cfq5917 are actually two queues. One sync and other async.
In latest kernels, trace messages append "A" or "S" in queue name to
represent async/sync queue. Why do I think so.

- I see that cfq5917 has dispatched both "W" and "R" requests. "R" don't
  get queued in sync queues and vice a versa.

- Once cfq5917 has preempted cfq5917. A queue can't preempt itself. 

  8,0    1   296615  4847.030318652  5917  I   R 1572951 + 8 (    2793)
[syslogd]
  8,0    1        0  4847.030321446     0  m   N cfq5917 insert_request
  8,0    1        0  4847.030323122     0  m   N cfq5917 add_to_rr
  8,0    1        0  4847.030325636     0  m   N cfq5917 preempt
  8,0    1        0  4847.030327033     0  m   N cfq5917 slice expired t=1
  8,0    1        0  4847.030328710     0  m   N cfq5917 resid=39
  8,0    1        0  4847.030331783     0  m   N cfq5917 sl_used=1 disp=7
charge=1 iops=0 sect=96

Hence I think that it is just a chance that both sync and async queues
have got same cfqq->pid. If you just append anohter character to represent
sync and async property of queue, that can cofirm it.

Thanks
Vivek

  reply	other threads:[~2012-06-25 21:18 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-06 21:56 multi-second application stall in open() Josh Hunt
2012-03-07 13:43 ` Josh Hunt
2012-03-07 16:28   ` Vivek Goyal
2012-03-07 18:56     ` Jens Axboe
2012-03-07 19:56       ` Vivek Goyal
2012-03-07 21:08       ` Josh Hunt
2012-03-08 22:22         ` Josh Hunt
2012-03-08 23:40           ` Vivek Goyal
     [not found]             ` <CAKA=qzbsL9UVYLZ3=hoT-1jfp=v=_Sr=h+YeHu0qAA=Ko_7P6w@mail.gmail.com>
2012-06-21 19:26               ` Josh Hunt
2012-06-21 20:32                 ` Vivek Goyal
2012-06-21 20:36                   ` Tejun Heo
2012-06-21 21:28                     ` Josh Hunt
2012-06-21 21:32                       ` Tejun Heo
2012-06-21 21:48                         ` Rakesh Iyer
     [not found]                         ` <CAOT6A4-a49wLHcQepUxJCDxOxfnSTEWa72OweLsmrea85OyrCg@mail.gmail.com>
2012-06-22 14:15                           ` Vivek Goyal
2012-06-21 21:11                   ` Josh Hunt
2012-06-22 14:12                     ` Vivek Goyal
2012-06-22 20:05                       ` Josh Hunt
2012-06-22 20:22                         ` Josh Hunt
2012-06-22 20:42                           ` Vivek Goyal
2012-06-22 20:53                             ` Josh Hunt
2012-06-22 20:57                               ` Josh Hunt
2012-06-22 21:34                                 ` Josh Hunt
2012-06-25 13:30                                   ` Vivek Goyal
2012-06-25 16:22                                     ` Josh Hunt
2012-06-25 21:18                                       ` Vivek Goyal [this message]
2012-06-25 23:05                                         ` Josh Hunt
2012-06-26  4:01                                           ` Josh Hunt
2012-06-26 12:59                                             ` Vivek Goyal
2012-06-26 15:18                                               ` Josh Hunt
2012-06-26 15:53                                                 ` Vivek Goyal
2012-06-26 20:37                                                   ` Josh Hunt
2012-06-26 20:56                                                     ` Tejun Heo
     [not found]                                                       ` <CAKA=qzbBtteDjHiPogCvN5jOSiPrDxx=vn96p02bXUy=6=jAgA@mail.gmail.com>
2012-06-26 23:44                                                         ` Josh Hunt
2012-06-27 17:21                                                           ` Josh Hunt
2012-06-27 17:38                                                             ` Tejun Heo
2012-06-27 17:44                                                               ` Josh Hunt
2012-06-27 17:54                                                                 ` Tejun Heo
2012-06-27 17:59                                                                   ` Josh Hunt
2012-06-29 23:02                                                                     ` Tejun Heo
2012-06-30  0:37                                                                       ` Josh Hunt
2012-07-04  1:12                                                                         ` Tejun Heo
2012-07-18 17:48                                                                           ` Tejun Heo
2012-06-26 20:43                                                 ` Tejun Heo
2012-06-25 17:26                                     ` Tejun Heo
2012-03-07 19:47     ` Josh Hunt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120625211850.GC10916@redhat.com \
    --to=vgoyal@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=joshhunt00@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).