On 2021/2/26 下午5:54, Coly Li wrote: > On 2/26/21 4:57 PM, Norman.Kern wrote: > [snipped] >>> You may try to trigger a gc by writing to >>> sys/fs/bcache/<cache-set-uuid>/internal/trigger_gc >>> >> When all cache had written back, I triggered gc, it recalled. >> >> root@WXS0106:~# cat /sys/block/bcache0/bcache/cache/cache_available_percent >> 30 >> >> root@WXS0106:~# echo 1 > /sys/block/bcache0/bcache/cache/internal/trigger_gc >> root@WXS0106:~# cat /sys/block/bcache0/bcache/cache/cache_available_percent >> 97 >> >> Why must I trigger gc manually? Is not a default action of bcache-gc thread? And I found it can only work when all dirty data written back. >> > 1, GC is automatically triggered after some mount of data consumed. I > guess it is just not about time in your situation. > > 2, Because the gc will shrink all cached clean data, which is very > unfriendly for read-intend workload. Therefore gc_after_writeback is > defaulted as 0, when this sysfs file content set to 1, a gc will trigger > after the writeback accomplished. I made a test again and get more infomation: root@WXS0089:~# cat /sys/block/bcache0/bcache/dirty_data 0.0k root@WXS0089:~# lsblk /dev/sda NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 447.1G 0 disk `-bcache0 252:0 0 10.9T 0 disk root@WXS0089:~# cat /sys/block/sda/bcache/priority_stats Unused: 1% Clean: 29% Dirty: 70% Metadata: 0% Average: 49 Sectors per Q: 29184768 Quantiles: [1 2 3 5 6 8 9 11 13 14 16 19 21 23 26 29 32 36 39 43 48 53 59 65 73 83 94 109 129 156 203] root@WXS0089:~# cat /sys/fs/bcache/066319e1-8680-4b5b-adb8-49596319154b/internal/gc_after_writeback 1 You have new mail in /var/mail/root root@WXS0089:~# cat /sys/fs/bcache/066319e1-8680-4b5b-adb8-49596319154b/cache_available_percent 28 I read the source codes and found if cache_available_percent > 50, it should wakeup gc while doing writeback, but it seemed not work right. > > Coly Li > > > >