J'ai un serveur Linux et j'ai une partition de disque de 500 Go de rechange. Je voulais le formater et l'utiliser pour / tmp. Le serveur exécute parfois de grandes tâches de traitement des données, il peut donc arriver que / tmp contienne des Go de données temporaires.
Ensuite, j'ai eu l'idée qu'à la place je pourrais l'ajouter en tant que partition de swap et monter / tmp sur tmpfs. Cette idée est-elle raisonnable?
Le serveur a 6 Go de RAM, donc dans la plupart des cas, les données sur / tmp ne seront que dans la RAM, avec l'avantage évident de la vitesse. La question est, et s'il y aura, disons, 10 à 20 Go de données sur / tmp, comment le système fonctionnera-t-il? Quelles seraient les performances par rapport au simple montage / tmp sur une partition ext4? Merci pour l'aide.
Edit: Il est clair que le système commencera à échanger de la mémoire lorsque l'utilisation de tmpfs atteint la limite de RAM. Mais Linux est-il suffisamment intelligent pour échanger des données tmpfs et conserver des données "régulières" dans la RAM? Si oui, alors je suppose que cela pourrait se comporter raisonnablement. Sinon, l'ensemble du système sera gravement touché.
Réponses:
Ce n'est PAS une bonne idée TM .
Vous irez bien avec une grande
/tmp
partition, montée comme ça (à partir de votre/etc/fstab
)Et vous pouvez ajouter votre disque externe en tant que partition d'échange géante
Lorsque cela atteint sa limite, votre machine commencera à échanger les pages de la RAM vers le disque - à ce moment, les moyennes de charge passeront par le toit et la machine s'arrêtera.
C'est une mauvaise idée de s'appuyer sur SWAP de quelque façon que ce soit, vous feriez mieux de vendre votre disque de 500 Go et d'acheter simplement plus de RAM - c'est pas cher.
En résumé
Si vous voulez vraiment utiliser votre disque de 500 Go, vous pouvez monter votre disque de 500 Go
/tmp
avec un système de fichiers non journalisé avec atime et diratime désactivés (par exempleext2
). Ce serait beaucoup plus rapide que de traiter avec une machine qui estSWAP
ingla source
tmp
accès plus rapide .Cela pourrait être une idée raisonnable.
Mettre un système de fichiers réel sur / tmp entraîne des frais généraux, car les systèmes de fichiers parcourent de grandes longueurs pour s'assurer que les données sur le disque ne sont pas corrompues en cas de défaillance du système. Pour un / tmp qui est nettoyé au démarrage, c'est évidemment juste une surcharge. L'utilisation d'un tmpfs éviterait cette surcharge.
D'un autre côté, les systèmes de fichiers s'assurent également que les fichiers sont organisés sur le disque de manière à optimiser le temps d'accès - c'est-à-dire qu'ils éviteront la fragmentation. Les accès séquentiels classiques aux fichiers entraîneront (principalement) des accès séquentiels aux disques, qui sont plus efficaces que les accès aléatoires. Cet effet est plus prononcé sur les disques durs en rotation que sur les SSD. La combinaison swap + tmpfs ne peut pas facilement faire cela, car swap ne sait pas quel morceau de mémoire appartient à quel fichier et tmpfs ne sait pas comment les pages sont mappées à la mémoire physique ou au disque. Pour les gros fichiers, cependant, cela devrait bien fonctionner, car tmpfs et swap essaient de garder les choses contiguës dans ce cas. Du moins, tant qu'il y a beaucoup d'espace libre sur le swap (sinon la fragmentation se déclenche), et les écritures se produisent assez lentement pour avoir une chance d'être swappées.
Donc, l'essentiel est: cela dépend, vous devriez essayer les deux options pour voir laquelle fonctionne le mieux.
Lorsque vous montez les tmpfs, n'oubliez pas de définir explicitement la taille. La valeur par défaut est la moitié de la RAM physique, donc seulement 3 Go.
la source
C'est en fait une bonne idée lorsque vous n'avez généralement pas beaucoup de données
/tmp
, mais consommez occasionnellement des gigaoctets sans fin pour une durée limitée. Le problème est que le système d'échange Linux ne connaît pas suffisamment votre cas d'utilisation pour le faire correctement. Il donnera généralement la priorité au dumping ou à l'échange de cache sur les pages du programme, mais cela n'aide pas vraiment. Il peut être possible d'utiliser des groupes de contrôle pour atteindre votre objectif, c'est lorsque les données de travail sont conservées dans la mémoire du programme, mais je ne sais pas comment configurer les groupes de contrôle dans ce cas (je suppose que vous pourriez utiliser un tmpfs FUSE ...) . Heureusement, ce n'est pas obligatoire. Vous pouvez obtenir le comportement souhaité avec zram et un support.zram-init
est le programme qui automatise la configuration de zram, qui est un périphérique de bloc RAM compressé. Il y a généralement un exemple dans lazram-init
configuration pour le montage en/tmp
tant que zram. Ce sera quelque chose comme ce qui suitCela compressera et stockera en mémoire tout ce qui est écrit dans / tmp. La compression habituelle se situe autour de 50%. Il consommera au maximum 2G de mémoire physique. S'il manque de mémoire physique, il prendra les fichiers les plus anciens et les poussera dans le périphérique de sauvegarde, toujours compressé. Notez qu'il engendre une surcharge du processeur pour compresser et décompresser les fichiers, mais cela est généralement compensé par la réduction des E / S.
Une configuration similaire peut être utilisée conjointement avec des groupes de contrôle pour permettre à certains processus de s'échanger sans nuire aux performances globales du système.
la source