Віртуальна пам’ять – це компонент сучасних операційних систем, у тому числі Linux, який забезпечує безперебійну роботу комп’ютера. Ви можете використовувати файл підкачки, але зазвичай використовується виділений розділ. Вам не потрібно багато думати про це, але розділи підкачування Linux та файли підкачування легко налаштувати та усунути неполадки.Багато з цих порад можна застосувати до інших систем, включаючи Windows, навіть якщо методи налаштування віртуальної пам’яті відрізняються.
Що таке віртуальна пам’ять?
Віртуальна пам’ять — це спосіб представлення пам’яті, абстрагований від фізичної пам’яті на вашому комп’ютері. Він використовує як вашу оперативну пам’ять, так і місце для зберігання, будь то традиційний жорсткий диск або твердотільний накопичувач.
У Linux це робиться на рівні ядра та обладнання. ЦП має апаратну частину, звану блоком управління пам’яттю (MMU), яка перетворює адреси фізичної пам’яті у віртуальні. Ці адреси не залежать від того, де вони знаходяться на машині. Ці адресні простори відомі як «сторінки» і можуть бути в оперативній пам’яті, на жорсткому диску або SSD. ОС бачить ці адреси як один великий пул пам’яті, відомий як адресний простір.
Віртуальна пам’ять використовує те що, що вся пам’ять, використовувана теоретично, використовується постійно. Програми в пам’яті розбиваються на сторінки, а ті частини, які ядро вважає за непотрібні, «вивантажуються» або переміщаються на жорсткий диск. Коли вони потрібні, їх можна поміняти місцями або повернути назад в оперативну пам’ять.
Простір, що використовується для віртуальної пам’яті на диску, відомий як “резервне сховище” або “простір підкачування”. У світі Windows це зазвичай реалізується як файл, відомого як «файл підкачки». Це також можливо в Linux, але набагато частіше використовується виділений розділ диска.
Файли підкачки в Linux зазвичай зарезервовані для мінімальних або вбудованих систем, і останні часто працюють без віртуальної пам’яті, тому що вбудовані ОС мають бути невеликими.
Результат віртуальної пам’яті полягає в тому, що можна запускати великі програми, використовуючи більше пам’яті, ніж фізична оперативна пам’ять на вашому комп’ютері, подібно до того, як кредитна карта дозволяє здійснювати великі покупки на суму, що перевищує суму на вашому банківському рахунку. Як і кредитна картка, віртуальна пам’ять корисна, коли вона вам потрібна, але ви не хочете надмірно використовувати її.
Віртуальна пам’ять також дозволяє розробникам створювати програми, не знаючи, як організовано пам’ять комп’ютера.
Основним історичним недоліком віртуальної пам’яті було те, що жорсткі диски працювали повільніше, ніж оперативна пам’ять. Якщо на машині недостатньо оперативної пам’яті, система може нескінченно завантажувати та вивантажувати сторінки – процес, відомий як «пробуксування». Це не так важливо для сучасних ПК з великим об’ємом оперативної пам’яті і більш швидкими твердотілими накопичувачами, що замінюють механічні жорсткі диски, але про це все ж таки слід пам’ятати.
Розділи підкачки Linux
Як згадувалося раніше, звичайний метод налаштування віртуальної пам’яті Linux полягає у використанні виділеного розділу диска. Утиліта установки перевірить ваше обладнання та запропонує схему розбиття, що включає розділ підкачування.
Ви також можете додати розділи підкачки після встановлення. Якщо ви хочете додати новий розділ на існуючий диск, вам доведеться використовувати інструмент створення розділів, що не руйнує, наприклад GParted. Переконайтеся, що ви вибрали “Linux swap” як файлову систему для вашого розділу.
Перед перерозмічанням диска зробіть резервну копію важливих даних.
Після створення розділу використовуйте mkswap для форматування розділу.
sudo mkswap /dev/sdX
Тепер потрібно відредагувати файл /etc/fstab від імені користувача root, щоб додати розділ підкачки. Цей рядок, доданий у файл, встановить розділ підкачки, який монтуватиметься під час завантаження:
/dev/sdX none swap defaults 0 0
Тепер використовуйте команду swapon, щоб активувати новий простір підкачки, де sdX це ім’я вашого розділу підкачки:
sudo swapon /dev/sdX
Використання файлів підкачки в Linux
У Linux легко налаштувати файл підкачування за допомогою командного рядка. Ви можете це зробити, якщо не хочете перерозбивати диск або редагувати файл /etc/fstab. Один із способів – використовувати fallocate:
Наприклад, щоб створити файл підкачки розміром 2 ГБ:
sudo fallocate -l 2G /path/to/swapfile
В якості альтернативи можна використовувати команду dd для створення файлу підкачки.
Переконайтеся, що ви правильно використовуєте команду dd, оскільки неправильна вказівка вхідного та вихідного файлів може призвести до втрати даних. Fallocate є кращим методом з цієї причини.
Пристрій/dev/zero – це спеціальний пристрій, який виводить “0”. Що робить ця команда dd, так це створює порожній двогігабайтний блоковий файл, використовуючи 1024-кілобайтні блоки, що підходять для використання як простір підкачування.
Потім ви можете використовувати команди mkswap і swapon з файлом підкачки так само, як і з розділом підкачки:
Ви можете поставити запитання, коли ви повинні використовувати файл підкачки або виділений розділ для вашого простору підкачки. Вибір простий: здебільшого слід використовувати розділ. Це найкращий вибір для робочого столу Linux чи сервера. Схема розділів, запропонована установником, зазвичай підходить для робочого столу Linux.
Можливо, ви захочете використовувати файл підкачки, якщо ви використовуєте Linux на віртуальній машині, у невеликій вбудованій системі або просто не хочете перерозподіляти існуючу систему Linux.
Скільки місця підкачування?
Протягом багатьох років стандартною порадою щодо того, скільки місця підкачування необхідно, є подвоєння обсягу фізичної пам’яті. З великими дисками та об’ємами пам’яті, якими оснащені найдешевші ПК, це правило може опинитися під питанням.
У багатьох системах, якщо ви відмітите top або htop, ви можете навіть помітити, що ваш простір підкачування взагалі не використовується, якщо ви налаштували свою систему таким чином.
Тим не менш, подвоєння фізичної пам’яті – це хороша відправна точка і страховий поліс, якщо ви висуваєте більш високі вимоги до пам’яті. За потреби ви можете вносити зміни до своєї системи. Якщо ваша система використовує всю оперативну пам’ять, комп’ютер може мати проблеми з продуктивністю при використанні віртуальної пам’яті.
Комп’ютер може постійно вмикатися і вимикатися, процес відомий як зависання, через що він виглядає несприйнятливим. Якщо у вас все ще є механічний жорсткий диск, ви можете чути його постійний доступ.
У наші дні це набагато менша проблема, оскільки обсяг оперативної пам’яті навіть на найдешевших ПК більш ніж достатній, а швидкість твердотільних накопичувачів набагато вища, ніж у старих жорстких дисків. Це все ще те, що ви повинні знати.
Найпростіший спосіб виправити це просто додати більше оперативної пам’яті на ваш комп’ютер. Якщо це неможливо, ви можете спробувати налаштувати підкачування ядра Linux.
Число підкачки визначає, наскільки ядро занурюється у віртуальну пам’ять. Він варіюється від 0 до 100. Установка його на 0 означає, що Linux взагалі не змінюватиметься, а на 100 він змінюватиметься при кожній можливості. За замовчуванням у більшості систем 60.
Щоб тимчасово змінити swappiness, використовуйте команду sysctl:
sudo sysctl vm.swappiness=20
“20” у цій команді буде номером підкачування до перезавантаження. Щоб змінити його назавжди, відредагуйте файл /etc/sysctl.conf від імені користувача root і помістіть рядок «vm.swappiness=[номер подкачки]», де «[номер подкачки]» — це потрібний вам номер подкачки. Це буде тимчасове рішення, доки ви не зможете встановити більше оперативної пам’яті.
Віртуальна пам’ять забезпечує безперебійну роботу вашої системи Linux
Віртуальна пам’ять – це компонент сучасних операційних систем, у тому числі Linux, який забезпечує безперебійну роботу комп’ютера. Ви можете використовувати файл підкачки, але зазвичай використовується виділений розділ. Вам не потрібно багато думати про це, але розділи підкачування Linux та файли підкачування легко налаштувати та усунути неполадки.
Багато з цих порад можна застосувати до інших систем, включаючи Windows, навіть якщо методи налаштування віртуальної пам’яті відрізняються.