Hi, This is a revised version of my patches to improve GFS2 performance and reduce GFS2 fragmentation. As suggested by Steve Whitehouse, the first patch has been modified to base its distribution of resource groups on the number of journals.
Also as suggested, the patch that kept file close from deleting rgrp reservations has been removed from the set, leaving only three patches. The removal of that patch caused fragmentation to climb 15 percent, but it's still much (41 percent) better than the original stock kernels. I agree that use cases like untar would make for much worse fragmentation problems if that patch were to remain. I've re-tested with these three patches and found that performance and fragmentation are still good. Here are numbers: STOCK RHEL7 kernel (none of these patches): Run times: Run 1 time: 2hr 40min 33sec Run 2 time: 2hr 39min 52sec Run 3 time: 2hr 39min 31sec Run 4 time: 2hr 33min 57sec Run 5 time: 2hr 41min 6sec Total file extents (File fragmentation): EXTENT COUNT FOR OUTPUT FILES = 744708 EXTENT COUNT FOR OUTPUT FILES = 749868 EXTENT COUNT FOR OUTPUT FILES = 721862 EXTENT COUNT FOR OUTPUT FILES = 635301 EXTENT COUNT FOR OUTPUT FILES = 689263 (Average 708200) The times are bad and the fragmentation level is also bad. If I add just the first patch, "GFS2: Set of distributed preferences for rgrps" the performance improves, but the fragmentation is worse (I only did three iterations this time): Run times: Run 1 time: 2hr 2min 47sec Run 2 time: 2hr 8min 37sec Run 3 time: 2hr 10min 0sec Total file extents (File fragmentation): EXTENT COUNT FOR OUTPUT FILES = 1011217 EXTENT COUNT FOR OUTPUT FILES = 1025973 EXTENT COUNT FOR OUTPUT FILES = 1070163 With these three patches, both performance and fragmentation are good: Run 1 time: 2hr 9min 49sec Run 2 time: 2hr 10min 15sec Run 3 time: 2hr 8min 35sec Run 4 time: 2hr 15min 15sec Run 5 time: 2hr 7min 4sec Run 6 time: 2hr 8min 8sec Run 7 time: 2hr 7min 54sec EXTENT COUNT FOR OUTPUT FILES = 406366 EXTENT COUNT FOR OUTPUT FILES = 432978 EXTENT COUNT FOR OUTPUT FILES = 428736 EXTENT COUNT FOR OUTPUT FILES = 419736 EXTENT COUNT FOR OUTPUT FILES = 419040 EXTENT COUNT FOR OUTPUT FILES = 422774 EXTENT COUNT FOR OUTPUT FILES = 409281 (Average 419844) Regards, Bob Peterson Red Hat File Systems Signed-off-by: Bob Peterson <rpete...@redhat.com> --- Bob Peterson (3): GFS2: Set of distributed preferences for rgrps GFS2: Only increase rs_sizehint GFS2: If we use up our block reservation, request more next time fs/gfs2/file.c | 3 ++- fs/gfs2/incore.h | 1 + fs/gfs2/rgrp.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- fs/gfs2/rgrp.h | 1 + 4 files changed, 68 insertions(+), 6 deletions(-) -- 1.9.3