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

Мой сервер имеет 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 , что составляет около 384M. Я столкнулся с несколькими no space left on device , поэтому я увеличил его до 40%VM , но даже с примерно 763 М он все еще слишком мал.

Теперь я теперь должен добавить больше оперативной памяти, но из любопытства я хотел бы узнать пределы здесь.

  • /dev/sdd1 установлен на / имеет около 50 ГБ свободного места и довольно быстр (Samsung 850 EVO SSD)
  • /dev/sdd5 – мой раздел подкачки, это 3.7G (идентификатор типа fdisk – 82)
  • TMPFS_SIZE установлен на 40%VM , значение /run – 763M

Теперь я знаю, что tmpfs могут меняться, что хорошо со мной. Я хочу, чтобы MySQL записывал в ОЗУ по возможности, но если ему требуется больше памяти, я могу позволить системе поменять его на SSD.

Поэтому с моей настройкой я могу нажать /run :

  • 300M большой? Да. Это было по умолчанию.
  • 1,5 ГБ большой? Да, попробовал, MySQL использовал до 1,3 ГБ на нем, и система работала как шарм. Но это еще меньше, чем половина раздела с физической памятью + своп.
  • 2,5 ГБ большой? Это больше, чем физическая память, но меньше половины физической памяти + мой раздел подкачки.
  • 4 ГБ большой? Это будет тесно вписываться в половину физического + свопа
  • Больше? как 10GB? может ли он использовать свободное пространство в / для обмена больше?

Я предполагаю, что эмпирическое правило безопасности означает, что TMPFS_SIZE не больше, чем своп + половина физической памяти. Могу ли я выйти за рамки этого без увеличения раздела подкачки?

Кроме того, можно ли положить 200%VM в /etc/default/tmpfs ? Я прочитал руководство для этого файла, не зная, могу ли я поставить на него 100%.

Наконец, должен ли я сделать это в /etc/fstab вместо этого и не касаться /etc/default/tmpfs ?

(знаю, что я только сделал это с mount -o remount , я еще не перезагрузил сервер)

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

Более сложные варианты монтирования могут быть использованы при создании подходящей записи в файле / etc / fstab.

One Solution collect form web for “Насколько безопасно увеличить tmpfs до большей, чем физической памяти?”

Я решил, что могу просто проверить это, поэтому я побежал:

 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 

Система все еще работает. Доступность свопов снизилась, что свидетельствует о том, что она была использована:

падение доступности подкачки

  • 17:10: создать 2.5 ГБ файлов в /run
  • 17:20: удалите файл 500M

Суммарный своп уменьшается на сумму, полученную в /run .

Я бы тестировал 10 ГБ на виртуальной машине, потому что я не знаю, откажется ли ядро ​​от перезагрузки или просто неожиданное поведение.

Я все еще ищу фактический ответ, но прагматичный способ показал, что он работает.

  • Как создать постоянную точку монтирования tmpfs при перезагрузке?
  • Ubuntu 16.04 с файловой системой только для чтения и записываемым слоем
  • Как заставить tmpfs использовать только физическую RAM, а не своп?
  • Использование общей памяти через tmpfs и NUMA на x86_64 / Linux
  • Какую файловую систему / файловую систему использовать для раздела / tmp
  • Как заблокировать растущий каталог в памяти?
  • Выполнить на месте зашифрованный привод ПЗУ
  • Имеют ли tmpfs и devtmpfs одну и ту же область памяти?
  • Tmpfs с переполнением на диске?
  • Что могло бы объяснить эту странную разреженную обработку файлов в / tmpfs?
  • Менеджер графического архива, который использует / tmp
  • Что происходит, когда объем tmpfs заполнен и swap заполнен? Включен ли OOM-убийца Linux?
  • Linux и Unix - лучшая ОС в мире.