Наскільки безпечно збільшувати tmpfs більше, ніж фізичну пам'ять?


11

Мій сервер має 2 Гб оперативної пам’яті та 120 ГБ SSD, а також деякі RAID-масиви для зберігання. ОС - Debian 8 (Linux 3.16).

У мене інтенсивне додаток MySQL, яке має tmpdir= /run/mysqld, яке tmpfsналаштовано Debian через /etc/default/tmpfs:

# Size limits.  Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM

Раніше це було 20%VM, а це приблизно 384 млн. Я побіг проти кількох no space left on device, тож я збільшив його 40%VM, але навіть з приблизно 763M це все ще занадто мало.

Тепер мені слід додати більше оперативної пам’яті, але з цікавості я хотів би знати тут межі.

  • /dev/sdd1монтується на /близько 50 Гб безкоштовно і досить швидко (Samsung 850 EVO SSD)
  • /dev/sdd5 мій розділ swap, він становить 3.7G (ідентифікатор типу fdisk - 82)
  • TMPFS_SIZEвстановлено 40%VM, що означає /run763М

Тепер я знаю, що tmpfs може обмінятися, що добре зі мною. Я хочу, щоб MySQL писав в оперативну пам’ять, коли це можливо, але якщо їй потрібно більше пам'яті, я можу дозволити системі поміняти її на SSD.

Тож із моїм налаштуванням, чи можу я /run:

  • 300М великий? Так. Це був дефолт.
  • 1,5 ГБ великий? Так, спробував, MySQL використовував до 1,3 Гб на ньому, і система працювала як шарм. Але це ще менше ніж половина фізичної пам'яті + swap-розділ.
  • 2,5 ГБ великий? Це більше, ніж фізична пам'ять, але менше половини фізичної пам'яті + мій розділ.
  • 4 Гб великий? Це було б близько до фізичного + своп
  • Більше? як 10GB? чи можна використовувати вільний простір на /обмін ще більше?

Я здогадуюсь, що правило безпеки для безпеки полягає в тому, щоб він TMPFS_SIZEне перевищував своп + половину фізичної пам'яті. Чи можу я вийти за рамки цього, не збільшуючи розділ swap?

Крім того , можна поставити 200%VMв /etc/default/tmpfs? Я читав, tmpfs(5)не знаючи, чи можу я поставити на це 100%.

Нарешті, я повинен це зробити /etc/fstabзамість цього і не чіпати /etc/default/tmpfs?

(до того, що я знаю, що я це робив лише за допомогою mount -o remount, я ще не перезавантажував сервер)

Редагувати: для останнього запитання я знаю, що це може / може бути змінено /etc/fstab(див. Цитата нижче зі сторінки man), проте я хотів знати найкращу практику, тому що я ніколи до цього нічого не торкався /etc/default.

Більш складні параметри кріплення можуть бути використані при створенні відповідного запису в / etc / fstab.


Цікаве запитання. Я думаю, це також може бути дуже пов'язане з налаштуванням перевиконання пам'яті.
phk

Здається, що максимальний розмір tmpfs був би фізичним + свопом. Я бачив це в документах ядра .
Бенуа Дюффес

Відповіді:


8

Я подумав, що можу це просто перевірити, тому побіг:

sudo mount -o remount,size=2800M /run

Працював як шарм:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G   45M  2.7G   2% /run

Тому я трохи заповнив:

fallocate -l 1G /run/test.img
fallocate -l 1G /run/test2.img
fallocate -l 500M /run/test3.img

Результат:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G  2.6G  208M  93% /run

Система все ще працює і працює. Доступність swap зменшилась, що підтверджує, що він використовувався:

падіння доступності свопів

  • 17:10: створити в 2,5 Гб файлів /run
  • 17:20: видаліть файл 500M

Загальний своп зменшується на суму, взяту на /run.

Я б протестував 10 Гб на VM, тому що я не знаю, чи буде ядро ​​відмовитись від перезавантаження чи просто матиме несподівану поведінку.

Я все ще шукаю реальної відповіді, але прагматичний спосіб показав, що вона працює.

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