Comment faire pour obtenir une plus grande précision de “CPU%” que celle du HAUT commandement?

Lorsque j'utilise la commande TOP, j'ai pu obtenir les informations suivantes:

[email protected]:/ $ top -n 1                                                     

User 31%, System 10%, IOW 0%, IRQ 0%
User 346 + Nice 10 + Sys 120 + Idle 637 + IOW 6 + IRQ 0 + SIRQ 2 = 1121

  PID PR CPU% S  #THR     VSS     RSS PCY UID      Name
  481  1  26% S    89 762832K  81688K  fg system   system_server
 1699  0   5% S    27 676472K  39092K  fg u0_a72   wm.cs.systemmonitor
11243  0   3% S    28 673140K  29796K  bg u0_a111  com.weather.Weather
13327  2   1% S    23 680472K  35844K  bg u0_a83   com.rhmsoft.fm
  659  0   1% S    17 663044K  33136K  bg u0_a13   android.process.media
20260  1   0% R     1   1208K    508K     shell    top

Nous pouvons voir la CPU% est arrondie à l'entier, est-il possible que je puisse obtenir un processus de CPU% avec plus de précision?

-- Précisions sur la générosité -- Alex

La question fait référence à système Android, et de préférence à un non-dispositif enracinée. Alors que Android offre des fonctions avancées des techniques de profilage pour les applications Java, des outils pour le code natif (C++) sont limitées. haut commande sur Android vous permet d'afficher les statistiques pour tous les threads en cours d'exécution dans le système, les deux threads Java et C++ threads. Je suis à la recherche d'une réponse qui va aider à la quête suivante:

Mon application utilise 2% de CPU quand il est inactif en arrière-plan, alors qu'il devrait être en dessous de 0,1%. Si je run top -t, j'obtiens 0% pour l'ensemble des 15 threads qui appartiennent à mon processus (certains threads les threads Java, par exemple, la main, le thread d'INTERFACE utilisateur; d'autres sont pthreads que jamais attacher à la JVM). Comment puis-je suppose que le thread qui mange de la batterie?

Je serais heureux d'obtenir encore plus de détails à ce sujet inattendu de l'activité, et Android offre une grande helpers comme TraceView pour les threads Java. Toute réflexion sur les outils de code natif sera fortement appréciée.

ne ferait pas beaucoup de différence....
Oui, c'est de faire la différence. Sinon, merci de m'aider le profil de l'application qui utilise 2% de CPU en arrière-plan. Quand je lance top -t, j'obtiens 0% pour l'ensemble des 15 threads qui appartiennent à mon processus. Comment puis-je suppose que le thread qui mange de la batterie?
user568109: de 15 threads, tous à 0%. Mais ensemble, ils donnent tout à fait significative de 2%. Certains threads de Java, et il y a des outils du kit SDK de surveiller leur comportement. D'autres sont en C++, et je voulais l'obtenir à partir d'une simple top commande assez hibts pour m'aider à trouver les 2 qui sont responsables de la plupart de la consommation.
définitivement, c'est un bug dans mon application. Mais une complète révision du code qui permettrait de résoudre la question est au-delà de mes capacités. Si je pouvais me concentrer sur un seul thread, il deviendrait possible.
veuillez fournir une Réponse avec le contenu de votre commentaire, il mérite le bounty. La ligne de commande est adb shell cat /proc/${pid}/task/*/stat | awk -F\ '{print $1, $14}' (notez que awk s'exécute sur l'ordinateur hôte).

OriginalL'auteur JackWM | 2013-03-01