Показати сторінкуСтарі ревізіїПосилання сюдиПовернутися наверх Ця сторінка доступна тільки для перегляду. Ви можете продивитися вихідний текст, але не можете змінювати його. Якщо ви вважаєте, що це не вірно, зверніться до адміністратора. ====== Загальна інфо ====== Керуванням ОЗП займається **ядро Linux** (kernel), а саме його частина - MMU (Memory Management Unit). Програми та процеси не мають доступу до фізичних пристроїв (планок в материнці), саме Ядро надає їм доступ до них. Надає віртуальний адресний простір для кожного процесу. Оперативна памʼять працює завжди на повну. Тут діє умовне правило Linux: **вільна памʼять - марна памʼять. ** === Linux використовує ОЗП так: === - **Used**: памʼять яку реально зайняли програми (браузери, сервіси, веб-сервери). - **Buffers/Cache:** кешування * Ядро бере "вільну" памʼять і завантажує туди дані з диска, до яких часто звертається користувач/служба. * Якщо програмі знадобиться додаткова памʼять, вона миттєво візьметься з **Cache** та віддасть її цій програмі. * Саме тому відбувається ситуація, наприклад: в системі 16ГБ памʼяті, під програми зайнято 4ГБ, а 12ГБ пішло під кеш. Це добре. - **SWAP (розділ підкачки або файл підкачки): ** це місце на диску (hdd/sdd), яке ядро використовує як **продовження оперативної памʼяті.** \\ Навіщо він потрібен? * **Аварійний запас:** Коли RAM закінчується, ядро переміщує туди сторінки пам'яті, які використовуються рідко (анонімні сторінки), звільняючи місце в швидкій RAM для активних процесів. * **Гібернація:** В Debian або в інших системах, якщо ви використовуєте ноутбук, вміст RAM записується в Swap при гібернації. === Параметр vm.swappiness === Це налаштування (від 0 до 100), яке каже ядру, як агресивно використовувати Swap. * У Debian/Ubuntu за замовчуванням: **60**. * Це означає, що ядро почне скидати дані в swap ще до того, як RAM заповниться на 100%, щоб зберегти місце для дискового кешу (файлових операцій). * Для серверів баз даних часто ставлять ''swappiness = 1'' або ''10'', щоб максимально використовувати швидку RAM і не чіпати повільний диск.** Це ВАЖЛИВО!** === Що відбувається коли оперативна памʼять в 100%? === Це критична ситуація, яка може привести до повної зупинки системи. * **Thrashing (Пробуксовка):** Спочатку система починає "гальмувати". Ядро панічно намагається звільнити пам'ять: скидає кеші, вивантажує дані в Swap, завантажує назад. Диск працює на 100%, процесор чекає даних (iowait). Система може перестати реагувати на клавіатуру та SSH. * **Прихід OOM Killer:** Коли фізична пам'ять забита і Swap теж забитий (або відсутній), ядро розуміє, що далі працювати неможливо. Тоді воно викликає механізм **Out of Memory Killer (OOM Killer)**. == OOM Killer ( Out-Of-Memory Killer): == Це функція ядра, яка виконує роль "кіллера" процесів щоб підняти систему. Має спеціальну систему підрахунку пріоритетності або підрахунку балів (**OOM Score**). Тобто він не "вбиває" будь який процес, а спочатку підраховує **OOM Score ** для кожного процесу. * Критичний: той хто займає більше памʼяті * Імунітет: системні процеси (sshd, init). * Є шанс: у тих хто працює довго, навідмінну від тих, хто запустився нещодавно і "зʼїв" усю памʼять. Ви можете побачити цей рахунок у файлі: ''/proc/<PID>/oom_score''. У логах (''/var/log/syslog'' або ''dmesg'') це виглядає так: ''Out of memory: Kill process 1234 (mysqld) score 950 or sacrifice child'' CKG Edit linux/system/ram/info.txt Востаннє змінено: 16/05/2026 11:50повз osvex