Re: Re: Question about gc time

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

 



On Mon, 3 Jul 2017, tang.junhui@xxxxxxxxxx wrote:

> Hello Eric, Coly
> 
> > So usually it takes 1.4s, as much as 7s on our systems.  Average frequency
> > is almost an hour.   Can GC just be triggered more frequently?  Say, once
> > every 5min?  Is that configurable?
> 
> GC is triggered by writing c->sb.bucket_size * c->nbuckets / 16 cache 
> data, or triggered by invalidating when there is not enough free 
> buckets. So GC time is not configurable, and I also do not think it is 
> usable by triggering GC more frequently, because as debug the code, in 
> my test bcache version, I find most time used in btree_gc_mark_node() 
> (in the latest bcache version it maybe btree_gc_mark_node() and 
> btree_gc_count_keys()), They are all memory operations, can we optimize 
> it?

Perhaps.  What is the total lock time that prevents IO?  Can you note 
those below?


--
Eric Wheeler



> 
> test result:
> 
> Jul  3 13:38:27 ceph192-9-9-153 kernel: [10541.541876] gc trigged by sectors_to_gc
> Jul  3 13:38:27 ceph192-9-9-153 kernel: [10541.544372] bch_gc_thread works
> Jul  3 13:38:27 ceph192-9-9-153 kernel: [10541.569479] gc begin btree_root
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.883089] add cl ffff880458627b18 to wait:ffff8804583237f0
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.884319] journal_write_root with journal_write_unlocked
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.885522] in journal_write_unlocked_root
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.886770] bch_btree_set_root_gc closure_sync wait cl:
> ffff880458627b18
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.886852] journal_write_done_root wake up wait: ffff8804583237f0
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.889190] bch_btree_set_root_gc closure_sync wait cl:
> ffff880458627b18 end
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.892783] gc btree_root over, begin bch_btree_gc_finish
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.895303] mark_node: 7203 times, 7074 ms; btree_alloc: 0 times, 0
> ms; coalse: 7203 times, 0 ms; write1: 7202 times, 80 ms; write2: 1 times, 0 ms; sort_node: 1 times, 1 ms
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.926504] gc bch_btree_gc_finish over, wake_up_allocators
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.928720] bch_moving_gc over, aftre gc, available: 4399506,
> nbuckets:6104768
> Jul  3 13:38:34 ceph192-9-9-153 kernel: [10548.930144] bch_gc_thread works over
> I am very anxious about this question, any comment would be valuable.
> 
> Regards
> Tang Junhui
> 
> 
> 
> 
> 
> 发件人:         Eric Wheeler <bcache@xxxxxxxxxxxxxxxxxx>
> 收件人:         Coly Li <i@xxxxxxx>,
> 抄送:        tang.junhui@xxxxxxxxxx, kent.overstreet@xxxxxxxxx, linux-bcache@xxxxxxxxxxxxxxx
> 日期:         2017/06/28 08:00
> 主题:        Re: Question about gc time
> 
> _________________________________________________________________________________________________________________
> 
> 
> 
> On Wed, 28 Jun 2017, Coly Li wrote:
> 
> > On 2017/6/27 下午8:04, tang.junhui@xxxxxxxxxx wrote:
> > > Hello Eric, Coly,
> > >
> > > I use a 1400G SSD device a bcache cache device,
> > > and attach with 10 back-end devices,
> > > and run random small write IOs,
> > > when gc works, It takes about 15 seconds,
> > > and the up layer application IOs was suspended at this time,
> > > How could we bear such a long time IO stopping?
> > > Is there any way we can avoid this problem?
> > >
> > > I am very anxious about this question, any comment would be valuable.
> >
> > I encounter same situation too.
> > Hmm, I assume there are some locking issue here, to prevent application
> > to send request and insert keys in LSM tree, no matter in writeback or
> > writethrough mode. This is a lazy and fast response, I need to check the
> > code then provide an accurate reply :-)
> 
> What controls the frequency?
> 
> On our system I noticed this:
> 
> ]# tail /sys/block/bcache0/bcache/cache/internal/*gc*
> 
> ==> /sys/block/bcache0/bcache/cache/internal/btree_gc_average_duration_ms <==
> 1455
> 
> ==> /sys/block/bcache0/bcache/cache/internal/btree_gc_average_frequency_sec <==
> 3521
> 
> ==> /sys/block/bcache0/bcache/cache/internal/btree_gc_max_duration_ms <==
> 7036
> 
> 
> So usually it takes 1.4s, as much as 7s on our systems.  Average frequency
> is almost an hour.   Can GC just be triggered more frequently?  Say, once
> every 5min?  Is that configurable?
> 
> -Eric
> 
> >
> >
> > --
> > Coly Li
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-bcache" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> 
> 

[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux