- Linux використовує фізичну пам'ять як кеш та буфери, тому невелика кількість "вільної" оперативної пам'яті не обов'язково означає наявність проблеми.
- Поєднання оперативної пам'яті, підкачки, віртуальної пам'яті та кешу сторінок дозволяє ізолювати процеси та підтримувати продуктивність за різних навантажень.
- Такі інструменти, як free, htop, vmstat, pmap та cgroupv2, спрощують діагностику та обмеження використання пам'яті процесами та службами.
- Такі методи, як zram, zswap, EarlyOOM або systemd-oomd, покращують реакцію системи на навантаження на пам'ять і запобігають збоям.

Під час роботи із серверами або настільними комп’ютерами на базі Linux, управління пам'яттю Це один зі стовпів Ці фактори відрізняють швидку систему від повільної. Незалежно від того, чи це Debian, Ubuntu, AlmaLinux, CentOS чи будь-який інший дистрибутив, розуміння того, як Linux обробляє оперативну пам'ять, підкачку та інші внутрішні механізми, є ключем до уникнення збоїв, втрати продуктивності або проблем зі стабільністю.
Крім того, у сучасних середовищах, де працюють вимогливі бази даних, контейнери, повноцінні робочі столи та важкі програми, просто «наявності великої кількості оперативної пам’яті» недостатньо: важливо знати Як Linux використовує пам'ять, що насправді означають індикатори що ми бачимо в такі інструменти, як top, htop, free o vmstatА які у нас є опції для точного налаштування поведінки ядра, swap, контрольних груп або механізмів, таких як zram, zswap, EarlyOOM або systemd-oomd?
Основи пам'яті в Linux
Linux розроблений для максимального використання доступної пам'яті, тому оперативна пам'ять майже ніколи не виглядає "порожньою", оскільки ядро використовує її як кеш диска, буфери та тимчасове сховище щоб пришвидшити доступ до даних і програм. Це призводить до багатьох непорозумінь: невелика кількість «вільної» пам’яті не є синонімом проблеми, а радше ефективності роботи системи.
Загальний обсяг пам'яті, яким може керувати комп'ютер, залежить від архітектура операційної системи32-бітна система зазвичай обмежена приблизно 4 ГБ адресованої пам'яті, тоді як 64-бітна система може легко обробляти десятки або сотні гігабайт. Теоретично, 64-бітна архітектура дозволяє величезні цифри (порядку екзабайт), хоча на практиці фактичне обмеження накладається на використовуване обладнання та ядро.
Linux поєднує сегментація та пагінація для організації пам'яті. Пам'ять поділяється на сторінки фіксованого розміру (зазвичай 4 КіБ), до яких можна звертатися за допомогою getconf PAGESIZE), а ядро керує внутрішніми структурами, які називаються таблицями сторінок, щоб перетворювати віртуальні адреси на фізичні, застосовувати дозволи та контролювати стан кожної сторінки.
Фізична пам'ять, тобто Оперативна пам'ять, встановлена в комп'ютеріЦе дорогий, але надзвичайно швидкий ресурс. Linux використовує його для запуску процесів, кешування даних, спільної пам'яті, буферів вводу/виводу та внутрішніх структур ядра. Коли процеси не заповнюють всю оперативну пам'ять, система заповнює пробіл кешем диска, щоб пришвидшити доступ до повільніших файлів та пристроїв зберігання даних.
Оскільки оперативна пам'ять обмежена, Linux використовує віртуальну пам'ять та механізми підкачки для логічно розширити доступний простірщо дозволяє процесам бачити великий, безперервний адресний простір, навіть якщо сторінки повторно використовуються та переміщуються між оперативною пам'яттю та вторинною пам'яттю під ними.
Віртуальна пам'ять, фізична пам'ять, підкачка та диск
У Linux термін «віртуальна пам'ять» часто використовується для позначення простору пам'яті, видимого для кожного процесу. Кожна програма бачить приватний, ізольований та захищений адресний простірЦе завдяки поєднанню MMU процесора та таблиць сторінок ядра. Цей простір набагато більший за доступну оперативну пам'ять і залежить як від фізичної пам'яті, так і від файлів підкачки та відображених файлів.
Фізична пам'ять (ОЗП) – це місце, де фактично знаходяться сторінки, які активно використовуються. Вкрай важливо мати достатньо оперативної пам'яті для звичайних робочих навантаженьНаприклад, сервер із базами даних, такими як MongoDB, потребує фізичної пам'яті, яка перевищує обсяг, необхідний для механізму баз даних та інших служб, оскільки якщо MongoDB змушений інтенсивно використовувати swap, продуктивність різко падає: доступ до оперативної пам'яті вимірюється в наносекундах, тоді як swap на диску виконується в мілісекундах.
Пам'ять підкачки діє як повільніше розширення оперативної пам'ятіКоли фізична пам'ять переповнюється, Linux може переміщувати рідко використовувані сторінки в простір підкачки, який може бути виділеним розділом або файлом у файловій системі. Обидва підходи є правильними; вибір залежить від політики адміністрування, зручності керування та вимог до режиму глибокого сну.
Важливо розвіяти таємниці щодо простору підкачки: це не лиходій. Він сам по собі не є синонімом повільної системи, а також не є ресурсом, який слід використовувати лише тоді, коли все інше дає збій. Правильно налаштований простір підкачки дозволяє... звільнення оперативної пам'яті від неактивних анонімних сторінок (наприклад, частини пам'яті процесів, які давно не використовувалися), залишаючи місце для нових робочих навантажень, яким потрібна швидкість.
Окрім оперативної пам'яті та підкачки, також використовуються пристрої зберігання даних. Дискова пам'ять зберігає постійні дані, які витримують перезавантаження та відключення живленняКоли комп'ютер увімкнено, значна частина цих даних кешується в оперативній пам'яті (кеш сторінок), і ядро вирішує, які сторінки зберігати, а які видаляти, на основі евристики останнього використання, з метою мінімізації дороговартісного доступу до диска.
Як відбувається використання пам'яті в Linux
Типовий потік даних у системі Linux проходить через кілька компонентів: користувач або програми генерують запити, які система перетворює на доступ до пам'яті та дискаДані, зчитані зі сховища, спочатку завантажуються в оперативну пам'ять, де вони можуть залишатися в кеші сторінок. При повторному запиті ядро перевіряє, чи вони вже кешовані, таким чином уникаючи нового звернення до диска.
Центральний процесор (CPU) та блок керування пам'яттю (MMU) також беруть участь у цьому процесі. Центральний процесор працює з віртуальними адресами, і за допомогою таблиць сторінок апаратне забезпечення перетворює кожен доступ до фізичної адреси в оперативній пам'яті або вирішує його за допомогою механізмів відмови сторінки, якщо адреса не завантажена. Якщо дані потрібно зберегти, вони записуються на диск, але під час роботи з ними пріоритет надається їх збереженню у таблиці віртуальних адрес. Швидка пам'ять для покращеної продуктивності.
Коли оперативної пам'яті починає не вистачати, ядро вступає в гру зі своїми алгоритмами відновлення пам'яті: воно звільняє менш використовуваний кеш сторінок, стискає області пам'яті, вдається до підкачки сторінок з нижчим пріоритетом і, якщо ситуація стає критичною, може вжити більш радикальних заходів, таких як активація OOM-killer.
Карта пам'яті процесу в Linux
Кожен процес, що працює в Linux, має карта пам'яті або макет пам'яті який визначає, як організовано його адресний простір: де розташовані виконуваний код, глобальні змінні, купа, стек, аргументи командного рядка, змінні середовища та зіставлення спільних файлів або бібліотек.
Ця карта зазвичай поділена на кілька окремих сегментів. Внизу віртуального простору ми знаходимо сегмент тексту (двійковий код програми), потім ініціалізовані та неініціалізовані сегменти даних (BSS), над ними купа, де зберігаються динамічні розподіли, а зверху стек процесів. Аргументи та середовище також розташовані у верхній частині адресного простору.
Текстовий сегмент містить виконувані інструкції програми та спільні бібліотекиЗазвичай він доступний лише для читання та може використовуватися кількома процесами, що виконують один і той самий двійковий файл, що економить фізичну пам'ять. Будь-яка спроба запису в цю область призводить до помилки сегментації.
Ініціалізований сегмент даних зберігає глобальні та статичні змінні, які мають ненульове значення на початку. Цей сегмент можна концептуально розділити на частину лише для читання та частину для читання та запису, залежно від типу даних. Сегмент BSS, з іншого боку, групує глобальні або статичні змінні, які не мають явного значення в коді або які ініціалізовані нулем.
Купа — це область, яка використовується для динамічна пам'ять, якою керують такі виклики, як malloc, calloc або reallocКоли програма запитує пам'ять, менеджер пам'яті користувача бере її з купи; коли він звільняє її за допомогою `free`, вона повертається до купи, але не обов'язково до операційної системи, що може призвести до внутрішньої фрагментації. Стек зарезервовано для локальних змінних функцій, адрес повернення та параметрів і збільшується або зменшується з кожним викликом функції та поверненням.
Якщо ми хочемо перевірити карту пам'яті запущеного процесу, такі інструменти, як pmap Вони дуже корисні. З pmap <PID> Ми можемо бачити різні відображені регіони, їхній розмір, дозволи, чи є вони анонімними, чи пов'язані з файлами, а також розмір резидентної пам'яті (RSS) в оперативній пам'яті та інші показники, які допомагають зрозуміти фактичне споживання пам'яті програмою.
Ключові поняття: сторінки, помилки сторінок та кеш
Найменшою одиницею керування пам'яттю в Linux є сторінка пам'ятіЗазвичай 4 КіБ, хоча для певних робочих навантажень існують величезні сторінки. Усі рішення ядра щодо того, що переміщувати, звільняти або кешувати, приймаються на рівні сторінки, а не на рівні окремого байта.
Таблиці сторінок – це ієрархічні структури, що підтримуються ядром і вказують, як віртуальні адреси перетворюються на фізичні адреси. Кожен запис може містити інформацію про дозволи на читання, запис та виконання, стан сторінки (наявна в пам'яті, у swap, брудна, спільна тощо) та інші метадані, які MMU використовує під час трансляції.
Помилка сторінки виникає, коли процес звертається до дійсної віртуальної адреси, але відповідна сторінка не готова до використання: можливо, вона ще не була виділена, може бути на диску або потребувати початкового відображення. Ядро втручається, щоб знайти або створити цю сторінкуЯкщо сторінка знаходиться в оперативній пам'яті, але не була правильно позначена, вартість збою невелика; якщо її потрібно отримати з диска (підкачки або файлу), вартість набагато вища.
Кеш сторінок, або кеш файлових сторінок, є одним із головних секретів гарної продуктивності Linux. Ядро зберігає його в оперативній пам'яті. дані та метадані файлів Щоб пришвидшити читання та запис, значно зменшуючи кількість звернень до диска. Тому, навіть якщо може здаватися, що вільної пам'яті мало, більша частина цієї оперативної пам'яті насправді доступна: ядро може швидко звільнити кеш, якщо програмам потрібно більше місця.
У віртуальному просторі ми також розрізняємо файлову пам'ять, пов'язану з відображеними файлами (наприклад, код бінарних файлів та бібліотек або файли, явно відображені з mmap), та анонімна пам'ять, яка відповідає купі, стеку та іншим відображенням без резервних копій файлів. Останню можна замінити лише за необхідності, оскільки немає файлу, з якого його можна було б відновити.
Тиск на пам'ять, трешинг та OOM
Коли кількість вільних сторінок падає нижче певних порогових значень, кажуть, що система переходить у стан тиск пам'ятіУ такому випадку ядру доводиться витрачати більше часу на пошук сторінок, які можна звільнити, стиснути або перемістити до свопінгу, і це впливає на загальну продуктивність.
На веб-серверах високе навантаження на пам'ять може призвести до збільшена латентністьРобочі процеси повинні чекати на звільнення сторінок, перш ніж продовжувати обробку запитів, а процесор витрачає цикли на завдання керування пам'яттю замість обробки корисних навантажень. На настільних комп'ютерах це сприймається як заїкання, повільна реакція миші, зависання вікон і навіть короткочасні зависання.
У віддаленому доступі через SSH, RDP або VNC ця ситуація проявляється у вигляді "зависання" команд, затримок під час набору тексту та, загалом, більш громіздкої взаємодії. Якщо також широко використовується swap, це може призвести до... стан обмолотуде система витрачає більше часу на переміщення сторінок між оперативною пам'яттю та сховищем, ніж на виконання корисного коду.
Затримка відбувається, коли оперативної пам'яті недостатньо для підтримки активного робочого набору процесів. Якщо підкачка ввімкнена, анонімні сторінки постійно переміщуються між оперативною пам'яттю та простором підкачки, запускаючи операції вводу/виводу на диск. Без підкачки ядру нікуди скидати ці анонімні сторінки, і єдиним рішенням є завершення процесів за допомогою OOM-killer.
Навіть без підкачки може відбуватися перевантаження файлової пам'яті: сторінки, що належать до кешу файлів, викидаються та постійно перезавантажуються з диска з тією швидкістю, з якою вони потрібні програмам, що створює цикл вводу/виводу та надзвичайну повільність.
Коли ядро вичерпує всі свої можливості для отримання пам'яті — звільнення кешу, переміщення сторінок до swap, стиснення та застосування політик cgroups — воно переходить у стан Недостатньо пам'яті (OOM)У цей момент OOM-кілер повинен вибрати один або кілька процесів для завершення, щоб повернути пам'ять і зберегти решту системи.
Щоб вибрати, який процес завершити, ядро обчислює oom_score для кожного PID, на основі таких факторів, як обсяг використаної пам'яті, важливість процесу та інші внутрішні параметри. Цю поведінку можна змінити за допомогою oom_score_adjякий коригує вагу певного процесу. Такі інструменти, як choom Вони дозволяють легко переглядати та змінювати ці значення.
Обмін: міфи, найкращі практики та сучасні варіації
Swap має дещо несправедливо погану репутацію. Багато користувачів вважають, що його слід уникати будь-якою ціною, або що він має сенс лише за дуже обмеженого обсягу оперативної пам'яті. Однак у Linux swap є частиною... глобальна стратегія віртуальної пам'яті: дозволяє ядру переміщувати неактивні анонімні сторінки з оперативної пам'яті, щоб надати пріоритет активним даним та кешу сторінок.
Неправильно вважати swap «крайнім засобом», який слід використовувати лише тоді, коли щось інше йде не так. Фактично, навіть у системах з великою кількістю оперативної пам'яті, наявність swap дає ядру більше вільного простору для підтримки гнучкості основного робочого набору та кращого використання фізичної пам'яті. Однак, правда, що коли активність swap дуже висока та стійка, продуктивність помітно страждає.
На практиці старе правило, що обсяг пам'яті підкачки має бути в 1-2 рази більшим за обсяг оперативної пам'яті, більше не є незмінним. На серверах з великим обсягом пам'яті частіше виділяють набагато менший обсяг пам'яті підкачки пропорційно або навіть використовують... стиснутий свопінг в оперативній пам'яті за допомогою таких технологій, як zram або zswap, для покращення продуктивності та зменшення кількості записів на диск.
Додатковим варіантом використання swap є гібернація: система може скинути вміст оперативної пам'яті в простір swap та повністю вимкнутися, а потім відновити свій стан після запуску. Це вимагає, щоб доступний простір swap був принаймні таким же великим, як і обсяг пам'яті, який потрібно зекономити, і це фактор, який впливає на вибір між такими рішеннями, як zram (який не дозволяє переходити в сплячий режим) та традиційним дисковим swap.
В останні роки також повідомлялося про сумнівну поведінку OOM-killer у деяких ядрах, де система аварійно завершує роботу до того, як OOM-killer набуде чинності. У певних випадках увімкнення таких комбінацій клавіш, як Alt+SysRq+F (після ввімкнення параметра) /proc/sys/kernel/sysrqЦе дозволяє змусити OOM-вбивцю відновити систему, яка виглядає завислою. Крім того, такі демони, як EarlyOOM, nohang та systemd-oomd, з'явилися саме для того, щоб реагувати до того, як ядро досягне екстремальних ситуацій.
Інструменти для моніторингу та управління пам'яттю
Щоб уникнути проблем із пам’яттю, важливо використовувати правильні інструменти. Такі команди, як free, top, htop, vmstat, ps o sar запропонувати дуже детальний рентгенівський знімок стану системи, як у режимі реального часу, так і з плином часу.
Команда free Він швидко відображає загальний обсяг пам'яті, використаної пам'яті, вільної пам'яті, кеш-пам'яті та буферів, а також інформацію про підкачку. Це дуже корисно для перевірки, чи дійсно бракує фізичної пам'яті, чи більша її частина просто кешована і може бути використана повторно без проблем.
Класичний top та його покращений варіант htop Вони дозволяють бачити споживання процесора та пам'яті кожним процесом, а також завантаження системи, час безвідмовної роботи, використання свопу та інші показники в режимі реального часу. htop пропонує більш зручний інтерфейс., з кольоровими смугами та комбінаціями клавіш для швидкого сортування, фільтрації або завершення процесів.
Команда vmstat Він надає більш технічний огляд: статистика пам'яті, процеси, підкачка, переривання та планування процесора. Він ідеально підходить для виявлення надмірних помилок сторінок, високої активності підкачки або шаблону переривання. Тим часом, ps Це дозволяє вам переглядати детальний список процесів, включаючи стовпці для резидентної пам'яті (RSS), віртуальної пам'яті (VSZ) та інших параметрів, які допомагають знаходити програми, що «спрацювали».
У середовищах Debian або AlmaLinux, такі пакети, як sysstat Вони пропонують додаткові команди, такі як sar, що може запис використання пам'яті з плином часуЦе дозволяє співвідносити піки споживання із запланованими завданнями, розгортаннями або певними подіями та відповідно налаштовувати конфігурацію системи.
Щоб перевірити карту пам'яті певного процесу, на додаток до pmapЗавжди гарною ідеєю буде дослідити псевдофайлову систему /procде кожен процес має свій власний каталог з детальною інформацією, включаючи карту пам'яті в /proc/<PID>/maps і статистика в /proc/<PID>/smaps.
Базова оптимізація: свопінг, кеш та підміна
Окрім теорії, існує кілька простих практичних дій, які точне налаштування управління пам'яттю в Linux без божевілля. Одне з перших, що потрібно зробити, це перевірити стан обміну за допомогою swapon --show І, за потреби, створіть файл підкачки замість того, щоб покладатися виключно на розділ. Це забезпечує гнучкість у налаштуванні розміру без необхідності перерозподілу дисків.
Параметр vm.swappiness Це визначає, наскільки агресивно ядро використовує swap порівняно з звільненням кешу. Високе значення змушує swap використовуватися частіше; низьке значення резервує swap для більш екстремальних випадків, надаючи пріоритет збереженню даних в оперативній пам'яті. Такі налаштування, як обмінність=10 Вони, як правило, добре працюють у багатьох середовищах настільних комп'ютерів та легких серверів, і їх можна тимчасово застосовувати з оптимізація ядра за допомогою sysctl або наполегливо в /etc/sysctl.conf.
У дуже специфічних ситуаціях, коли нам потрібно очистити кеш вручну, наприклад, після інтенсивного читання, яке вже завершилося, ми можемо вдатися до налаштування vm.drop_cachesПоєднання sync А записуючи відповідне значення (1, 2 або 3) до цього параметра, ядро відкидає певні кеші. Однак, найкраще використовувати його розумно, оскільки Кеш не є "витраченою пам'яттю"але суттєва оптимізація.
У таких дистрибутивах, як Debian та AlmaLinux, ці налаштування зазвичай доповнюються належним моніторингом ресурсомістких процесів за допомогою htop o psВиявлення служб або програм, які «з’їдають» пам’ять, та, за необхідності, їх переналаштування або обмеження споживання.
Створення та налаштування області підкачки – це відносно проста операція: просто зарезервуйте файл за допомогою fallocateпризначте йому правильні дозволи, ініціалізуйте його як swap with mkswap та активуйте його за допомогою swaponЩоб зміни були постійними, додається відповідний запис /etc/fstab що вказує на те, що цей файл буде використовуватися як своп під час кожного завантаження.
Розширені методи: zram, zswap, cgroupv2 та OOM у просторі користувача
Коли ми хочемо піти далі в оптимізації, в дію вступають такі просунуті механізми, як zram, zswap y простори імен та контрольні групиОкрім демонів, таких як EarlyOOM, nohang або systemd-oomd, розроблених для максимального використання пам'яті та покращення реакції системи під навантаженням.
zram використовує модуль ядра для створення стиснутих блокових пристроїв у самій оперативній пам'яті. Простір підкачки можна монтувати поверх цих пристроїв, тому сторінки стискаються перед збереженням. Це означає, що на практиці, максимально використати доступну пам'ять ціною деяких ресурсів процесора для стиснення та усуває необхідність запису на диск, хоча й жертвує можливістю переходу в сплячий режим.
zswap, зі свого боку, діє як стиснутий кеш відносно фактичного простору підкачки на диску. Сторінки, які потрібно підмінити, спочатку зберігаються стиснутими в оперативній пам'яті, і лише коли цей кеш заповнений або прийнято рішення про їх видалення, вони записуються в традиційний простір підкачки. Це зменшує обсяг дискового вводу-виводу, подовжує термін служби SSD-накопичувачів та Покращує продуктивність у ситуаціях помірного використання свопу..
В області контролю ресурсів cgroupv2 пропонує потужний механізм для організації процесів в ієрархії та виділення їм пам'яті, процесора та інших ресурсів. Це досягається за допомогою таких параметрів, як memory.low або файли типу memory.pressureВи можете вказати ядру, які групи мають пріоритет, і відстежувати час, який завдання проводять заблокованими через брак пам'яті, розрізняючи, чи проблема впливає на деякі завдання чи на всю групу.
У сценаріях, коли зависання системи необхідно уникати будь-якою ціною, з'явилося кілька демонів простору користувача для більш проактивного управління ситуаціями OOM. EarlyOOM періодично контролює оперативну пам'ять та підкачку, і коли виявляє, що обидва рівні падають нижче певних порогів (За замовчуванням менше 10% безкоштовного почати діяти), надсилає сигнали процесам з більшою oom_score щоб звільнити пам'ять, перш ніж ядро почне панікувати.
nohang пропонує подібний, але більш налаштовуваний підхід, підтримуючи zram, аналізуючи навантаження на пам'ять та дозволяючи користувачам визначати власні дії у разі виявлення ризику збою. Хоча проект втратив певну активність порівняно з іншими, він залишається привабливим варіантом для досвідчених користувачів, які хочуть точний контроль над тим, які процеси і коли припиняються.
Нарешті, systemd-oomd, спочатку розроблений Facebook і тепер інтегрований у багато дистрибутивів із сучасним systemd, пропонує рішення, призначене як для масштабних розгортань, так і для робочих середовищ. Він відстежує обмеження контрольних груп, навантаження на пам'ять та інші показники, а також вирішує, які блоки або служби зупинити для відновлення працездатності системи, функціонуючи як більш складне доповнення до класичного OOM-killer ядра.
Корисні поради щодо уникнення проблем з пам'яттю
У повсякденній практиці, окрім налаштування певних параметрів, доцільно дотримуватися низки гарні практики для мінімізації страхів пов'язано з пам'яттю в Linux. Перше — це правильне визначення розміру оперативної пам'яті та області підкачки на основі фактичного навантаження: бази даних, сервери додатків, потужні робочі столи або завантаження кількох контейнерів потребують більше пам'яті, ніж прості служби.
На серверах рекомендується регулярно перевіряти, які служби активні та вимикати або зупиняти ті, що не використовуютьсяУ середовищах з Docker або іншими контейнерами, після завершення тестів або тимчасових розгортань, рекомендується очистити контейнери, образи та томи, які більше не потрібні, щоб запобігти непомітному споживанню пам'яті залишковими процесами.
RAM-диски можуть бути корисним інструментом для пришвидшення виконання певних типів тимчасових завдань: файлова система визначена в оперативній пам'яті та використовується для кешування даних програм або робочих областей з високою оборотністю. Оскільки вони є енергозалежними, важливо розуміти, що їхній вміст втрачається після вимкнення або перезавантаження, але натомість їх можна... у десятки разів швидше, ніж SSD, щось дуже цікаве для інтенсивного читання та тимчасових письмових завдань.
З точки зору безпеки важливо контролювати відкриті порти та розкривати лише ті, що є вкрай необхідними. Атаки шкідливого програмного забезпечення, такі як криптомайнери, часто залишають сліди у вигляді процесів, які споживають величезні обсяги процесора та пам'яті, і можуть встановлювати завдання на crontab Зберегти. Перевірка та очищення підозрілих завдань cron, а також закриття необов'язкових портів допомагає запобігти використанню пам'яті небажаними процесами.
Зрештою, не можна забувати про вплив файлової системи на загальну продуктивність. Сучасні опції, такі як XFS або Btrfs Вони можуть пропонувати переваги над ext4 у певних сценаріях, особливо за великих навантажень або під час використання розширених функцій. Кожен випадок вимагає тестування, але вибір файлової системи також впливає на те, як керуються метадані та доступ до диска, опосередковано впливаючи на сприйняту продуктивність системи.
Опанування управління пам'яттю в Linux передбачає розуміння того, як розподіляються оперативна пам'ять, підкачка та сховище, ролі таких концепцій, як сторінки, кеш сторінок, навантаження на пам'ять та готовність до використання (OOM), а також того, як використовувати розширені інструменти та механізми, такі як zram, zswap, cgroupv2 та systemd-oomd. З цими знаннями набагато легше налаштувати будь-яку машину — від скромного ноутбука до робочого сервера, завантаженого сервісами — щоб пам'ять перестала бути джерелом проблем і стала союзником у досягненні оптимальної продуктивності. гнучка, стабільна система, готова витримувати пікові навантаження жодної драми.
Зміст
- Основи пам'яті в Linux
- Віртуальна пам'ять, фізична пам'ять, підкачка та диск
- Як відбувається використання пам'яті в Linux
- Карта пам'яті процесу в Linux
- Ключові поняття: сторінки, помилки сторінок та кеш
- Тиск на пам'ять, трешинг та OOM
- Обмін: міфи, найкращі практики та сучасні варіації
- Інструменти для моніторингу та управління пам'яттю
- Базова оптимізація: свопінг, кеш та підміна
- Розширені методи: zram, zswap, cgroupv2 та OOM у просторі користувача
- Корисні поради щодо уникнення проблем з пам'яттю