Когда я должен использовать/dev/shm/и когда я должен использовать/tmp/?

Когда должен я использовать /dev/shm/ и когда должен я использовать /tmp/? Я могу всегда полагаться на них обоих находящихся там на Нельдах?

142
задан 23.08.2017, 21:46

3 ответа

/dev/shm временная файловая система хранилища файлов, т.е. tmpfs, который использует RAM для запоминающего устройства. Это может функционировать как реализацию общей памяти, которая упрощает IPC.

Из Википедии:

Недавние 2.6 сборки ядра Linux начали предлагать/dev/shm как общую память в форме электронного диска, более конкретно поскольку мировой перезаписываемый каталог, который хранится в памяти с определенным пределом в/etc/default/tmpfs. /dev/shm поддержка, является абсолютно дополнительным в рамках файла конфигурации ядра. Это включено по умолчанию и в Fedora и в дистрибутивах Ubuntu, где это наиболее экстенсивно используется приложением Pulseaudio.              (Добавленный акцент.)

/tmp местоположение для временных файлов, как определено в Стандарте Иерархии Файловой системы, который сопровождается почти всем Unix и дистрибутивами Linux.

Так как RAM значительно быстрее, чем память на диске, можно использовать /dev/shm вместо /tmp для повышения производительности, если Ваш процесс является интенсивно использующим средства ввода-вывода и экстенсивно использует временные файлы.

Отвечать на Ваши вопросы: Нет, Вы не можете всегда полагаться /dev/shm присутствование, конечно, не на машинах связывается для памяти. Необходимо использовать /tmp если у Вас нет очень серьезного основания для использования /dev/shm.

Помните это /tmp может быть часть / файловая система вместо отдельного монтирования, и следовательно может вырасти как требуется. Размер /dev/shm ограничен избыточной RAM в системе, и следовательно у Вас, более вероятно, закончится пространство в этой файловой системе.

105
ответ дан 07.12.2019, 07:45

Используйте/tmp/для временных файлов. Используйте/dev/shm/, когда Вы захотите общую память (т.е., межпроцессное взаимодействие через файлы).

Можно полагаться на/tmp/, являющийся там, но/dev/shm/является относительно недавний Linux только вещь.

4
ответ дан 07.12.2019, 07:45

Хорошо, вот действительность.

И tmpfs и нормальная файловая система являются кэшем памяти по диску.

tmpfs использует память и область подкачки, поскольку это - запоминающее устройство, файловая система использует определенную область диска, ни один не ограничен в размере, которым может быть файловая система, довольно возможно иметь 200 ГБ tmpfs на машине меньше чем с ГБ поршня, если у Вас есть достаточно области подкачки.

Различие находится в том, когда данные записаны в диск. Для tmpfs данные записаны ТОЛЬКО, когда память становится слишком полной или данные вряд ли, чтобы скоро использоваться. OTOH большинство нормальных файловых систем Linux разработано, чтобы всегда иметь более или менее непротиворечивое множество данных по диску поэтому, если пользователь отключает, они не теряют все.

Лично, я привык иметь операционные системы, которые не отказывают и системы ИБП (например: аккумуляторы для ноутбука), таким образом, я думаю ext2/3 файловые системы, являются слишком параноидальными с их 5-10 вторыми интервалами контрольной точки. ext4 файловая система лучше с 10-минутной контрольной точкой, кроме него рассматривает пользовательские данные как второй класс и не защищает его. (ext3 то же, но Вы не замечаете его из-за 5 вторых контрольных точек),

Эта частая установка контрольных точек означает, что ненужные данные постоянно пишутся в диск, даже для/tmp.

Таким образом, результат - Вы, должен создать область подкачки, столь большую, как Вам нужен Ваш/tmp, чтобы быть (даже если необходимо создать своп-файл), и используйте то пространство для монтирования tmpfs необходимого размера на/tmp.

НИКОГДА не используйте/dev/shm.

Если, Вы не используете его для очень маленького (вероятно, mmap'd) файлы IPC, и Вы уверены, что это существует (это не стандарт), и машина имеет более чем достаточно памяти + доступная подкачка.

18
ответ дан 07.12.2019, 07:45

Теги

Похожие вопросы