У меня есть сервер Ubuntu 8.04, на котором работает база данных, и несколько серверов приложений Java. Его конфигурация и использование памяти:
total used free shared buffers cached
Mem: 16456176 15930028 526148 0 81372 9674196
-/+ buffers/cache: 6174460 10281716
Swap: 1951888 366100 1585788
Я заметил, что своп повышается каждый день и выпускается ночью. Спрос не одинаков во все дни и начинается в разное время. Так что это довольно случайно, за исключением нечеткой границы «день-ночь».
Нагрузка на эту машину меняется в течение дня. Это очень низкое значение с полуночи до 6-7 часов утра, намного выше (но стабильно) до 6-8 часов вечера, затем постепенно снижается.
Теперь у меня есть следующие вопросы:
- Как я могу увидеть, какие процессы используют своп?
- Почему он предпочитает выменять, а не брать немного памяти из кеша?
NSWAP
столбец (Ubuntu 16.04: /).В StackOverflow уже есть отличный ответ на ваш первый вопрос («Какой процесс на самом деле использует своп?»).
/programming//a/7180078/1442301
Короче говоря, инструменты любят
top
илиhtop
не предоставляют точную информацию об использовании подкачки. Вы должны погрузиться в/proc
папку (в псевдо-файле/proc/$PID/smaps
), чтобы получить более точную информацию.Пост уже упоминалось выше , содержит короткий скрипт , чтобы получить эту информацию вторит хорошим способом.
источник
С
htop v1.01
, я нажал «S» , чтобы добавитьNSWAP
столбец вместо «F2» (как это было предложено Gilles), затемColumns
>Available Columns
> иF5
добавить его.источник
Без опроса и анализа результатов работы таких инструментов, как
vmstat
,free
иtop
, лучшим местом для поиска могут быть crontabs пользователя root или других пользователей в системе. Если общая нагрузка на систему резко возрастает в определенное время, есть вероятность, что в cron существует процесс, который создает потребность в ресурсах. В противном случае вы всегда можете создать утилиту для одноразовой регистрации в гетто с помощьюscript
утилиты, которая просто записывает все, что идет в STDOUT.Так что, если мне нужно было сделать одноразовый скрипт, чтобы перехватить вывод для последующей проверки, в одном терминале я бы набрал:
а потом
и в другом терминале
а потом
а затем на следующее утро убейте оба
script
вызова и сопоставьте выходные данныеtop
иfree
еще раз это гетто подход, но звучит так, как будто вам нужен только один раз
Вы также можете прочитать руководство по обмену Ubuntu
источник