Вы можете смонтировать ramfs
файловую систему, скопировать в нее свой проект и работать оттуда. Это гарантирует, что ваши входные файлы загружены в ОЗУ, и они не будут перечитываться с гораздо более медленного диска. Однако, как вы обнаружили, это, как правило, не полезная стратегия. Вы уже получаете точно такую же выгоду.
Ramfs - это очень простая файловая система, которая экспортирует механизмы кэширования диска Linux (кеш страниц и кэш-память) в виде динамически изменяемой файловой системы на основе ОЗУ.
- https://github.com/torvalds/linux/blob/v4.18/Documentation/filesystems/ramfs-rootfs-initramfs.txt
Вы уже можете доверять, что ваши входные файлы кэшируются в ОЗУ, при первом чтении. Ваши выходные файлы также кэшируются, так что вы не ждете, пока они будут записаны на диск.
Не существует искусственного ограничения на объем кеширования, продолжительность его кеширования и т. Д. Кэши начинают сбрасываться только после заполнения ОЗУ. Какой кеш удаляется первым, выбирают ужасно разработанные алгоритмы. Первое приближение, мы описываем это как Наименее недавно использованный. См. Какие алгоритмы замены страниц используются в ядре Linux для кеширования файлов ОС?
Обратите внимание, что ваш текстовый редактор будет явно fsync()
сохранять файлы на диск.
Если вы запускаете тесты программы, которая включает в себя fsync()
, их запуск в файловой системе ramfs
может ускорить их. Другая стратегия - попытаться отключить fsync()
с помощью eatmydata
/ nosync.so
.
Некоторые другие операционные системы могут иметь определенные ограничения, которые можно обойти с помощью виртуального диска. С одной стороны, отсутствие какого- либо кэширования файлов является причиной того, что ram-диски были популярны в DOS .
TMPFS
tmpfs
работает так же, как ramfs
, за исключением того, что он может использовать пространство подкачки, если у вас есть. Т.е., если вам нужна оперативная память для чего-то другого, алгоритмы наименьшего числа недавно использовавшихся ресурсов могут выбирать блоки данных из tmpfs и выгружать их на диск.
Большинство людей придерживаются tmpfs
, потому что это также позволяет вам ограничить общий размер, и показывает пространство, используемое правильно, например, в df
команде. Я не уверен, почему эта разница существует. Ограничение размера tmpfs
защищает вас от случайного заполнения всей оперативной памяти и, в основном, от гибели вашей системы. По умолчанию используется половина вашей оперативной памяти.
Другие причины, почему записи могут замедляться
Выше приведено упрощение с учетом вашего случая. Записи в файлы в вашем случае не должны ждать диска. Однако есть несколько случаев, когда это делается. См. Отличный пост в блоге. Почему буферизованные записи иногда замирают . Самым удивительным случаем является недавнее изменение Linux под названием «стабильная запись страницы».
mount -o size=16G -t tmpfs none /mnt/tmpfs