markzhai / markzhai/AndroidPerformanceMonitor

出现堆栈不均匀或丢失

Open
#114 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
6.7k
Forks
1k
PR merge metrics
No merged PRs in 30d

Description

比如这个日志:

**********************
2017-11-14 22:51:21(write log time)

qua = unknown
versionName = 1.0
versionCode = 10127
imei = null
uid = uid
network = unknown
model = T68
api-level = 23 6.0.1
cpu-core = 4
process = com.evideostb.kdroid.app.demand
freeMemory = 168992
totalMemory = 787472
time = 5692
thread-time = 130
time-start = 11-14 22:51:13.247
time-end = 11-14 22:51:18.939
cpu-busy = false
cpu-rate = 11-14 21:10:36.770 cpu:62% app:8596% [user:152940% system:135920% ioWait:29926% ]
11-14 21:29:24.307 cpu:95% app:1% [user:31% system:20% ioWait:42% ]
11-14 21:48:01.918 cpu:73% app:0% [user:18% system:21% ioWait:33% ]
11-14 22:50:01.742 cpu:80% app:0% [user:4% system:11% ioWait:62% ]
11-14 22:50:02.744 cpu:63% app:0% [user:0% system:5% ioWait:57% ]
11-14 22:51:19.084 cpu:75% app:0% [user:13% system:17% ioWait:42% ]

stack = 11-14 22:51:15.672

java.lang.String.hashCode(String.java:615)
java.lang.String.equals(String.java:439)
android.content.res.ColorStateList.createFromXmlInner(ColorStateList.java:216)
android.content.res.ColorStateList.createFromXml(ColorStateList.java:201)
android.content.res.Resources.loadColorStateListForCookie(Resources.java:2746)
android.content.res.Resources.loadColorStateList(Resources.java:2699)
android.content.res.TypedArray.getColor(TypedArray.java:439)
android.widget.TextView.<init>(TextView.java:738)
android.widget.TextView.<init>(TextView.java:671)
android.widget.TextView.<init>(TextView.java:667)
java.lang.reflect.Constructor.newInstance(Native Method)
android.view.LayoutInflater.createView(LayoutInflater.java:619)
com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
android.view.LayoutInflater.onCreateView(LayoutInflater.java:694)
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
android.view.LayoutInflater.inflate(LayoutInflater.java:515)
android.view.LayoutInflater.inflate(LayoutInflater.java:423)
com.evideostb.kdroid.app.demand.dialog.KgoSearchDialog$SingerAdapter.onCreateViewHolder(KgoSearchDialog.java:638)
com.evideostb.kdroid.app.demand.dialog.KgoSearchDialog$SingerAdapter.onCreateViewHolder(KgoSearchDialog.java:629)
android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5223)
android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4449)
android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4359)
android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:438)
android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)
android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562)
android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171)
android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900)
android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
android.view.Choreographer.doCallbacks(Choreographer.java:670)
android.view.Choreographer.doFrame(Choreographer.java:606)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper.loop(Looper.java:148)
android.app.ActivityThread.main(ActivityThread.java:5453)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

11-14 22:51:18.861

android.os.Parcel.obtain(Parcel.java:317)
android.view.IWindowSession$Stub$Proxy.finishDrawing(IWindowSession.java:1083)
android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2472)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
android.view.Choreographer.doCallbacks(Choreographer.java:670)
android.view.Choreographer.doFrame(Choreographer.java:606)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper.loop(Looper.java:148)
android.app.ActivityThread.main(ActivityThread.java:5453)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

配置provideBlockThreshold=provideDumpInterval=1000ms,调用耗时5.6s,预期能看见5个堆栈,但是这里只看到了2个,感觉有丢失。

是不是因为CpuSampler在打开/proc文件时有可能被卡住?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by examining the CpuSampler behavior while opening /proc and reproduce the reported configuration: provideBlockThreshold=provideDumpInterval=1000ms with a 5.6-second call. Compare the expected five stack samples with the two shown in the report; done means identifying whether sampling is blocked or lost and documenting or fixing the cause.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.