web-dev-qa-db-fra.com

Puis-je simuler un disque dur lent?

Je pense qu'un certain bogue intermittente ne peut se manifester que lorsque la vitesse de lecture du disque est lente. Le dépannage est difficile car je ne peux pas le reproduire de manière fiable.

À part gober IO avec un processus hautement prioritaire, puis-je simuler un disque dur lent?

18
ændrük

Utilisez nbd , le dispositif de blocage de réseau, puis limitez l'accès à celui-ci en utilisant say trickle.

Sudo apt-get install nbd-client nbd-server trickle
15
poolie
 # echo 1> /proc/sys/vm/drop_caches

Cela vous ralentira :)

Cela vous obligera à lire à partir du disque, au lieu de tirer parti de la page en cache.

Si vous voulez vraiment être sophistiqué, vous pouvez faire quelque chose comme simuler une erreur de lecture chaque fois que vous utilisez le framework d’injection de faute scsi.

http://scsifaultinjtst.sourceforge.net/

5
ppetraki

Vous avez un hub USB 1.1? Ou une carte SD lente? Ils vont vous descendre à moins de 10 Mbps.

4
Oli

Il ne s’agit en aucun cas d’une solution complète, mais elle peut également être utile en combinaison avec d’autres mesures: il existe un planificateur d’E/S très semblable à un planificateur de processus et il peut être modifié.

Plus particulièrement, vous pouvez réellement choisir parmi différents ordonnanceurs:

~# cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq] 
~# echo "deadline" > /sys/block/sda/queue/scheduler
~# cat /sys/block/sda/queue/scheduler 
noop anticipatory [deadline] cfq 
~# 

deadline peut vous aider à obtenir des résultats plus reproductibles.

noop, comme son nom l'indique, est incroyablement stupide et vous permettra de faire des ravages absolus sur les performances d'E/S avec un minimum d'effort.

anticipatory et cfq tentent tous les deux de faire preuve d'intelligence, bien que cfq soit généralement le plus intelligent des deux. (Si je me souviens bien, anticipatory est en fait le planificateur hérité juste avant que le noyau ne commence à prendre en charge plusieurs planificateurs.)

3
Nicholas Knight

En plus d'essayer de ralentir le disque dur lui-même, vous pouvez également utiliser des outils d'analyse comparative des systèmes de fichiers tels que bonnie ++ , qui peuvent entraîner beaucoup d'E/S disque.

Sudo apt-get install bonnie++
2
ajmitch

Vous pouvez essayer d'exécuter une copie d'un fichier volumineux, tel qu'une image iso du cd d'installation d'Ubuntu, et de l'exécuter deux fois. Cela devrait ralentir un peu votre conduite.

2
RolandiXor

Vous pouvez utiliser une machine virtuelle et un accès au disque de régulation ... Voici quelques conseils sur la procédure à suivre dans Virtualbox 5.8. Limitation de la bande passante pour les images de disque https://www.virtualbox.org/manual/ch05.html#storage-bandwidth-limit

1
Adi Roiban

Pourquoi ne pas exécuter iotop et voir si le processus que vous essayez de déboguer provoque beaucoup de lectures/écritures sur le disque?

0
The Unix Janitor

que diriez-vous de make -j64? dans les articles décrivant ce nouveau correctif de performances 200line, make -j64 était une tâche consommant beaucoup de ressources informatiques

0
Pawełkowy

J'ai récemment découvert une configuration où j'ai

  • déplacé le répertoire sur mon Google Drive
  • l'a monté via le client super lent google-drive-ocamlfuse
  • créé un lien symbolique du chemin d'origine au nouveau

Si une latence de 16 secondes n'est pas assez lente, vous pouvez simplement débrancher votre routeur.

Pour référence, voici le cas d'utilisation d'origine, où j'ai eu l'idée de ceci: https://github.com/goavki/apertium-apy/pull/76#issuecomment-355007128

0
Androbin