2008-09-19 33 views
1

J'ai une application winforms qui est normalement à environ 2-4% CPU. Nous voyons des pointes jusqu'à 27% de CPU pour un nombre limité de fois. Quel est le meilleur outil de profilage pour déterminer ce qui cause réellement ce pic? Nous utilisons dottrace mais je ne vois pas comment mapper exactement cela aux pointes de CPU?Utilisation de profilage d'application Winform/spikes.

apprécie l'aide

Répondre

2

Je l'ai utilisé 2 outils de profilage avant - ANTS le profileur de Redgate, et construit dans le profileur trouvés dans Visual Studio Team System.

Cela fait un certain temps que j'ai utilisé le profileur de RedGate (http://www.red-gate.com/products/ants_profiler/index.htm), bien que j'aie utilisé la version intégrée de Visual Studio 2008 assez récemment. Cela étant dit, j'ai trouvé que le produit RedGate semblait plus intuitif à utiliser. Une chose qui m'a frustré quand j'ai utilisé le produit RedGate était que je ne pouvais pas ordonner au profiler de profiler mon code à partir d'un certain point - j'ai eu un coup de performance qui n'a pas pu être atteint jusqu'à ce qu'une bonne quantité de code déjà exécuté et donc pollué mes résultats. Ils peuvent avoir ajouté cette fonctionnalité depuis lors.

La version intégrée pour Visual Studio est uniquement disponible dans leurs versions très haut de gamme du produit. Quelqu'un me corrige si je me trompe, mais je ne pense pas que même la version "Professional" ait le profiler. J'utilise actuellement Team System Developer Edition, qui ne ont les outils d'analyse de code. Cependant, une chose que fait la version VS est de vous permettre de mettre en pause le profilage, et même de démarrer votre application avec le profilage en pause, afin que vous puissiez vraiment vous concentrer sur la performance de quelque chose de très spécifique. Cela peut être extrêmement utile lorsque vous essayez de comprendre les résultats de l'analyse.

EDIT: Les deux outils indiquent l'utilisation de la mémoire, le nombre de fois qu'une méthode spécifique a été appelée et le temps passé dans chaque méthode. Ce qu'ils ne font pas, au meilleur de ma connaissance, est de montrer l'utilisation du processeur à un moment donné. Cependant, il existe probablement de fortes corrélations entre l'utilisation du processeur et le temps passé dans un bloc de code donné. Si vous pouvez dupliquer les pics de CPU de manière cohérente en invoquant certaines actions dans l'application, alors je vais essayer de mettre la main sur le profileur VS, démarrer l'application avec une pause de profilage, activer le profilage juste avant de faire quoi que ce soit entraîne généralement le pic et examine ces résultats. Cela suppose bien sûr que vous ayez un comportement déterministe pour recréer les pointes. Si ce n'est pas le cas ... vous pourriez considérer les processus filetés ou la récupération de place comme un candidat pour votre performance.

0

J'ai trouvé que DevPartner de Compuware http://www.compuware.com/ était un excellent outil de profilage. Malheureusement, il semble qu'à l'heure actuelle ils ne supportent pas VS 2008.

0

De plus, cette pointe est-elle vraiment inquiétante? Et sur quel type de matériel voyez-vous cela? Une pointe à 27% sur un processeur quad-core pourrait être source de soucis, mais pas sur un P3 800Mhz.

Combien de temps reste-t-il surchargé? @Matt a un excellent point que la collecte des ordures pourrait être en faute. Ou potentiellement échanger sur le disque.

Est-ce que cela affecte les performances globales du système pendant une longue période, ou juste quelques secondes de temps en temps?

Non que la recherche d'une solution à ce problème ne soit pas préoccupante, mais quelle est son importance?

0

Vous pouvez également en apprendre beaucoup sur votre application avec Sysinternal Process Explorer et Perfmon (comme le pic se produit sur un CPG).

0

Si votre application est simple fil, the best profiling tool is your IDE.

Ajouté: Peut-être il est évident, mais pour cent l'utilisation du processeur est pas un concept très clair. Lorsque votre programme est en cours d'exécution, il est à 100%. Quand ce n'est pas le cas, c'est à 0%. Les pourcentages partiels doivent donc être basés sur une sorte de lissage intégral dans le temps. Quoi qu'il en soit, vous voyez un pic. Certains profileurs vous laissent rentrer dans un tel pic et analysent juste cet intervalle.

0

Le meilleur qui vous montrera les pics et vous permet d'explorer pour voir ce qui le cause est des outils Xperf/Xperfview.

Découvrez http://msdn.microsoft.com/en-us/performance/cc825801.aspx

et http://msdn.microsoft.com/en-us/library/cc305221.aspx

ces outils sont basés sur la technologie ETW (Event Tracing for Windows), ce qui vous donne super vue précise de ce qui se passe pour votre processus et pour la l'ensemble du système.

Ces outils vous permettent également de capturer des traces pour l'analyse post-mortem, ainsi que d'attacher/détacher des entités. J'espère que cela aide.

+0

Cette information vous a-t-elle été utile? – mfawzymkh