Re: cosd multi-second stalls cause "wrongly marked me down"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 11 Mar 2011, Jim Schutt wrote:
> 
> On Fri, 2011-03-11 at 11:37 -0700, Sage Weil wrote:
> > On Fri, 11 Mar 2011, Jim Schutt wrote:
> > > So none of those were osd_ping messages.
> > > 
> > > But, I still had lots of delayed acks.  Here's a couple more examples:
> > > 
> > > osd.0.log:960713:2011-03-11 10:55:32.117721 7fc4cb7fe940 -- 172.17.40.21:6802/28363 --> osd74 172.17.40.31:6808/24916 -- osd_ping(e14 as_of 14) v1 -- ?+0 0x7fc4cc16f270
> > > osd.0.log:960756:2011-03-11 10:55:32.118395 7fc4c96eb940 -- 172.17.40.21:6802/28363 >> 172.17.40.31:6808/24916 pipe(0x28fb580 sd=53 pgs=47 cs=1 l=0).writer encoding 289 0x7fc4cc16f270 osd_ping(e14 as_of 14) v1
> > > osd.0.log:960757:2011-03-11 10:55:32.118409 7fc4c96eb940 -- 172.17.40.21:6802/28363 >> 172.17.40.31:6808/24916 pipe(0x28fb580 sd=53 pgs=47 cs=1 l=0).writer sending 289 0x7fc4cc16f270
> > > osd.0.log:960758:2011-03-11 10:55:32.118422 7fc4c96eb940 -- 172.17.40.21:6802/28363 >> 172.17.40.31:6808/24916 pipe(0x28fb580 sd=53 pgs=47 cs=1 l=0).write_message 0x7fc4cc16f270 osd_ping(e14 as_of 14) v1
> > 
> > This bit has me confused:
> > 
> > > osd.0.log:963163:2011-03-11 10:55:32.941413 7fc4c61b6940 -- 172.17.40.21:6802/28363 >> 172.17.40.31:6808/24916 pipe(0x28fb580 sd=53 pgs=47 cs=1 l=0).reader got ack seq 289 >= 289 on 0x7fc4cc16f270 osd_ping(e14 as_of 14) v1
> > > osd.0.log:964273:2011-03-11 10:55:33.447526 7fc4c61b6940 RefCountedObject::put delete 0x7fc4cc16f270 took 5.06013 secs!
> > > osd.0.log:964274:2011-03-11 10:55:33.447538 7fc4c61b6940 -- 172.17.40.21:6802/28363 >> 172.17.40.31:6808/24916 pipe(0x28fb580 sd=53 pgs=47 cs=1 l=0).handle_ack finished put on 0x7fc4cc16f270
> > 
> > It looks like ~ .5 seconds has gone by for that thread, but the ::put 
> > debug says 5 seconds.  It happens between the 'got ack seq' and 'finished 
> > put' lines, though, right?  
> 
> OK, with Greg's utime_t double fix, I git no hits on
> 
> # egrep -Hn --color -e "->put took" osd.*.log
> 
> 
> But, I still get lots of stalled :RefCountedObject::put delete:
> 
> # grep -Hn RefCountedObject::put osd.*.log | egrep "took [1-9]\." | wc -l
> 8911
> 
> # grep -Hn RefCountedObject::put osd.*.log | egrep "took [0-9][0-9]\." | wc -l
> 415

Hmm!  That does seem to point at the allocator, doesn't it.

Other threads are doing work during this long interval?  Including freeing 
memory, presumably, since basically everything uses the heap one way or 
another.  If it's the allocator, it's somehow affecting one thread only, 
which is pretty crazy.

Is it difficult for you to try this with tcmalloc?  That'll tell us 
something.

One other possibility would be to try to catch this "in the act" and send 
it a SIGABRT to get a core dump.  Then we can look in more detail at what 
this (and other) threads are up to.  I'm not sure how easy this is to 
catch on a particular node...

sage
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux