Linux: пам'ять безкоштовна, але використовується swap. Чому?


11

Ось діаграми Муніна.

Використання пам'яті: http://koryagin.com/w/q/memory-day.png

Замінити / вийти: http://koryagin.com/w/q/swap-day.png

Чому Linux вирішує збільшити кеш-пам'ять і використовувати swap, коли розмір оперативної пам’яті набагато більший, ніж пам'ять, яку використовують програми?


2
Підсистема VM Linux за останні кілька років дуже налаштована на користь буферного простору та простору кешу; програми, що займають пам'ять, але нічого не роблячи , переміщаються на диск. Це збільшує чуйність та продуктивність. Якщо ви не бачите проблем із продуктивністю, вам дійсно не потрібно буде турбуватися про це.
Барт Сільверстрім

Відповіді:


17

На вашому сервері, ймовірно, є деякі процеси споживання їжі пам’яттю та / або неактивні процеси, що мають багато неактивних сторінок. Ядро Linux вважає за краще заміняти неактивні частини програм для заміни, оскільки, швидше за все, пам'ять краще використовувати як кеш.

Якщо ви хочете змінити таку поведінку, пограйте з vm.swappinessналаштуванням sysctl, але будьте попереджені, перехитрити розробників ядер / дистрибуторів ядра не так просто. :-)

У вас є проблеми з роботою на вашому сервері під час цього своп-шипу чи ви запитали з цікавості?


У мене немає проблем з продуктивністю на цьому конкретному сервері. Але в іншому, де ситуація не настільки зрозуміла, я думаю про те, що робити. Чи не може певна логіка управління пам’яттю Linux бути причиною segfault PHP-FPM, якщо вони не відповідають жодній із відомих проблем PHP? Отже, загалом на користь цікавості.
Павло Корягін

До речі, цей сервер інтенсивно обробляє дуже мало обсягу даних з фіксованим набором сценаріїв, тому він не повинен мати інтенсивного вводу / виводу. Так чому Linux хоче мати такий великий кеш?
Павло Корягін

Linux сильно кешує файли, метадані файлів, записи каталогів тощо. Спробуйте команду slabtop.
Janne Pikkarainen

Дуже дякую. Мине певний час, щоб зрозуміти, що робити з slabtopінформацією.
Павло Корягін

Нехай це працює на весь екран, коли ваш начальник проходить повз вашу кабінку і зроби собі гуру в його очах. :-) Ще одна приємна команда "ooh, яка впевнено виглядає важко зрозуміти" є systat -vmstatу FreeBSD (напевно, і інші BSD).
Janne Pikkarainen

1

Спробуйте зіграти з параметром swappiness . Як ви бачите, що ваша система почала мінятися, коли вона намагалася збільшити розмір кеш-файлів, це нормально, якщо swappines не дорівнює 0.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.