2010-03-14 1 views
2

Afin de tester comment un programme réagit lorsque les ressources du système se font rares (principalement le CPU mais je suis également intéressé par les E/S disque), je voudrais mettre une charge arbitraire sur le système.Bash: moyen facile de mettre une charge configurable sur un système?

Actuellement, je fais quelque chose comme ceci:

#!/bin/bash 

while true 
do 
    echo "a" >> a.txt 
    md5 a.txt 
done 

Je pourrais aussi commencer des fichiers audio-encodage mp3, ou autre chose.

Qu'est-ce qu'un script Bash facile et petit qui pourrait être utilisé pour simuler une charge arbitraire, idéalement configurable à l'aide de paramètre (s)?

Répondre

3

Si vous recherchez uniquement la charge du processeur, vous pouvez simplement exécuter une boucle vide:

while :; do : ; done 

pour E/S disque vous pouvez utiliser une séquence de copie de fichier de vidage de disque od (voir la commande « dd »)

Cordialement

+0

@Giuseppe Guerrini: +1 bouclage occupé est vraiment génial Je l'ai juste essayé mais ça ne fera qu'un travail de base (je sais, je sais, je peux simplement lancer 'x' d'eux où 'x' est le nombre de cœurs que la machine a;) – SyntaxT3rr0r

+0

Sur de nombreux systèmes de type unix, il existe une commande "taskset". Vous pouvez l'utiliser pour lancer une application sur un processeur spécifique. Je pense que cela peut vous aider à mieux contrôler la charge du processeur. Au revoir! –

+0

yup à droite j'ai oublié de cpu-affinité :) – SyntaxT3rr0r

0

Eh bien, vous pouvez tester la charge du processeur en faisant une boucle vide comme indiqué ci-dessus.

Pour les E/S disque, tout dépend de la sophistication dont vous avez besoin. Si vous voulez juste quelque chose qui peut tester la vitesse d'E/S à pleine explosion constante, essayer quelque chose comme ceci:

yes "a very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very long string (longer than this example)" | dd if=/dev/stdin of=file 

Ce qui vous donnera une bonne lecture de la vitesse quand vous tuez la commande.

Si vous souhaitez ajuster la quantité exacte de charge, cela devient un peu plus délicat.

Cependant, pourquoi lancez-vous vos propres benchmarks? Il y en a déjà beaucoup, et vous pouvez en avoir plein les bons avec la suite de test Phoronix.

+0

Il ne veut pas de repères, mais plutôt comment un programme se comporte avec des ressources très limitées. –

+0

@Max E .: ce que Justin Smith a dit: Je n'ai pas besoin de benchmarker le CPU, je veux tester le comportement d'un programme lorsqu'il est exécuté sur des systèmes qui ont une charge CPU et/ou E/S élevée: – SyntaxT3rr0r

+0

@WizardOfOdds et Justin, merci. J'ai seulement parcouru la question. :) –

Questions connexes