Согласно справочной странице vmstat
, «swpd» означает количество используемой виртуальной памяти. Насколько я понимаю, в большинстве случаев он должен быть равен нулю, если физическому процессору не хватает места.
Однако я только что обнаружил, что значение «swpd» моего сервера не равно нулю.
Я не знаю почему. Даже если у меня более 700 процессов, процессоры почти на 100% не используются.
В общей сложности своп используется около 190M. Это не так уж и много по сравнению с общим размером 250G.
Значит ли это, что некоторые процессы будут использовать виртуальный обмен, даже если процессоры свободны?
Своп не имеет отношения к загрузке процессора. Своп - это память, которая записывается на диск.
Процессор может напрямую обращаться к обычной оперативной памяти, а оперативная память чрезвычайно быстрая по сравнению со свопом. Вот почему у нас есть оперативная память - в качестве быстрого буфера для данных, к которым процессор должен получить доступ.
Своп позволяет ядру записывать неиспользуемую память на диск для извлечения при необходимости. Это дорогостоящий процесс, поскольку диск очень медленный по сравнению с памятью, но он также позволяет использовать больше памяти, чем физический объем памяти.
Кроме того, некоторые вещи могут никогда не использоваться, но все же имеют выделенное пространство памяти. Обычно ядро заменяет вещи, которые не используются.
Использованный 190 МБ SWAP не является проблемой. Проблема в том, что компьютер должен записать что-то для замены и получить его снова.
В моем ноутбуке на данный момент записано 445 МБ памяти для подкачки, и все же через неиспользуемую память 3GiB - очевидно, ядро на каком-то этапе обнаружило что-то, что не использовалось, и решило заменить его.
Короче говоря: не обращайте внимания на использование свопа, за исключением случаев:
free -m
показывает очень низкий объем доступной памяти Быстрый пример free -m
с моего ноутбука:
$ free -m
total used free shared buffers cached
Mem: 7702 7454 247 582 230 3477
-/+ buffers/cache: 3746 3955
Swap: 8191 445 7746
Как мы видим, есть 247 МБ свободного , Но это еще не все. Кроме того, существует более 3 кбайт кэшей, которые можно очень быстро освободить , если ядру для чего-то понадобится больше памяти. Таким образом, реальный объем свободной памяти составляет 3955 МБ, как показано во второй строке под free
. Вы также видите используемый обмен.
Короче говоря: не обращайте внимания на использование пространства подкачки, если только у вас не возникнут проблемы, например, если программное обеспечение реагирует очень медленно - это хороший признак перебора.
Для проверки обмолота вы можете запустить vmstat -s
для отображения статистики. Вы увидите две строки, например:
174085 pages swapped in
569123 pages swapped out
Это количество страниц, написанных для обмена и чтения из обмена. Пока эти цифры не растут быстро, все в порядке - и подкачка дает вам больше памяти для реальных приложений и кэширования, что ускоряет вашу систему.