... Я могу использовать файлы для ввода-вывода и хотел бы избежать этого по очевидным причинам производительности.
Интересно, каковы эти причины, пожалуйста ...
Linux кэширует файлы в памяти ядра в кэше страницы .Сначала записи идут на страницу наличными, другими словами, системный вызов write()
- это вызов ядра, который копирует данные только из пространства пользователя в кэш страницы (это немного сложнее, когда система находится в состоянии стресса).Некоторое время спустя pdflush записывает данные на диск асинхронно.
Файл read()
сначала проверяет кэш страницы, чтобы узнать, доступны ли данные в памяти, чтобы избежать чтения с диска.Это означает, что если одна программа записывает данные в файлы, а другая программа читает их, эти две программы эффективно обмениваются данными через память ядра, пока кеш страниц сохраняет эти файлы.
Если вы хотите избежать записи на дискполностью, то есть состояние не требуется сохранять при перезагрузках ОС, эти файлы могут быть помещены в /dev/shm
или /tmp
, которые обычно являются точками монтирования файловых систем в памяти.