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?
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
# 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.
Vous avez un hub USB 1.1? Ou une carte SD lente? Ils vont vous descendre à moins de 10 Mbps.
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.)
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++
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.
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
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?
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
J'ai récemment découvert une configuration où j'ai
google-drive-ocamlfuse
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