on 11/21/2024 4:05 PM, Jim Zhao wrote: >> on 11/19/2024 8:29 PM, Jim Zhao wrote: >>> Thanks, Jan, I just sent patch v2, could you please review it ? >>> >>> And I found the debug info in the bdi stats. >>> The BdiDirtyThresh value may be greater than DirtyThresh, and after applying this patch, the value of BdiDirtyThresh could become even larger. >>> >>> without patch: >>> --- >>> root@ubuntu:/sys/kernel/debug/bdi/8:0# cat stats >>> BdiWriteback: 0 kB >>> BdiReclaimable: 96 kB >>> BdiDirtyThresh: 1346824 kB >>> DirtyThresh: 673412 kB >>> BackgroundThresh: 336292 kB >>> BdiDirtied: 19872 kB >>> BdiWritten: 19776 kB >>> BdiWriteBandwidth: 0 kBps >>> b_dirty: 0 >>> b_io: 0 >>> b_more_io: 0 >>> b_dirty_time: 0 >>> bdi_list: 1 >>> state: 1 >>> >>> with patch: >>> --- >>> root@ubuntu:/sys/kernel/debug/bdi/8:0# cat stats >>> BdiWriteback: 96 kB >>> BdiReclaimable: 192 kB >>> BdiDirtyThresh: 3090736 kB >>> DirtyThresh: 650716 kB >>> BackgroundThresh: 324960 kB >>> BdiDirtied: 472512 kB >>> BdiWritten: 470592 kB >>> BdiWriteBandwidth: 106268 kBps >>> b_dirty: 2 >>> b_io: 0 >>> b_more_io: 0 >>> b_dirty_time: 0 >>> bdi_list: 1 >>> state: 1 >>> >>> >>> @kemeng, is this a normal behavior or an issue ? >> Hello, this is not a normal behavior, could you aslo send the content in >> wb_stats and configuired bdi_min_ratio. >> I think the improper use of bdi_min_ratio may cause the issue. > > the min_ratio is 0 > --- > root@ubuntu:/sys/class/bdi/8:0# cat min_bytes > 0 > root@ubuntu:/sys/class/bdi/8:0# cat min_ratio > 0 > root@ubuntu:/sys/class/bdi/8:0# cat min_ratio_fine > 0 > > wb_stats: > --- > > root@ubuntu:/sys/kernel/debug/bdi/8:0# cat stats > BdiWriteback: 0 kB > BdiReclaimable: 480 kB > BdiDirtyThresh: 1664700 kB > DirtyThresh: 554900 kB > BackgroundThresh: 277108 kB > BdiDirtied: 82752 kB > BdiWritten: 82752 kB > BdiWriteBandwidth: 205116 kBps > b_dirty: 6 > b_io: 0 > b_more_io: 0 > b_dirty_time: 0 > bdi_list: 1 > state: 1 > root@ubuntu:/sys/kernel/debug/bdi/8:0# cat wb_stats ... > > WbCgIno: 416 > WbWriteback: 0 kB > WbReclaimable: 288 kB > WbDirtyThresh: 554836 kB > WbDirtied: 47616 kB > WbWritten: 47424 kB > WbWriteBandwidth: 168 kBps > b_dirty: 1 > b_io: 0 > b_more_io: 0 > b_dirty_time: 0 > state: 5 > ... > WbCgIno: 3186 > WbWriteback: 0 kB > WbReclaimable: 96 kB > WbDirtyThresh: 554788 kB > WbDirtied: 1056 kB > WbWritten: 1152 kB > WbWriteBandwidth: 152 kBps > b_dirty: 1 > b_io: 0 > b_more_io: 0 > b_dirty_time: 0 > state: 5 ... > WbCgIno: 72 > WbWriteback: 0 kB > WbReclaimable: 0 kB > WbDirtyThresh: 554836 kB > WbDirtied: 96 kB > WbWritten: 192 kB > WbWriteBandwidth: 4 kBps > b_dirty: 1 > b_io: 0 > b_more_io: 0 > b_dirty_time: 0 > state: 5 Hi Jim, Sorry for late reply. The dirty thresh of these three groups is as high as dirty thresh of whole bdi which is unusual. In __wb_calc_thresh, we calculate dirty thresh of group by (numerator / denominator) * (thresh of whole bdi) roughly, so (numerator / denominator) of these three groups is 1. However, the sum of (numerator / denominator) of all groups is suppose to be 1. In fprop_fraction_percpu, we know numerator and denominator are retrieved from percpu_counter, I think it's because of percpu counter errors make this happen. Do we cat wb_stats and stats when writeback load is low. If so, it's likely caused by percpu counter errors . > ubuntu24.04 desktop + kernel 6.12.0 > default cgroups, not configured manually. > > --- > Thanks > Jim Zhao >