Что «кэшируется» в верхней команде?

46

При запуске topя получаю:

top - 09:10:52 up 18:37,  1 user,  load average: 1.56, 1.33, 1.15
Tasks:  39 total,   1 running,  38 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.6%sy,  1.0%ni, 92.5%id,  5.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4194304k total,  3045460k used,  1148844k free,        0k buffers
Swap:        0k total,        0k used,        0k free,  2256128k cached

Смотрите часть: 2256128k кешируется? Что именно это значит?

Я сравниваю два VPS от двух провайдеров, этот всегда имеет большой объем (70% используемой памяти), а другой провайдер VPS всегда показывает 0.

KKK
источник

Ответы:

15

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

На самом деле это не относится к SWAP, несмотря на то, что находится в строке «Swap:».

Чтобы проверить мой ответ с небольшим экспериментом, попробуйте следующее:

Запустите top и запишите значение 'cached'. Теперь беги

dd if=/dev/zero of=~/trick bs=1M count=128

если вы снова запустите top, вы заметите, что кеширование выросло на 128M

Теперь удалите файл

rm ~/trick

Запустите top снова, и вы увидите, что «кэшированный» упал на 128M

Итак, для Mem:

total = used + free а также

used = <all apps> + buffers + cached

(где буферы - это в основном метаданные для кеширования). Немного смущает пользовательский интерфейс.

rogerdpack
источник
и я могу как-то повлиять на это, например ограничить или полностью отключить?
KKK
2
Почему ты хочешь это сделать ?! что ты будешь делать ?! о том, как файловая система кешируется в фискальной памяти.
Потому что большая часть файловой системы - это БД, БД имеет свой собственный кеш, поэтому я предполагаю, что было бы хорошо как-то ограничить эту часть.
KKK
Вы можете сделать это с помощью поиска, но я не советую вам. Это ограничит производительность th FS
117

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

Это считается хорошим; скажем, у вас 4 ГБ ОЗУ, а ваши программы используют только 1 ГБ. Остальные 3 ГБ будут потрачены впустую. Несмотря на то, что вы чувствуете себя хорошо, зная, что используете только 25% своей памяти, аналогичным образом остается то, что остальные 75% не используются. Таким образом, ядро ​​использует это для кэширования файлов, что значительно повышает производительность. Это автоматически; в отличие от старых операционных систем, вам не нужно решать, сколько выделять кешу на диске, или настраивать его вручную.

«Дисковый кеш Linux очень ненавязчив. Он использует запасную память для значительного увеличения скорости доступа к диску и не отнимает память у приложений. Полностью используемый накопитель памяти в Linux - эффективное использование оборудования, а не предупреждающий знак».

Это настолько распространенный вопрос, что этому посвящен целый сайт:

http://www.linuxatemyram.com

На сайте даже есть способ очистить кеш диска, чтобы вы могли запустить некоторые приложения и посмотреть, насколько быстрее они работают с включенным кешем :)

roadmr
источник
4
Мне нравится ответ, но из-за отсутствия репутации я не могу его обновить (пока). Сожалею.
KKK
4
Не волнуйся, я просто рад помочь. Надеюсь, что информация полезна!
roadmr
ЭТО должен быть принятый ответ. Ну что ж . , , :(
ankush981
определенно должен быть принятый ответ. linuxatemyram - отличная информация!
rafaelbattesti