Що таке "кешування" у верхній команді?


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.

Відповіді:


15

Це число перед кешуванням - це кількість фізичної пам'яті, яка використовується буферами кешу для ваших файлових систем.

Насправді це не пов’язано з SWAP, незважаючи на те, що він знаходиться на лінії "Swap:".

Щоб підтвердити свою відповідь за допомогою невеликого експерименту, спробуйте наступне:

Запустіть верхню частину і відзначте значення "кешування". Тепер біжи

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

якщо ви знову почнете зверху, ви помітите, що "кешований" виріс на 128М

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

rm ~/trick

Знову запустіть верх, і ви побачите, що "кешування" впало на 128 мільйонів

Отже, для Mem:

total = used + free і

used = <all apps> + buffers + cached

(де буфери - це в основному метадані для кешованих). Трохи заплутаний інтерфейс користувача.


і я можу вплинути на це будь-яким чином, наприклад обмежити його або повністю відключити?
KKK

2
Чому ти хочеш це робити ?! що ти будеш робити ?! її про те, як кешувати файлову систему у фіскальній пам'яті.

Тому що більша частина файлової системи - це БД, у БД є власний кеш, тому я припускаю, що було б добре якось обмежити цю частину.
KKK

Ви можете зробити це за допомогою певного пошуку, але я вам не раджу. Це обмежить продуктивність роботи FS

117

ядро Linux буде використовувати доступну пам'ять для кешування дисків, якщо цього не вимагає запущена програма.

Це вважається хорошим; скажімо, у вас є 4 Гб оперативної пам’яті, а ваші програми використовують лише 1 ГБ. Інші 3 ГБ збираються витрачати. Незважаючи на враження, що ви відчуваєте, що ви знаєте, що використовуєте лише 25% своєї пам'яті, аналогічно, що інші 75% залишаються невикористаними. Отже, ядро ​​використовує це для кешування файлів, що значно покращує продуктивність. Це автоматично; На відміну від старих операційних систем вам не потрібно вирішувати, скільки присвятити кеш-дискам, або вручну налаштовувати його.

"Кеш диска Linux дуже ненав'язливий. Він використовує запасну пам'ять, щоб значно збільшити швидкість доступу до диска і не відбирати жодної пам'яті від додатків. Повністю використаний магазин оперативної пам’яті в Linux - це ефективне використання обладнання, а не попереджувальний знак".

Це настільки поширене питання, що тут присвячений цілий веб-сайт:

http://www.linuxatemyram.com

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


4
Люблю відповідь, але через відсутність репутації я не можу її покращити (поки що). Вибачте.
KKK

4
Не хвилюйтесь, я просто радий допомогти. Сподіваюся, інформація корисна!
roadmr

ЦЕ має бути прийнятою відповіддю. Ну добре . . . :(
ankush981

безумовно, має бути прийнята відповідь. linuxatemyram - це чудова інформація!
rafaelbattesti
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.