Tanto quanto eu saiba, você não pode controlar quais partes do sistema de memória virtual (ou seja, RAM ou swap) são usadas para um tmpfs.
No entanto, não é verdade que a criação de um tmpfs grande cause erros fatais no OOM. Você pode criar um tmpfs maior que o seu total de RAM + SWAP porque nenhum deles é realmente usado até que você coloque os arquivos no tmpfs.
Quando você faz colocar arquivos no tmpfs, isso irá usar a memória, mas somente tanto quanto os arquivos que você colocar no tmpfs. Se você não tocar nesses arquivos por um longo tempo e o sistema precisar usar a RAM mais do que o necessário para mantê-los no cache de buffer, esses arquivos serão recuperados da troca em vez da RAM.
Quando suas demandas sobre o tmpfs se tornarem uma grande parte da RAM, isso afetará seu cache de buffer (as coisas deixarão de ser armazenadas em cache na RAM porque são necessárias para os arquivos tmpfs). Como a demanda cresce, então vai começar a entrar em swap. Eventualmente, quando você não tem cache de buffer, toda a sua troca é usada e ainda mais pedidos de memória são feitos, então, e somente então, você começará a obter erros de OOM.
Portanto, é seguro especificar um tmpfs grande para /tmp
, desde que você tenha uma boa quantidade de swap também. Você diz que estaria bem com isso usando 25% da sua RAM e 75% do seu swap. Nesse caso, digamos que você normalmente tem 1G de RAM e 2G de swap. Eu defini o tmpfs como 1G e aumentei um pouco o swap, digamos, para o 3G.
Se o seu sistema estiver sob pressão de memória, a primeira coisa que vai acontecer é que os arquivos pouco usados em /tmp
acabarão sendo suportados por swap em vez de RAM. Você não está perdendo toda a sua memória RAM fazendo um tmpfs do mesmo tamanho que a RAM.