Note that with vm.swappiness=0, the vm.watermark_scale_factor value does not affect the swap possibility: MGLRU ignores sc->file_is_tiny. With the classic 2-gen LRU swapping goes well at swappiness=0 and high vm.watermark_scale_factor, which is expected according to the documentation: "At 0, the kernel will not initiate swap until the amount of free and file-backed pages is less than the high watermark in a zone." [1] With vm.swappiness=0, no swap occurs with any vm.watermark_scale_factor value with MGLRU. I used to see in practice (with MGLRU v3) the impossibility of swapping when vm.swappiness=0 and vm.watermark_scale_factor=1000. At a minimum, this will require updating the documentation for vm.swappiness. BTW, why MGLRU doesn't use something like sc->file_is_tiny? [1] https://github.com/torvalds/linux/blob/v5.16/Documentation/admin-guide/sysctl/vm.rst#swappiness