Я пытаюсь ускорить запуск виртуальных машин, используемых для сред разработки / автоматизированного тестирования, и хотел проверить некоторые предположения о кэшировании записи на диск.
я использую ext4
для корневой файловой системы в виртуальной машине, и я не особо беспокоюсь о сценариях потери питания. Если произойдет отключение питания и диск будет поврежден, всю машину можно будет восстановить за пару минут. Для меня это означает, что следующие параметры могут быть безопасно применены, и это не должно иметь никакого значения для приложений - они просто влияют на то, как буферизованные данные записываются на сам диск, но кешированное представление в памяти всегда будет точным:
Это верно? И есть ли другие параметры ext4, на которые мне следует обратить внимание для повышения производительности?
journal_async_commit, noauto_da_alloc, dioread_nolock. Видеть документация ext4 для описания.
Также nouser_xattr, noacl, если вы их не используете, могут дать незначительные улучшения производительности при первом поиске (но не имеет значения, если вы не используете порядок миллионов файлов).
Обратите внимание, что использование commit = 3600 (при одновременном улучшении общего времени для некоторых операций за счет пакетной обработки) может не делать то, что вы хотите. Когда он срабатывает (вероятно, намного раньше, чем 3600, из-за состояния полного журнала), у вас будет БОЛЬШОЙ всплеск операций ввода-вывода, который остановит почти все, что работает на машине, до тех пор, пока оно не завершится (что может составлять минуты, в зависимости от размера вашего журнала и Скорости ввода / вывода). Меньшее значение даст вам больше, но меньшего размера пакетов метаданных, поэтому это не будет выглядеть так, как будто машина "зависла". Это может или не может быть проблемой для вас.
Если вы не хотите jounrnal, вы можете полностью отключить его - обратите внимание, что это может несколько улучшить производительность, но также может ухудшить ее:
tune2fs -O ^has_journal /dev/sdXX
Кроме того, некоторые конкретные нагрузки (например, создание и удаление множества небольших файлов в короткие сроки, например, почтовая очередь SMTP занятого почтового сервера) могут парадоксальным образом фактически предпочесть data = journal вместо data = writeback (или даже вообще без журнала) - поскольку это будет использовать только журнал (который представляет собой линейную запись вместо случайной записи, следовательно, НАМНОГО быстрее в хранилище без SSD).
Но самое главное - ты будет для сравнения, чтобы найти, какой из них вам подходит лучше всего - серебряной пули нет.