Calculate the average number of *used* inodes for each thread to
process instead of the overall average number of inodes in the
filesystem per thread. Otherwise, if the filesystem is not very
full it will allocate too many groups to the first threads and
none to the last threads.
For example, a filesystem with a total of 5242880 inodes, with
3789293 used inodes should process on average 473661 used inodes
per thread with 8 threads, but this wasn't the case:
# e2fsck -fn -m8 /dev/vgmyth/lvmythmdt0.ssd
Pass 1: Checking inodes, blocks, and sizes
[Thread 0] Scan group range [0, 20), inode_count = 655358/655360
[Thread 1] Scan group range [20, 40), inode_count = 655360/655360
[Thread 2] Scan group range [40, 66), inode_count = 647340/655360
[Thread 3] Scan group range [66, 92), inode_count = 651555/655360
[Thread 4] Scan group range [92, 112), inode_count = 655360/655360
[Thread 5] Scan group range [112, 160), inode_count = 524320/655360
[Thread 6] Scan group range [159, 160), inode_count = 0/655360
[Thread 7] Scan group range [159, 160), inode_count = 0/655360
With the fix the thread balance is much better, with each thread
processing approximately the same number of used inodes, even the
last thread which has more groups but with fewer used inodes:
Pass 1: Checking inodes, blocks, and sizes
[Thread 0] Scan group range [0, 13], used inodes 458750/458752
[Thread 1] Scan group range [14, 28], used inodes 491520/491520
[Thread 2] Scan group range [29, 42], used inodes 458752/458752
[Thread 3] Scan group range [43, 63], used inodes 486191/688128
[Thread 4] Scan group range [64, 84], used inodes 485024/688128
[Thread 5] Scan group range [85, 98], used inodes 458752/458752
[Thread 6] Scan group range [99, 113], used inodes 491520/491520
[Thread 7] Scan group range [114, 159], used inodes 458784/1507328
Also print the group ranges as closed sets so the brackets align.
Change-Id: If0536d50bf82d0ca76399dad825a894218af0e3f
Fixes:
4e82819edc ("LU-16169 e2fsck: improve parallel thread balance")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/c/tools/e2fsprogs/+/53292
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Li Dongyang <dongyangli@ddn.com>