J'écris un code C (sur Linux) qui doit consommer une certaine quantité de CPU lorsqu'il est en cours d'exécution. Je réalise une expérience dans laquelle je déclenche certaines actions en atteignant un certain seuil CPU. Donc, une fois que l'utilisation atteint un certain seuil, je dois le garder à cet état pendant 30 secondes, jusqu'à ce que je termine mes expériences. Je surveille l'utilisation du CPU en utilisant la commande du haut. Mes questions sont les suivantes: - 1. Comment augmenter l'utilisation de l'UC à une valeur donnée (de manière déterministe si possible)? 2. Une fois arrivé au seuil, y a-t-il un moyen de le garder à ce niveau pendant une durée prédéfinie?Augmenter l'utilisation du processeur et le maintenir à un certain niveau en utilisant le code C
Exemple de sortie de commande supérieure (la colonne 9 est CPU utilisé par le processus 'top') - 19304 abcde 16 0 5448 1212 808 R 0,2 0,0 0: 00,06 haut
similaires à ci-dessus, je regarde à la ligne en haut qui montre l'utilisation de mon binaire.
Toute aide serait appréciée. Aussi, laissez-moi savoir si vous avez besoin de plus de détails.
Merci! Les lignes de code suivantes m'ont permis de contrôler assez bien l'utilisation du CPU - Dans le cas suivant, j'ai 2 options - le garder au dessus de 50% et le garder au dessous de 50% - Après quelques essais et erreurs, je établi aux valeurs usleep donné.
endwait = clock() + (seconds * CLOCKS_PER_SEC);
while(clock() < endwait) {}
if (cpu_utilization > 50)
usleep(250000);
else
usleep(700000);
Espérons que cela aide!
Utilisez une combinaison de veille et de boucle occupée, de veille, de boucle occupée, de veille, de boucle occupée, etc. pour obtenir l'utilisation de l'unité centrale que vous souhaitez. –
Bien qu'une boucle occupée maintienne évidemment l'utilisation de l'UC indiquée au minimum, vous pouvez vouloir y lancer des accès mémoire non alignés afin de maintenir l'unité centrale occupée. –