1

Я сталкиваюсь с такими же зависаниями, как этот пост: https://askubuntu.com/questions/41778/computer-freezing-on-almost-full-ram-possbly-disk-cache-problem

Подводя итог: похоже на то, что предварительная загрузка / кэширование / подкачка ОЗУ занимает слишком много времени, поэтому я постоянно боюсь, что диск делает безумные показания диска до такой степени, что компьютер зависает и вынуждает меня перезагружаться.


Итак, я углубился в эту проблему и получил эту полезную команду:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

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

Я заметил , что добавление этого к использованию prefetchless RAM соответствует используемой оперативной памяти волчка.

Тем не менее, это не говорит мне, сколько "статической" предварительно загруженной оперативной памяти я использую. И зная это, я дам достаточно времени на разгрузку выгружаемого кэша Linux, чтобы выполнить свою работу, когда я собираюсь достичь общего количества оперативной памяти.

Например: кэш-память была ~ 1000 МБ, а затем выполнила ~ 700 МБ после выполнения команды "echo 3 | sudo tee /proc /sys /vm /drop_caches"; ~ 700 МБ - это "статическая" часть предварительно загруженной оперативной памяти, которую мне нужно знать.

Итак, мой вопрос: как вы получаете "реальную" "статическую" часть использования предварительно загруженной / кэшированной / выгружаемой памяти?


PS:

С другой стороны, есть ли способ вывести только общую оперативную память, используемую каждым процессом - даже корневым - (например, значение mem в htop)?

1 ответ1

2

Вы можете найти оперативную память, используемую каждым процессом для всех пользователей, с помощью следующей команды:

ps -eo pid,command,rss,user

Это дает по порядку идентификатор процесса, команду, используемую память и пользователя процесса.

Если вы хотите, чтобы общий объем оперативной памяти использовался всеми процессами, будет работать следующая команда

free

Если вы хотите, чтобы сумма памяти использовалась каждым процессом, используйте следующий код:

ps -eo rss | awk '{sum+=$1} END {print sum}'

Это даст вам значение, которое представляет собой общий объем памяти, используемой всеми процессами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .