Wie man höhere Genauigkeit der "CPU%" als Befehl von OBEN?

Wenn ich OBEN den Befehl hatte, konnte ich die folgende info:

shell@android:/ $ 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

Können wir sehen, die CPU% ist die Runde zu integer, gibt es eine Möglichkeit, ich könnte ein Prozess ist CPU% mit höherer Präzision?

-- Erläuterungen auf der bounty -- Alex

Die Frage bezieht sich auf Android-system, und vorzugsweise auf einem nicht-gerooteten Gerät. Während Android bietet erweiterte profiling-Techniken für Java-Anwendungen, tools für native code (C++) begrenzt sind. top Befehl auf Android ermöglicht das anzeigen der Statistiken für alle threads in dem system ausgeführt, sowohl von Java-threads-und C++ - threads. Ich bin auf der Suche nach einer Antwort, die helfen, mit der folgenden quest:

Meine app verwendet, die 2% CPU, wenn es inaktiv im hintergrund, während es sollte unter 0.1%. Wenn ich ausführen top -t bekomme ich 0% für alle 15 threads, die gehören zu meinem Prozess (einige threads sind Java-threads, z.B. den Main-UI-thread; andere sind pthreads, dass nie befestigen JVM). Wie kann ich erraten, welche Gewinde frisst den Akku auf?

Ich würde mich freuen, um noch mehr details über diese unerwartete Aktivität, und Android bietet große Helfer wie TraceView für Java-threads. Jede Einsicht bezüglich der Werkzeuge für native code wird sehr geschätzt werden.

  • würde nicht viel Unterschied....
  • Ja, es macht keinen Unterschied. Ansonsten, bitte helfen Sie mir, ein Profil der Anwendung, die mit 2% die CPU im hintergrund. Wenn ich top -t, bekomme ich 0% für alle 15 threads, die gehören zu meinem Prozess. Wie kann ich erraten, welche Gewinde frisst den Akku auf?
  • Ich habe nicht gesagt, es würde keinen Unterschied machen; ich sagte: "würde nicht viel Unterschied"
  • Mitch hat Recht. Sie können nicht wirklich brauchen, die Präzision. Was ist, wenn 10 von 15 0.0% CPU-Auslastung. Die meisten der Zeit, ist der Fall mit der hintergrund-Prozesse. <1% ist gut genug für die Nichtbeachtung der non-CPU-intensive Prozesse.
  • user568109: 15 threads, die alle 0% anzeigen. Aber zusammen ergeben Sie geben Recht deutliche 2%. Einige threads sind Java, und es gibt SDK-tools zu überwachen, Ihr Verhalten. Andere sind C++, und ich wollte aus einem einfachen top Befehl genug hibts, mir zu helfen, finden Sie die 2, die verantwortlich sind für die meisten Konsum.
  • Ich werde Sie nicht posten, weil ich nicht haben einen Weg, um zu testen, aber Sie sollten in der Lage sein, um rohe Informationen über die einzelnen thread ' s cpu-Nutzung in der Uhr tickt in /proc/[pid]/task/[thread name]. Das ist so genau, wie Sie in der Lage zu bekommen. Sehen http://man7.org/linux/man-pages/man5/proc.5.html.
  • "Wie kann ich erraten, welche Gewinde frisst den Akku auf?" -- ähm, wäre es nicht der thread nicht blockiert sehr lange (z.B., polling, busy-waiting)? Ist das nicht eine Frage der code-review, um so mehr, als Werkzeuge?
  • definitiv, das ist ein bug in meiner app. Aber ein komplettes code-review, dass würde das Problem beheben, ist jenseits meiner Fähigkeiten. Wenn ich könnte, konzentrieren Sie sich auf einen thread ist, wäre es möglich.
  • bitte geben Sie eine Antwort mit dem Inhalt Ihres Kommentars, die es verdient, die bounty. Die Befehlszeile ist adb shell cat /proc/${pid}/task/*/stat | awk -F\ '{print $1, $14}' (beachten Sie, dass awk auf dem host ausgeführt wird).
  • Okay danke. Ich habe einen Artikel veröffentlichen. Es funktioniert auf meinem Rechner auch.

InformationsquelleAutor JackWM | 2013-03-01
Schreibe einen Kommentar