2016-10-21 2 views
2

Ich bin an der aus dem folgenden Befehl „adb shell dumpsys cpuinfo“, wo ich möchte wissen, ob diese gemeldeten Werte mittelt im Vergleich zu früheren Zeit sind?dumpsys CPUInfo in Android: Die Interpretation der Ergebnisse dieses Befehls

D:\Android_Dev\Android_sdk\platform-tools>adb shell dumpsys cpuinfo 
Load: 4.03/3.43/2.44 
CPU usage from 23770ms to 16630ms ago: 
    58% 1844/logd: 58% user + 0% kernel/faults: 3 minor 
    50% 3895/com.google.android.wearable.app:ui: 41% user + 9.3% kernel/faults: 1798 minor 
    26% 1864/adbd: 2.8% user + 23% kernel/faults: 1243 minor 
    22% 4880/logcat: 7.8% user + 15% kernel 
    9.7% 7834/kworker/0:2: 0% user + 9.7% kernel 
    4.9% 2198/system_server: 2.6% user + 2.2% kernel/faults: 76 minor 

Meine Fragen sind wie folgt:

  1. was repräsentieren hier nicht Fehler?
  2. was macht diese Prozentwerte darstellen, da sie zu 100 addieren sich nicht?
  3. sind diese Prozentwerte Mittelwerte der jeweiligen Prozesse, wie beispielsweise 58% für logd?
  4. CPU usage from 23770ms to 16630ms ago: was bedeutet das? Bedeutet es, dass diese Werte den Durchschnitt der letzten 23 bis 16 Sekunden darstellen?
+0

Mögliche Duplikat [Interpretation dumpsys cpuinfo] (http://stackoverflow.com/questions/24612982/interpretieren-dumpsys-cpuinfo) – Toris

+0

@Toris Es ist kein Duplikat dieser Frage. Das habe ich schon. Dort gibt es keine Erklärung für all diese 4 Fragen. Ich habe die dort genannten Links gründlich durchgespielt. Deshalb habe ich den Ladungsteil entfernt, wie es dort erklärt wird. – utengr

Antwort

4
adb shell dumpsys cpuinfo 

zeigt Informationen aus/proc/stat und/proc/(pid)/stat

1.what hat Fehler hier vertreten?

Seitenfehler.
"geringfügig" für kleinere Fehler.

von ProcessCpuTracker.java

collectStats(...) { 
    ... 
    final long[] procStats = mProcessStatsData; 
    if (!Process.readProcFile(st.statFile.toString(), 
    PROCESS_STATS_FORMAT, null, procStats, null)) { 
    continue; 
    } 
    ... 
    final long minfaults = procStats[PROCESS_STAT_MINOR_FAULTS]; 
    final long majfaults = procStats[PROCESS_STAT_MAJOR_FAULTS]; 
} 

private static final int[] PROCESS_STATS_FORMAT = new int[] { 
    ... 
    PROC_SPACE_TERM|PROC_OUT_LONG,     // 10: minor faults 
    ... 
    PROC_SPACE_TERM|PROC_OUT_LONG,     // 12: major faults 
    ... 
}; 

Sie sind/proc/(pid)/STAT-Daten [9] und die Daten [11].


2.sie addieren sich nicht zu 100

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
(verlinkte Seite von interpreting dumpsys cpuinfo)

Mit Multi-Prozessor-System kann Summe mehr als 100 %.


3.Sind diese Prozentwerte Mittelwerte der jeweiligen Prozesse

von ProcessCpuTracker.java

printProcessCPU(...) { 
    ... 
    printRatio(pw, user+system+iowait+irq+softIrq, totalTime); 
    ... 
} 

2. Parameter (User + ...)/3. Parameter (totaltime) ist gedruckt.


4.CPU Nutzung von 23770ms 16630ms vor

Time Zeiten basieren, wenn Stat Daten im Cache von ProcessCpuTracker aktualisiert wird.

von ProcessCpuTracker.java

update() { 
    final long nowUptime = SystemClock.uptimeMillis(); 
    ... 
    mLastSampleTime = mCurrentSampleTime; 
    mCurrentSampleTime = nowUptime; 
    ... 
} 

[Verwandte Quellen]
https://android.googlesource.com/platform/frameworks/native/+/master/cmds/dumpsys/dumpsys.cpp
main() => service-> Dump()

https://github.com/android/platform_frameworks_base/blob/master/services/core/java/com/android/server/am/ActivityManagerService.java
CpuBinder.dump()
genannt wird mProcessCpuThread Updates stat Zwischenspeicher. (UpdateCpuStatsNow() aufgerufen wird)

https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/os/ProcessCpuTracker.java
printCurrentLoad() druckt CPU-Last
printCurrentState() druckt pro Prozess Statistik

+0

Vielen Dank Toris. Das habe ich gesucht. – utengr

+0

Ich frage mich immer noch, ob ich irgendwie die Zeit dieser Zustände ändern kann wie letzte Dumpsys für die letzten 5 Minuten usw. – utengr

+0

@ zub12 wenn dumpsys eine solche Option hat, ist es das Beste, aber aus Ausgaben berechnen oder Informationen von/proc/nehmen pid)/stat ist die Antwort für jetzt, denke ich. – Toris

Verwandte Themen