Що означають різні лічильники пам’яті у FreeBSD?


20

top каже мені:

last pid: 64807;  load averages:  0.99,  0.97,  0.92                                          up 189+04:47:22 09:16:17
45 processes:  1 running, 44 sleeping
CPU:  0.4% user,  0.0% nice,  0.2% system,  6.4% interrupt, 93.0% idle
Mem: 222M Active, 2151M Inact, 2008M Wired, 823M Buf, 3499M Free
Swap: 8192M Total, 8192M Free

Мунін це демонструє трохи чіткіше:

щорічне використання пам'яті rtr1

Як бачите, на сервері є близько 8 ГБ оперативної пам’яті. Мені цікаво, чи зможу я забити цього звіра на більш скромному сервері 2 Гб . Тепер я знаю, що означають активні та буфери, думаю. Але мене справді турбують "провідні" та "неактивні" краплі пам'яті. Наскільки я не знаю, вони не відповідають жодному існуючому процесу.

Зверніть увагу, як зелена "активна" лінія піднялася в грудні: саме тоді ми почали використовувати демон BGP на цьому маршрутизаторі. Я не точно розумію, що сталося в квітні та травні, але я пам’ятаю, що робив оновлення системи і перейшов на pkgng приблизно за той час.

Ось запасний роутер для першого, з меншою кількістю оперативної пам’яті (4 Гб):

rtr0 щорічне використання пам'яті

Здається, ця людина прекрасно живе з половиною оперативної пам’яті і все ще залишає близько 2 Гб вільного, що призводить мене до того, що я можу перейти до коробки 2 Гб для цього сервера, знижуючи витрати та обслуговування…

Будь-які пропозиції? Що означають різні лічильники пам’яті, показані вгорі? Більш конкретно, що робить:

  • Активний
  • Неактивний
  • Кеш
  • Буфери
  • Провідний
  • Безкоштовно

... справді означає? Я знайшов кілька публікацій, що пояснюють, як біти підсистеми VM працюють, і я пам’ятаю, що маю "ах-ах!" Момент розуміння всього цього приблизно 12 років тому, але я забув. :) Навіть вірний посібник FreeBSD не зміг відповісти на моє запитання ...

Чи можу я знизитись до 2 Гб?


Ось Linux-версія цього питання (пояснення freeкоманди від propps ): linux - реальне використання пам'яті
Адам Кац

Відповіді:


25
  • Active: Пам'ять, яку зараз використовує процес
  • Inactive: Пам'ять, яка була звільнена, але все ще зберігається в кеші, оскільки вона може бути використана знову. Якщо потрібно більше Freeпам'яті, ця пам'ять може бути очищена і стати вільною. Ця пам'ять не очищається раніше, ніж вона потрібна, оскільки "вільна пам'ять витрачається на пам'ять", вона не коштує нічого, щоб зберегти старі дані навколо, якщо вони знову потрібні.
  • Wired: Пам'ять, якою користується ядро. Цю пам'ять неможливо замінити
  • Cache: Пам'ять, яка використовується для кешування даних, при необхідності може бути звільнена негайно
  • Buffers: Кеш диска
  • Free: Пам'ять, яка повністю безкоштовна і готова до використання. Inactive, Cacheі Buffersможуть стати безкоштовними, якщо їх очистити.

Отже, ви можете просто додати Inactiveсвій Freeрахунок і вважати його невикористаним. Wired- це пам'ять, яку використовує ядро, що включає стек мереж. Виконання netstat -mдасть вам підсумок використання пам'яті мережевим стеком.

Виходячи з ваших графіків, крім відповідного стрибка wiredпам’яті на початок березня, так, ви повинні мати можливість виконувати це навантаження на 2 ГБ оперативної пам’яті. Якщо так, подумайте про запуск i386 замість amd64, оскільки кожен розподіл пам'яті займе менше місця, оскільки покажчики будуть 32-бітовими замість 64-бітових.


1
"Неактивна" пам'ять "Не можна переділити іншим процесам", тому її не слід вважати "невикористаною". Дивіться wiki.freebsd.org/Memory
humbads

1
Лічильник "Неактивний" був розділений на два окремих пункти в новій FreeBSD. "Неактивний" та "Пральня" (пам'ять, яку все ще потрібно промити, щоб помінятись чи диск, перш ніж її можна звільнити). Додаткове пояснення тут: list.freebsd.org/pipermail/freebsd-arch/2016-November/…
Аллан Джуд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.