Файлы в / dev / shm занимают память при увеличении с помощью ftruncate, но не записываются? - PullRequest
2 голосов
/ 26 октября 2019

Я использую mmap для создания сегментов совместно используемой памяти, и мне интересно, смогу ли я заранее создать все сегменты, которые я собираюсь использовать в / dev / shm, не вызывая никакого использования памяти. Причина, по которой я подозреваю, что это возможно, состоит в том, что я знаю, что большинство файловых систем имеют концепцию полностью нулевых страниц, и возможно, когда вы изначально увеличиваете размер файла до того, как делаете какие-либо записи, чтобы файл на самом деле не занимал место из-за этих 'дырки ». Но так ли это для tmpfs (файловая система для / dev / shm)? Могу ли я сойти с ума, создавая большие файлы в / dev / shm без использования памяти, если я не пишу в них?

1 Ответ

2 голосов
/ 26 октября 2019

В Linux файловая система tmpfs поддерживает разреженные файлы. Простое изменение размера файла не выделяет память (за пределами внутренних tmpfs структур данных). Как и в случае с обычными файловыми системами, которые поддерживают разреженные файлы (файлы с дырками), вы должны либо фактически записать данные, либо использовать fallocate для выделения резервного хранилища. Насколько я понимаю, так было с Linux 2.6 дней.

...