From: Darrick J. Wong <djwong@xxxxxxxxxx> Currently, phase 8 runs very slowly on filesystems with a lot of small free space extents. To reduce the amount of time spent on fstrim activities during phase 8, we want to balance estimated runtime against completeness of the trim. In short, the goal is to reduce runtime by avoiding small trim requests. At the start of phase 8, a CDF is computed in decreasing order of extent length from the histogram buckets created during the fsmap scan in phase 7. A point corresponding to the fstrim percentage target is chosen from the CDF and mapped back to a histogram bucket, and free space extents smaller than that amount are ommitted from fstrim. On my aging /home filesystem, the free space histogram reported by xfs_spaceman looks like this: from to extents blocks pct blkcdf extcdf 1 1 121953 121953 0.04 100.00 100.00 2 3 124741 299694 0.09 99.96 81.16 4 7 113492 593763 0.18 99.87 61.89 8 15 109215 1179524 0.36 99.69 44.36 16 31 76972 1695455 0.52 99.33 27.48 32 63 48655 2219667 0.68 98.82 15.59 64 127 31398 2876898 0.88 98.14 8.08 128 255 8014 1447920 0.44 97.27 3.23 256 511 4142 1501758 0.46 96.82 1.99 512 1023 2433 1768732 0.54 96.37 1.35 1024 2047 1795 2648460 0.81 95.83 0.97 2048 4095 1429 4206103 1.28 95.02 0.69 4096 8191 1045 6162111 1.88 93.74 0.47 8192 16383 791 9242745 2.81 91.87 0.31 16384 32767 473 10883977 3.31 89.06 0.19 32768 65535 272 12385566 3.77 85.74 0.12 65536 131071 192 18098739 5.51 81.98 0.07 131072 262143 108 20675199 6.29 76.47 0.04 262144 524287 80 29061285 8.84 70.18 0.03 524288 1048575 39 29002829 8.83 61.33 0.02 1048576 2097151 25 36824985 11.21 52.51 0.01 2097152 4194303 32 101727192 30.95 41.30 0.01 4194304 8388607 7 34007410 10.35 10.35 0.00