~ uname -a
Linux user 5.4.0-48-generic #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
~ cat /proc/sys/vm/swappiness
5
~ free -h
total used free shared buff/cache available
Mem: 7.7Gi 6.0Gi 123Mi 1.1Gi 1.5Gi 278Mi
Swap: 3.8Gi 2.0Gi 1.8Gi
Такое же поведение было в Ubuntu 18.04, и я думал, что в Ubuntu 20.04 проблема будет решена, но у меня такая же проблема.
Неважно, использую ли я файл подкачки или zram, установка vm.swappiness никогда не работает.
Согласно запросу:
top - 21:46:46 up 13 min, 2 users, load average: 3.86, 3.82, 2.20
Tasks: 268 total, 3 running, 265 sleeping, 0 stopped, 0 zombie
%Cpu(s): 39.0 us, 14.0 sy, 0.1 ni, 46.8 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7858.1 total, 146.8 free, 5743.9 used, 1967.3 buff/cache
MiB Swap: 4096.0 total, 3960.5 free, 135.5 used. 971.5 avail Mem
~ grep -i swap /etc/fstab
/swapfile none swap sw 0 0
Наоборот, в ядре 5.4 что-то не так в системе ВМ.
В ядрах серии 5.4 я могу иметь около 4 ГБ приложений, работающих на моей 16-гигабайтной системе дома, делать что-то, включающее около 5-10 ГБ+ дискового ввода-вывода, и в конечном итоге я выгружаю около 2 ГБ+... и приятно большая пауза подкачки, если я открываю меню или что-то в этом роде. Кажется, что установка vm.swappiness=1 по сравнению с vm.swappiness=100 по умолчанию практически не влияет на ядра 5.4.x.
В ядрах до 5.4 я работал в Ubuntu 18.04, а также с ядром 5.7.x я запускал в Ubuntu 18.04 с основной линией (установщик основного ядра Ubuntu), если вы установите vm.swappiness=100, это все еще не было столь агрессивным. со свопом как 5.4 есть. Не то, чтобы я рекомендовал такое низкое значение, как vm.swappiness=1, но в серии 5.4.x кажется, что он все еще довольно сильно подкачивает, в ядрах до 5.4 и после 5.4, если бы я запускал достаточно приложений, это позволяло бы приложениям виртуально заполнять ОЗУ. до того, как он поменялся местами, что привело к довольно плохой производительности из-за крошечного объема оперативной памяти, оставшейся для дискового кеша; он действительно показывал почти нулевое использование подкачки, пока ОЗУ не было полностью заполнено.