Почему swpd из vmstat не равен нулю

Согласно справочной странице vmstat, «swpd» означает количество используемой виртуальной памяти. Насколько я понимаю, в большинстве случаев он должен быть равен нулю, если физическому процессору не хватает места.

Однако я только что обнаружил, что значение «swpd» моего сервера не равно нулю.
enter image description here

Я не знаю почему. Даже если у меня более 700 процессов, процессоры почти на 100% не используются.
enter image description here

В общей сложности своп используется около 190M. Это не так уж и много по сравнению с общим размером 250G.

Значит ли это, что некоторые процессы будут использовать виртуальный обмен, даже если процессоры свободны?

3
задан 26 December 2017 в 17:00

1 ответ

Своп не имеет отношения к загрузке процессора. Своп - это память, которая записывается на диск.

Процессор может напрямую обращаться к обычной оперативной памяти, а оперативная память чрезвычайно быстрая по сравнению со свопом. Вот почему у нас есть оперативная память - в качестве быстрого буфера для данных, к которым процессор должен получить доступ.

Своп позволяет ядру записывать неиспользуемую память на диск для извлечения при необходимости. Это дорогостоящий процесс, поскольку диск очень медленный по сравнению с памятью, но он также позволяет использовать больше памяти, чем физический объем памяти.

Кроме того, некоторые вещи могут никогда не использоваться, но все же имеют выделенное пространство памяти. Обычно ядро ​​заменяет вещи, которые не используются.

Использованный 190 МБ SWAP не является проблемой. Проблема в том, что компьютер должен записать что-то для замены и получить его снова.

В моем ноутбуке на данный момент записано 445 МБ памяти для подкачки, и все же через неиспользуемую память 3GiB - очевидно, ядро ​​на каком-то этапе обнаружило что-то, что не использовалось, и решило заменить его.

Короче говоря: не обращайте внимания на использование свопа, за исключением случаев:

  1. Вы часто видите избиение .
  2. 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

Это количество страниц, написанных для обмена и чтения из обмена. Пока эти цифры не растут быстро, все в порядке - и подкачка дает вам больше памяти для реальных приложений и кэширования, что ускоряет вашу систему.

7
ответ дан 26 December 2017 в 17:00
  • 1
    Это зарегистрировало меня из существующей Коричной сессии, все же. – musiphil 12 December 2017 в 00:12
  • 2
    Это зарегистрировало меня из существующей Коричной сессии, все же. – musiphil 12 December 2017 в 00:12

Другие вопросы по тегам:

Похожие вопросы: