Я исследую сервер, используемый для анализа научных данных. Он работает под управлением RHEL 6.4. Он имеет почти 200 ГБ оперативной памяти. Он работал очень медленно для пользователей через SSH, и после некоторых поисков я быстро заметил, что использование ОЗУ было заоблачным. Что странно, даже в состоянии ожидания он все еще использует тонну оперативной памяти:
Я также просмотрел htop
и я не вижу, чтобы какой-либо запущенный процесс использует более 0,1% ОЗУ. Так что мне интересно, что происходит? На данный момент единственный запущенный процесс, инициируемый пользователем, - это rsync между двумя общими ресурсами, подключенными к NFS.
Я попытался перезагрузить сервер, и в течение нескольких минут он реагировал намного быстрее, но затем использование памяти снова резко возросло.
Есть ли способ определить, почему использование памяти так велико?
Это высоко, потому что это экономит усилия. Чтобы освободить память, нужны усилия. И если вы это сделаете, вам просто нужно будет приложить усилия, чтобы использовать его снова. Итак, для экономии усилий современные операционные системы освобождают память только в том случае, если у них нет другого выбора.
Если вы думаете: «Я хочу освободить память сейчас, чтобы я мог использовать ее позже», выбросьте эту мысль из головы. Память не должна быть свободной сейчас, чтобы использовать ее позже. Его можно использовать сейчас и также будет использоваться позже. Так что здесь нет болезненного компромисса. Использование памяти - это чистая победа.
Какой бы ни была ваша проблема, высокое использование памяти - это не так. Это признак нормально функционирующей системы.
Около 190 ГБ вашей памяти используется кешем файловой системы, что обычно не является проблемой.
Посмотрите на cached
поле вверху.
ты также можешь бежать
echo 3 /proc/sys/vm/drop_caches
если вы нервничаете;)