一見高いCPUだが高いメモリのANR分析



Anr Analysis Seemingly High Cpu High Memory



ANRに遭遇したときに、ANRエラーレポートを見て開始する方法がわからない場合があります。次に、ログをより深く分析する必要があります。 logcat、traces.txtなどから、trace.txtから何も表示されない場合は、logcat情報をかじるだけです。 、間違いなく何かを見つけるでしょう。 CPU消費のように見えるのは、実際にはメモリ不足が原因のANRであることを一度覚えておいてください。

  1. ANRが発生した場合、logcatエラーポイントは次のとおりです。
E ActivityManager: ANR in com.xin.rx E ActivityManager: PID: 22280 E ActivityManager: Reason: Broadcast of Intent { act=android.intent.action.TIME_TICK flg=0x50000014 (has extras) } E ActivityManager: Load: 17.51 / 15.34 / 12.68 #Here you can see that the CPU consumption is too high E ActivityManager: CPU usage from 0ms to 10918ms later (2019-05-16 20:24:11.724 to 2019-05-16 20:24:22.642) with 99% awake: E ActivityManager: 135% 3802/businessxin: 98% user + 37% kernel / faults: 15878 minor 463 major #Print memory swap E ActivityManager: 83% 173/kswapd0: 0% user + 83% kernel E ActivityManager: 26% 1619/system_server: 4.4% user + 21% kernel / faults: 27401 minor 1591 major E ActivityManager: 21% 376/mmc-cmdqd/0: 0% user + 21% kernel E ActivityManager: 16% 22280/com.xin.rx: 1.7% user + 14% kernel / faults: 23542 minor 2243 major E ActivityManager: 10% 26976/com.android.deskclock: 0.4% user + 9.7% kernel / faults: 17079 minor 1641 major E ActivityManager: 9.9% 833/mm-qcamera-daemon: 6% user + 3.9% kernel / faults: 7351 minor 10 major E ActivityManager: 7.4% 26972/app_process: 1.8% user + 5.5% kernel / faults: 22889 minor 1612 major E ActivityManager: 5.1% 2572/.dataservices: 0.4% user + 4.6% kernel / faults: 5551 minor 1004 major E ActivityManager: 4.3% 821/netd: 1.1% user + 3.1% kernel / faults: 942 minor E ActivityManager: 3.8% 3958/networkxin 2.5% kernel / faults: 6581 minor 150 major E ActivityManager: 3.2% 2448/VosRXThread: 0% user + 3.2% kernel E ActivityManager: 3% 2031/com.android.phone: 0% user + 3% kernel / faults: 10635 minor 514 major E ActivityManager: 2.9% 1889/com.android.systemui: 0.3% user + 2.6% kernel / faults: 7938 minor 316 major E ActivityManager: 2.8% 2447/VosTXThread: 0% user + 2.8% kernel E ActivityManager: 2.7% 404/logd: 0.2% user + 2.4% kernel / faults: 1720 minor 9 major E ActivityManager: 2.6% 9183/kworker/u16:1: 0% user + 2.6% kernel E ActivityManager: 2.4% 30214/kworker/u16:2: 0% user + 2.4% kernel E ActivityManager: 2.4% 21442/kworker/u16:7: 0% user + 2.4% kernel E ActivityManager: 2.1% 4023/business2: 0.8% user + 1.3% kernel / faults: 5682 minor 88 major E ActivityManager: 1.7% 22277/kworker/u16:3: 0% user + 1.7% kernel E ActivityManager: 1.2% 387/kworker/5:1H: 0% user + 1.2% kernel E ActivityManager: 1.1% 50/ksoftirqd/5: 0% user + 1.1% kernel E ActivityManager: 1.1% 2612/com.qualcomm.qti.services.secureui:sui_service: 0.3% user + 0.8% kernel / faults: 2156 minor 200 major E ActivityManager: 0% 2602/com.oma.drm.server: 0% user + 0% kernel / faults: 2467 minor 129 major E ActivityManager: 0% 2580/com.qualcomm.qti.loadcarrier: 0% user + 0% kernel / faults: 2221 minor 129 major E ActivityManager: 0.5% 6/kworker/u16:0: 0% user + 0.5% kernel E ActivityManager: 0.5% 2559/com.android.nfc: 0.2% user + 0.2% kernel / faults: 2000 minor 97 major E ActivityManager: 0.4% 822/rild: 0% user + 0.4% kernel / faults: 571 minor 51 major E ActivityManager: 0.4% 1943/sdcard: 0% user + 0.4% kernel / faults: 714 minor 3 major E ActivityManager: 0.4% 4005/streamaxfcgi: 0.2% user + 0.1% kernel / faults: 1959 minor 20 major E ActivityManager: 0.3% 380/usb-storage: 0% user + 0.3% kernel E ActivityManager: 0.2% 7/rcu_preempt: 0% user + 0.2% kernel E ActivityManager: 0.2% 61/rcuop/6: 0% user + 0.2% kernel E ActivityManager: 0.2% 66/ksoftirqd/7: 0% user + 0.2% kernel E ActivityManager: 0.2% 706/jbd2/dm-0-8: 0% user + 0.2% kernel E ActivityManager: 0.2% 26127/kworker/5:2: 0% user + 0.2% kernel E ActivityManager: 0.1% 45/rcuop/4: 0% user + 0.1% kernel E ActivityManager: 0.1% 69/rcuop/7: 0% user + 0.1% kernel E ActivityManager: 0.1% 381/mmcqd/1: 0% user + 0.1% kernel E ActivityManager: 0% 414/debuggerd: 0% user + 0% kernel / faults: 427 minor 41 major E ActivityManager: 0.1% 415/debuggerd64: 0% user + 0.1% kernel / faults: 413 minor 16 major E ActivityManager: 0.1% 546/surfaceflinger: 0% user + 0.1% kernel / faults: 426 minor 20 major E ActivityManager: 0.1% 570/logcat: 0.1% user + 0% kernel / faults: 1055 minor 1 major E ActivityManager: 0% 2444/VosWDThread: 0% user + 0% kernel E ActivityManager: 0.1% 3742/logcat: 0% user + 0% kernel / faults: 1062 minor 1 major E ActivityManager: 0.1% 22285/kworker/4:1: 0% user + 0.1% kernel E ActivityManager: 0.1% 26585/kworker/0:0: 0% user + 0.1% kernel E ActivityManager: 0% 3/ksoftirqd/0: 0% user + 0% kernel E ActivityManager: 0% 10/rcuop/0: 0% user + 0% kernel E ActivityManager: 0% 18/ksoftirqd/1: 0% user + 0% kernel E ActivityManager: 0% 29/rcuop/2: 0% user + 0% kernel E ActivityManager: 0% 34/ksoftirqd/3: 0% user + 0% kernel E ActivityManager: 0% 37/rcuop/3: 0% user + 0% kernel E ActivityManager: 0% 42/ksoftirqd/4: 0% user + 0% kernel E ActivityManager: 0% 53/rcuop/5: 0% user + 0% kernel E ActivityManager: 0% 337/irq/162-spdm_bw: 0% user + 0% kernel E ActivityManager: 0% 405/kworker/0:1H: 0% user + 0% kernel E ActivityManager: 0% 416/vold: 0% user + 0% kernel / faults: 418 minor 11 major E ActivityManager: 0% 422/kworker/6:1H: 0% user + 0% kernel E ActivityManager: 0% 545/servicemanager: 0% user + 0% kernel / faults: 778 minor 8 major E ActivityManager: 0% 703/kworker/1:1H: 0% user + 0% kernel E ActivityManager: 0% 722/ptt_socket_app: 0% user + 0% kernel / faults: 192 minor 8 major E ActivityManager: 0% 724/cnss_diag: 0% user + 0% I art : Wrote stack traces to '/data/anr/traces.txt' I art : Wrote stack traces to '/data/anr/traces.txt' E pttSocketApp: aniAsfIpc.c:971 Error(105):Recv failed, ipcPtr [0xad631000], sd 4 E pttSocketApp: pttSocketApp.c:759 IPC Recv failed

Androidアプリケーションから出力されたこのログのANRを見ましたが、このアプリケーションの問題のようには見えません。



  1. ANR情報の表示:
  • cpu関連の情報、CPU使用率があり、その時点でcpuの負荷が高すぎ、アプリケーションのタイムスライスが小さすぎ、タイムリーでない実行によって引き起こされた錯覚ANRを示していることがわかります。
  • kswapd0を見てください:0%ユーザー+ 83%カーネル:スワップパーティションには役割があります。メモリが不足している場合、ハードディスクの一部が仮想メモリとして使用されますが、kswapd0プロセスは通常メモリ不足です。スワップパーティションとメモリページングを使用する操作とデータ交換はCPUを大量に消費するため、CPUの負荷が高くなります。

メモリ不足のためにCPU負荷が高い理由はわかっていますが、他に情報がないため、分析を続ける必要があります

  1. ANRログの時点から楽しみにしてください
ActivityManager: Low on memory: ActivityManager: ntv N 763042: networkxin (pid 3958) native ActivityManager: ntv N 61606: businessxin (pid 3802) native ActivityManager: ntv N 42253: mm-qcamera-daemon ( 3,724K memtrack) (pid 833) native ActivityManager: ntv N 29819: surfaceflinger ( 17,808K memtrack) (pid 546) native ActivityManager: ntv N 10412: media.codec ( 504K memtrack) (pid 817) native ActivityManager: ntv N 7871: app_process (pid 27764) native ActivityManager: ntv N 7434: netmgrd (pid 908) native ActivityManager: ntv N 7269: audioserver (pid 808) native ActivityManager: ntv N 6645: rild (pid 822) native ActivityManager: ntv N 6068: (pid 27772) native ActivityManager: ntv N 5793: logd (pid 404) native ActivityManager: ntv N 4913: business2 (pid 4023) native ActivityManager: ntv N 4770: cnd (pid 720) native ActivityManager: ntv N 4691: zygote (pid 807) native ActivityManager: ntv N 4275: com.android.calendar (pid 27786) native ActivityManager: ntv N 4131: mm-pp-dpps (pid 575) native ActivityManager: ntv N 4095: zygote64 (pid 743) native ActivityManager: ntv N 4026: qseeproxydaemon (pid 831) native ActivityManager: ntv N 3758: streamaxfcgi (pid 4005) native ActivityManager: ntv N 3387: xtwifi-client (pid 1534) native ActivityManager: ntv N 3333: cameraserver (pid 811) native ActivityManager: ntv N 2933: daemon (pid 1151) native ActivityManager: ntv N 2735: media.extractor (pid 819) native ActivityManager: ntv N 2525: vold (pid 416) native ActivityManager: ntv N 2124: mediaserver (pid 820) native ActivityManager: ntv N 2033: slim_daemon (pid 1535) native ActivityManager: ntv N 2021: thermal-engine (pid 731) native ActivityManager: ntv N 1998: audiod (pid 837) native ActivityManager: ntv N 1569: dpmd (pid 846) native ActivityManager: ntv N 1563: wpa_supplicant (pid 2470) native ActivityManager: ntv N 1556: /init (pid 1) native ActivityManager: ntv N 1554: imsdatadaemon (pid 878) native ActivityManager: ntv N 1420: drmserver (pid 814) native ActivityManager: ntv N 1392: netd (pid 821) native ActivityManager: ntv N 1382: sdcard (pid 1943) native ActivityManager: ntv N 1351: mediadrmserver (pid 818) native ActivityManager: ntv N 1309: lowi-server (pid 1532) native ActivityManager: ntv N 1222: mdtpd (pid 838) native ActivityManager: ntv N 1150: ipacm (pid 871) native ActivityManager: ntv N 1122: time_daemon (pid 1764) native ActivityManager: ntv N 1084: cnss_diag (pid 724) native ActivityManager: ntv N 1047: cnss-daemon (pid 26777) native ActivityManager: ntv N 1038: qti (pid 894) native ActivityManager: ntv N 978: wcnss_service (pid 733) native ActivityManager: ntv N 958: adsprpcd (pid 738) native ActivityManager: ntv N 956: commonfs (pid 4273) native ActivityManager: ntv N 942: qcom-system-daemon (pid 717) native ActivityManager: ntv N 941: nginx: worker process (pid 3973) native ActivityManager: ntv N 939: sensors.qcom (pid 631) native ActivityManager: ntv N 918: loc_launcher (pid 827) native ActivityManager: ntv N 879: pm-service (pid 542) native ActivityManager: ntv N 874: ATFWD-daemon (pid 829) native ActivityManager: ntv N 866: keystore (pid 816) native ActivityManager: ntv N 854: xtwifi-inet-agent (pid 1533) native ActivityManager: ntv N 766: gatekeeperd (pid 839) native ActivityManager: ntv N 758: perfd (pid 427) native ActivityManager: ntv N 746: commonfs (pid 4041) native ActivityManager: ntv N 738: installd (pid 815) native ActivityManager: ntv N 736: lmkd (pid 544) native ActivityManager: ntv N 726: qseecomd (pid 606) native ActivityManager: ntv N 726: imsqmidaemon (pid 734) native ActivityManager: ntv N 706: pm-proxy (pid 576) native ActivityManager: ntv N 690: servicemanager (pid 545) native ActivityManager: ntv N 679: esepmdaemon (pid 538) native ActivityManager: ntv N 672: ueventd (pid 382) native ActivityManager: ntv N 665: ptt_socket_app (pid 722) native ActivityManager: ntv N 610: logcat (pid 570) native ActivityManager: ntv N 610: ipacm-diag (pid 848) native ActivityManager: ntv N 601: rmt_storage (pid 533) native ActivityManager: ntv N 595: tftp_server (pid 534) native ActivityManager: ntv N 592: dpmd (pid 825) native ActivityManager: ntv N 585: logcat (pid 3742) native ActivityManager: ntv N 567: msm_irqbalance (pid 898) native ActivityManager: ntv N 513: sh (pid 428) native ActivityManager: ntv N 7453: (Other native) ActivityManager: sys P 56781: system (pid 1619) fixed ActivityManager: pers P 31196: com.android.systemui ( 3,068K memtrack) (pid 1889) fixed ActivityManager: pers P 19700: com.android.phone (pid 2031) fixed ActivityManager: pers P 9098: .dataservices (pid 2572) fixed ActivityManager: pers P 7617: com.android.nfc (pid 2559) fixed ActivityManager: pers P 6229: com.qualcomm.qti.services.secureui:sui_service (pid 2612) fixed ActivityManager: pers P 6186: com.oma.drm.server (pid 2602) fixed ActivityManager: pers P 5795: com.qualcomm.qti.loadcarrier (pid 2580) fixed ActivityManager: 1199160: TOTAL ( 25,104K memtrack) ActivityManager: MemInfo: 124,172K slab, 45,092K shmem, 20,048K vm alloc, 16,092K page tables 22,640K kernel stack ActivityManager: 1,096K buffers, 115,140K cached, 45,388K mapped, 7,772K free ActivityManager: ZRAM: 320,124K RAM, 524,284K swap total, 0K swap free ActivityManager: Free RAM: 78,620K ActivityManager: Used RAM: 1,427,204K ActivityManager: Lost RAM: 29,608K ActivityManager: Process com.xin.rx (pid 27772) has died

AMSがメモリ不足メッセージを出力し、ここのnetworkxinのように、どのプロセスがそのような高メモリを持っているかを確認するには、その時点のシーンを分析して、そのプロセスの高メモリの理由を見つける必要があります。



ps:通常、このメモリ不足は複数回報告され、数回前方に検索できます。一般に、メモリリークが発生している可能性のあるプロセスを見つけることができ、メモリは増加しています。