Яка різниця між звітом про використання пам’яті в System Monitor та звітом безкоштовно?


14

Я використовую System Monitor 2.28.0. Переглядаючи вкладку "Ресурси", я бачу гарний графік з пам'яттю та свопом. Пам'ять становить близько 60% 2,3 Гб 3,8. Коли я набираю команду безкоштовно, я отримав:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

кішка / прок / пам’ятка | греп MemFree дай

MemFree:           34536 kB

Ситуація залишається рятівною протягом декількох хвилин. Я почав багато процесів зі сценарієм, і сценарій чекає, коли вільна пам'ять опуститься. Відповідно до того, що я бачу на вкладці «Процес» (або вгорі), число в «Моніторі системи» здається значно закритим до загальної пам’яті процесу, про яку повідомив безкоштовно.

Спасибі

Відповіді:


15

Різниця полягає в тому, включені чи ні "буфери" та "кешована" пам'ять до числа "використаних".

Як правило, системна пам'ять Linux використовується ядром для двох цілей: процесів і файлових / мережевих кешів / буферів. Якщо уважно придивитись до результатів free, то це вже показано:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

Якщо ви додасте "буфери" та "кеш", а потім віднімете це з стовпця "використано", ви отримаєте другий рядок під "використано" (рядок, що починається з -/+ buffers/cache), що показує про 2.3G (2384512) у використання, яке відповідає згаданій пам’яті, що використовується, про яку повідомляє System Monitor (вона ігнорує буфери / кешовані програми, оскільки вони відійдуть, щоб звільнити місце для більшої кількості процесів).

Ваша відповідність /proc/meminfoдійсно відповідає "вільному" стовпцю першого рядка (32512 досить близько до 34536 - це, ймовірно, змінилося між двома командними виходами).


Дякую, мені цікаво, чому системі потрібно 1,5 Gig у кеші, але це дає зрозуміти.
Гійом Коте

1
Це менше питання "потреби", ніж "використаного". На той момент він прочитав принаймні стільки з жорсткого диска, і зберігав його в запасній пам’яті на випадок, якщо потрібно буде знову використовувати його.
Кіс Кук

0

Коли я потрапив на системний монітор, про використання пам'яті на вкладці "Ресурси" було таким же, як у freeстовпці в /usr/bin/free.

Проблема полягає в тому, що вільна фізична пам'ять становить майже 0, скоро чи пізніше: Linux кешує агресивно, тому гроші, які ви витратили на придбання оперативної пам'яті, використовуються ефективно. А це означало, що графік постійно показуватиме> 98% використання пам'яті, що було марним.

Тож я / ми вирішили зробити так само, як і -/+ buffers/cache:рядок /usr/bin/free. Таким чином, графік є повноцінним і дозволяє користувачеві дивитись на використання ~ пам'яті ~ application / userland замість фізичного стану пам'яті.

Я знаю, це трохи вводить в оману, тому що більшість (л) користувачів не розуміють, що вільна фізична пам'ять - це витрата грошей і продуктивності. Я зіткнувся з тією ж проблемою на роботі: кожного понеділка сервери перезавантажуватимуться, а в наступні 24 години кожен сервер запускатиме сповіщення про "повну пам'ять". Тож у мене було встановлено вільне обчислення пам’яті, зафіксоване у програмному забезпеченні для нагляду, як у системному моніторі.

У поточної Solaris є та сама проблема: кеш ZFS (ARC) не входить у вільну пам'ять, про яку повідомляють такі інструменти, як vmstatце робить дурні адміністратори БД скаржиться, що "ZFS поганий" :)

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