В чем именно разница между параметрами (pgpgin, pswpin) и (pswpout, pgpgout) в /proc/vmstat?

В чем именно разница между параметрами (pgpgin, pswpin) и (pswpout, pgpgout) в /proc/vmstat?

Обратите внимание, что этот вопрос касается linuxтолько. И под swap space, я подразумеваю выделенный swap partition.

Я googleнемного поработал над этим и нашел вот это definitions:

Paging refers to writing portions, termed pages, of a process’ memory to disk.
Swapping, strictly speaking, refers to writing the entire process, not just part, to disk.
In Linux, true swapping is exceedingly rare, but the terms paging and swapping
often are used interchangeably.

и

page-out: The system's free memory is less than a threshold "lotsfree" and unnused / least used pages are moved to the swap area.
page-in: One process which is running requested for a page that is not in the current memory (page-fault), it's pages are being brought back to memory.
swap-out: System is thrashing and has deactivated a process and it's memory pages are moved into the swap area.
swap-in: A deactivated process is back to work and it's pages are being brought into the memory.

Теперь вы можете продублировать этот вопрос с теми, кто спрашивает о различиях между подкачкой и свопингом. Но я ищу немного больше. В любой момент времени, являются ли эти счетчики взаимоисключающими /proc/vmstat? Под этим я подразумеваю, включает ли параметр pswpinнекоторые счетчики из pgpginили наоборот? Что именно происходит, когда процесс является deactivated? Если все его страницы перемещены в swapпространство, то чем именно это отличается от множественных pageouts? Кроме того, если a pageinпроисходит всякий раз, когда происходит ошибка страницы, что можно сказать о двух других параметрах pgmajfaultи pgfaultотносительно этого события? Является ли тот случай, когда всякий раз, когда pagefault (major? minor?)происходит a, соответствующий pageinтакже происходит?

Было бы полезно, если бы были предложены примеры программ/тестов для проверки этих отдельных параметров.

PS: Я, возможно, продолжу добавлять/редактировать вопросы :)

решение1

Очень старый вопрос и до сих пор нет правильного ответа.

Прежде всего, память сегментируется ЦП и ядром на так называемые страницы. Размер страницы задается архитектурой ЦП, многие архитектуры поддерживают несколько различных размеров страниц, но наиболее распространенный размер страницы в архитектуре x86_64 имеет размер 4 КБ. Эти параметры, о которых вы говорите, показывают, сколько страниц памяти было считано/записано на диск и сколько из них подкачаны.

Имейте в виду, чтостраница вэто нормальное явление в ядре Linux, оно происходит почти каждый раз, когда вы загружаете двоичный файл с диска (который не кэширован) в оперативную память, то есть каждый раз, когда вы запускаете любое приложение.

Поскольку операции pgin и pgout не всегда являются тем, о чем нужно беспокоиться, были созданы дополнительные счетчики, которые содержат только информацию для swap — это счетчики pswpin и pswpout — они увеличиваются, когда страница памяти либо записывается в swap, либо когда она считывается из swap.

Опять же, это также не указывает на проблему, это указывает на проблему только при определенных обстоятельствах — например, когда вы видите, что эти цифры очень сильно меняются за короткий промежуток времени (что обычно происходит, когда вашей системе не хватает памяти).

Итак, вкратце:

  • pgpgin, pgpgout - количество страниц, считанных с диска и записанных в память, обычно вам не нужно особо беспокоиться об этих числах
  • pswpin, pswpout — вы можете отслеживать эти цифры по времени (с помощью какого-либо мониторинга, например, Prometheus). Если есть пики, это означает, что система интенсивно использует подкачку и у вас возникла проблема.

решение2

  1. pgpgin — количество килобайт, которое система загружает с диска в секунду.
  2. pgpgout — количество килобайт, которое система выгрузила на диск в секунду.
  3. pswpin — количество килобайт, которое система загружает с диска в секунду.
  4. pswpout — количество килобайт, которое система выгрузила на диск в секунду.

Связанный контент