Applied, thanks!!
Mike Kelly, le lun. 29 déc. 2025 13:32:04 +0000, a ecrit: > Here is a proposal to alter the choice of page to evict during pageout. The > current implementation always chooses external pages if there any of those > that are pageable. At the extreme case of that scenario, processes repeatedly > page in and page out the same executable pages in order to progress, > resulting in low performance. > > This implementation now searches for pages in the order: inactive/external, > inactive/internal, active/external and active/internal as suggested by Samuel > (https://lists.gnu.org/archive/html/bug-hurd/2025-12/msg00034.html). The > performance improvement is considerable. A test case involving 3 instances of > g++ compiling C++ template code (MatrixSine.cpp from libeigen-dev) uses > sufficient memory on a 4GB machine to require around 500MB of swap. This test > takes about 11 minutes with previous gnumach version (using a virtual > machine) but 3 minutes with this alteration. I have not been able to complete > this test on a 64 bit Hurd 'real hardware' installation with previous gnumach > but the compilation does complete with this patch after about 10 minutes. > > This patch compares quite well with my previous suggestion > (https://lists.gnu.org/archive/html/bug-hurd/2025-12/msg00029.html). The test > case took around 9 minutes on the hardware platform with that scheme, > compared to about 10 minutes with this one. Times on virtual machines were > very similar. > > I'd therefore recommend incorporating this patch rather than my previous > offering. Although slightly slower, I believe it is an approach that will be > longer lived, even though it will require further elaboration. I have a > number of local prototypes that are compatible and which should improve > performance further in the future. > > Also included is a minor enhancement to 'show vmstat' that also presents the > portion of active and inactive pages that are external and internal. >
