Je travaille sur un programme en arrière-plan qui fonctionnera depuis longtemps, et j'ai un programme de journalisation externe (SmartInspect) que je veux régulièrement alimenter avec certaines valeurs, pour le surveiller en temps réel lors du débogage. Je sais que je peux simplement lancer plusieurs programmes, comme le Gestionnaire des tâches, ou IARSN TaskInfo, mais je voudrais garder tout dans mon propre programme pour cela, car je veux aussi ajouter des règles simples comme si le Le programme utilise plus de X% CPU, signalez ceci dans le journal.Un programme C# peut-il mesurer sa propre utilisation du CPU?
J'ai un fil d'arrière-plan qui alimente périodiquement des statistiques à SmartInspect, comme la consommation de mémoire, jeu de travail, etc.
Est-il possible pour ce thread pour obtenir une mesure assez précise de la quantité des ressources CPU de l'ordinateur ça consomme? Le programme principal est une application monothread (à part le thread de surveillance qui enregistre les statistiques), donc si une technique est limitée à combien un seul thread utilise alors ce serait bien aussi.
J'ai trouvé quelques entrées liées à quelque chose appelé rusage pour Linux et C. Y at-il quelque chose de similaire que je peux utiliser pour cela?
Edit: Ok, j'ai essayé le chemin de contre-performance, mais il a ajouté un certain nombre de données GC-chaque fois appelé, de sorte que le graphique pour l'utilisation de la mémoire et la collecte des ordures monté en flèche. Je suppose que je vais laisser cette partie pour l'instant.
Cela a fonctionné beaucoup mieux et n'a pas ajouté autant de pression sur le GC, juste une légère augmentation. Merci! –
@axk L'article ne semble pas être disponible, pouvez-vous compléter votre réponse en indiquant simplement comment récupérer uniquement la partie processeur en cours? – J4N