В Solaris файловая система / tmp является файловой системой типа "tmpfs". Это реализовано в ядре за счет выделенного пространства из пула виртуальной памяти. Это означает, что распределение взаимодействует с доступной оперативной памятью на машине и доступным пространством подкачки.
Если у меня есть машина с большой памятью (много ОЗУ) с умеренным разделом подкачки меньшего размера, будет ли размер моего пространства / tmp ограничиваться памятью, или пространством подкачки, или их суммой?
Число, показанное "df -h / tmp", похоже, не отражает свободную оперативную память, только пространство подкачки.
Вот что я знаю на данный момент. Я помещу это здесь в надежде, что это будет полезно, но улучшения приветствуются.
Сумма пространства подкачки и ОЗУ должна быть доступна для использования файлами / tmp. Вы можете узнать больше об этом на страницах руководства для tmpfs, mount_tmpfs и swap.
Вот некоторые соответствующие документы:
Администрирование Oracle Solaris 11.1: устройства и файловые системы http://docs.oracle.com/cd/E26502_01/html/E29006/fsswap-29713.html
В конце страницы руководства tmpfs я нашел следующее:
df(1M) output is of limited accuracy since a tmpfs file sys-
tem size is not static and the space available to tmpfs is
dependent on the swap space demands of the entire system.
Документ поддержки Oracle 1007407.1 предполагает, что реализация сообщает о нехватке места, если это условие выполняется:
((RAM + swap - process-space) * .9) - space-from-files-in-tmp = 0
Похоже, это указывает на то, что здесь присутствует какой-то фактор выдумки.
Моя интерпретация этой формулы заключается в том, что запущенным процессам разрешено приближаться к истинному пределу памяти + подкачки. Пространство, выделенное в / tmp, начнет выходить из строя, когда свободное пространство в (RAM + swap) приблизится к 10%. Если у вас большой объем оперативной памяти (например, 128 ГБ) и небольшой размер подкачки по умолчанию (например, 4G), то это означает, что / tmp может сообщить, что он заполнен, прежде чем какие-либо страницы будут вообще выделены из пространства подкачки. В этом нет ничего плохого, это просто любопытный поворот традиционных алгоритмов и предположений виртуальной памяти.