1 votes

Performances des E/S et de la taille des disques

J'ai un processus qui doit faire beaucoup d'écritures sur le disque mais pas de lecture. Je peux soit écrire beaucoup de petits fichiers (~1 000 000 000 de fichiers, ce que je fais actuellement), soit écrire quelques gros fichiers.

Les petits fichiers font ~2Kb en moyenne mais comme j'ai une taille de bloc de 4096b, je perds environ la moitié de la capacité de mon disque.

Cependant, comme un grand nombre de threads doivent écrire en même temps, les gros fichiers ne seraient-ils pas un goulot d'étranglement puisque chaque thread devra ouvrir le fichier, écrire, puis le fermer ?

Pour résumer, ce qui est le mieux pour l'optimisation des E/S et de l'espace entre :

  • Beaucoup de petits fichiers
  • Quelques gros fichiers

2voto

Edi Points 771

Le plus simple serait de laisser cache en écriture déterminer à quelle fréquence réel Les écritures sur le disque dur (ou le SSD) sont effectuées. Vous pouvez activer ou désactiver la mise en cache de l'écriture au niveau du système d'exploitation, ou expérimenter diverses méthodes de mise en cache. hdparam paramètres . Cela permet d'effectuer des réglages sans modifier votre application. Voir Unix StackExchange sur le tuning .

Une autre possibilité est d'écrire sur un disque RAM, et de déplacer périodiquement les données vers le disque dur.

Attention : L'augmentation de la latence d'écriture accroît le risque de perte de données, mais si vous utilisez un ordinateur portable ou un PC équipé d'un onduleur, ce n'est peut-être pas un problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X