Pour autant que je sache, vous ne pouvez pas contrôler quelles parties du système de mémoire virtuelle (c'est-à-dire RAM ou swap) sont utilisées pour un tmpfs.
Cependant, il n'est pas vrai que la création d'un grand tmpfs provoquera des erreurs fatales OOM. Vous pouvez créer un tmpfs plus grand que votre total RAM+SWAP parce qu'aucune partie n'est réellement utilisée jusqu'à ce que vous mettiez des fichiers dans le tmpfs.
Quand vous faire mettre des fichiers dans le tmpfs, cela utilisera de la mémoire, mais seulement autant que les fichiers que vous avez mis dans le tmpfs. Si vous ne touchez pas à ces fichiers pendant une longue période et que le système a besoin d'utiliser la RAM plus qu'il n'a besoin de les conserver dans le cache tampon, ces fichiers seront en fait sauvegardés à partir du swap au lieu de la RAM.
Lorsque vos demandes sur le tmpfs deviennent une grande partie de la RAM, cela va affecter votre buffer cache (les choses cesseront d'être mises en cache en RAM parce qu'elles sont nécessaires pour les fichiers tmpfs). Au fur et à mesure que la demande augmente, elle va commencer à aller dans le swap. Finalement, lorsque vous n'avez plus de cache tampon, que tout votre swap est utilisé et qu'il y a encore plus de demandes de mémoire, alors et seulement alors vous commencerez à avoir des erreurs OOM.
Donc il est en fait sûr de spécifier un grand tmpfs pour /tmp
tant que vous avez une quantité décente d'échange aussi. Vous dites que vous seriez d'accord pour qu'il utilise 25% de votre RAM et 75% de votre swap. Dans ce cas, disons que vous avez normalement 1G de RAM et 2G de swap. Je configurerais tmpfs à 1G et augmenterais un peu le swap, disons à 3G.
Si votre système est soumis à une pression de mémoire, la première chose qui va se produire est que les fichiers peu utilisés dans le répertoire /tmp
finira par être soutenu par le swap au lieu de la RAM. Vous ne perdez pas toute votre RAM en créant un tmpfs de la même taille que la RAM.