44 votes

Quel est le succès des compteurs de performance

Lorsqu’on envisageait d’utiliser des compteurs de performance en tant que site .NET de mon entreprise, je me demandais quelle part coûtait leur utilisation.

Est-ce que je veux que mon site mette à jour en permanence ses compteurs ou est-il préférable que je ne le fasse que lorsque je mesure?

33voto

EWizard Points 296

La surcharge de la configuration de l'compteurs de performance est généralement pas suffisant pour inquiéter (création d'une zone de mémoire partagée et certains .NET les objets, avec CLR surcharge, car le CLR en fait de la gestion pour vous). Ici, je fais référence à des classes comme PerformanceCounter.

La surcharge de l'enregistrement de la perfromance compteurs peuvent être décemment lente, mais n'est généralement pas une préoccupation, car il est destiné à produire qu'une fois au moment de l'installation parce que vous voulez changer de machine, à l'échelle de l'état. Il sera éclipsé par toute copie que vous faites. Il n'est pas généralement quelque chose que vous voulez faire lors de l'exécution. Ici, je fais référence à PerformanceCounterInstaller.

La surcharge de mise à jour d'un compteur de performance de la relève en général le coût de la réalisation d'un Contrefil opération sur la mémoire partagée. C'est plus lent que la normale d'accès à la mémoire, mais est un processeur primitif (c'est comment il obtient des opérations atomiques à travers l'ensemble du sous-système de mémoire, y compris les caches). En général, ce coût n'est pas élevé à s'inquiéter. Il pourrait être 10 fois normal de fonctionnement de la mémoire, potentiellement pire selon la mise à jour et que la contention est comme dans les threads et les Processeurs. Mais pensez à ceci, il est littéralement impossible de faire mieux que interloqué des opérations de la croix-processus de communication avec les mises à jour atomiques, et pas de verrous. Je me réfère ici à PerformanceCounter.D'incrémentation et de méthodes similaires.

La surcharge de la lecture d'un compteur de performance est généralement une lecture de la mémoire partagée. Comme d'autres l'ont dit, vous voulez de l'échantillon sur une période raisonnable (comme tout les autres d'échantillonnage) mais il suffit de penser de l'analyseur de performances et d'essayer de garder l'échantillonnage à l'échelle humaine (pensez secondes au lieu de quelques millisecondes) et vous proably n'aurez pas de problèmes.

Enfin, un appel à l'expérience: les compteurs de Performances sont si légers qu'ils sont utilisés partout dans Windows, à partir du noyau de pilotes pour les applications de l'utilisateur. Microsoft s'appuie sur eux.

Conseil: La vraie question avec les compteurs de performance est la courbe d'apprentissage de la compréhension (qui est modéré) et une mesure du droit des choses (semble facile, mais souvent vous vous trompez).

21voto

dpurrington Points 1129

L'impact sur les performances est négligeable lors de la mise à jour. L'intention de Microsoft est que vous écriviez toujours sur les compteurs de performance. C'est la surveillance (ou la capture) de ces compteurs de performance qui entraînera une dégradation des performances. Donc, uniquement lorsque vous utilisez quelque chose comme Perfmon pour capturer les données.

En effet, les objets de compteurs de performance auront uniquement pour effet de "le faire lorsque vous mesurez".

10voto

Eric Points 61

J'ai testé ces BEAUCOUP.

Sur un vieux compaq cadencé à 1 ghz 1 processeur de la machine, j'ai été en mesure de créer environ 10 000 compteurs et de les surveiller à distance pour environ 20% d'utilisation du PROCESSEUR. Ce ne sont pas des compteurs personnalisés, juste vérifier CPU ou quoi que ce soit.

Fondamentalement, vous pouvez surveiller tous les compteurs à zéro sur toute bonne machine plus récente avec très peu d'impact.

L'instanciation de l'objet peut prendre du temps tho, de quelques secondes à quelques minutes. Je vous suggère de multithread ce pour tous les compteurs vous recueillir, sinon votre application va rester là à jamais de création de ces objets. Pas sûr de ce que MS ne une fois que vous créez ce qui prend tant de temps, mais vous pouvez le faire pour 1000 compteurs avec 1000 threads en même temps, vous pouvez le faire pour 1 contre et 1 fil.

8voto

Giulio Vian Points 1959

Un compteur de performance est simplement un pointeur sur 4/8 octets dans la mémoire partagée (fichier mappé en mémoire), son coût est donc très similaire à celui de l'accès à une variable int / long.

2voto

Patrick Cuff Points 13362

Je suis d'accord avec famoushamsandwich (Mmmmm ... sandwich au jambon), mais j'ajouterais que tant que votre fréquence d'échantillonnage est raisonnable (5 secondes ou plus) et que vous surveillez un nombre raisonnable de compteurs, l'impact de la mesure est également négligeable ( dans la plupart des cas).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X