Насколько я знаю, вы не можете контролировать, какие части системы виртуальной памяти (например, RAM или swap) используются для tmpfs.
Однако неверно, что создание больших tmpfs приведет к фатальным ошибкам OOM. Вы можете создать tmpfs больше, чем ваш общий объем RAM + SWAP, потому что ничего из этого не используется, пока вы не поместите файлы в tmpfs.
Когда же поместить файлы в TMPFS, который будет использовать память, но только столько, сколько файлов вы положили в TMPFS. Если вы не трогаете эти файлы в течение длительного времени, и системе нужно использовать ОЗУ больше, чем нужно, чтобы хранить их в буферном кеше, эти файлы фактически будут резервироваться из подкачки вместо ОЗУ.
Когда ваши требования к tmpfs станут большой частью оперативной памяти, это повлияет на ваш буферный кеш (вещи перестанут кэшироваться в оперативной памяти, потому что это необходимо для файлов tmpfs). По мере роста спроса начнется своп. В конце концов, когда у вас нет буферного кеша, используется весь ваш своп, и еще больше запросов на память делается, тогда и только тогда вы начнете получать ошибки OOM.
Так что на самом деле безопасно указывать большие tmpfs /tmp
до тех пор, пока у вас также есть приличный объем подкачки. Вы говорите, что с вами все будет в порядке, если использовать 25% оперативной памяти и 75% объема подкачки. В этом случае, скажем, у вас обычно есть 1 ГБ ОЗУ и 2 ГБ подкачки. Я бы установил tmpfs на 1G и немного подкачал, скажем, к 3G.
Если ваша система испытывает нехватку памяти, первое, что произойдет, это то, что редко используемые файлы в /tmp
конечном итоге будут поддерживаться подкачкой вместо ОЗУ. Вы не теряете всю свою оперативную память, делая tmpfs того же размера, что и оперативная память.