Hi:
Two questions about "%shader busy " metric calculation in Adreno Profiler.
1. For one frame, formular should be
%shader busy = (shader units active cycles) / (one frame cycles) (1)
or %shader busy = (shader units active cycles) / (GPU busy cycles in one frame) (2)
(1) and (2), which one is correct? or all wrong?
2. User manual said: %shader busy is Percentage of time that all Shader cores are busy.
For Adreno 330 on Nexus5, (1)How many shader cores in it?
(2) Suppose a case, 330 have 4 shader cores(just a suppose), an Application only use 3 of them which means 3 shader cores are always busy, and the other one is always idle. What valve shall we get from %shader busy metric? 0%, 75% or 100%?? I really puzzled by the description of "all Shader cores are busy" in document.
Please help
Thanks
It's the percentage of cycles that the shader units were busy divided by the total number of cycles that the GPU did work during the sampling period.
Thank you very much.
Could you please also kindly answer my second question:
2. User manual said: %shader busy is Percentage of time that all Shader cores are busy.
For Adreno 330 on Nexus5, (1)How many shader cores in it?
(2) Suppose a case, 330 have 4 shader cores(just a suppose), an Application only use 3 of them which means 3 shader cores are always busy, and the other one is always idle. What valve shall we get from %shader busy metric? 0%, 75% or 100%?? I really puzzled by the description of "all Shader cores are busy" in document.
For every cycle in which a shader unit is active, it increments a counter. All shader units share the same counter, so we take that value and divide it by the number of shader units (which is 4 on Adreno 330), and then divide that number by the total number of GPU cycles during the sampling period. With the Adreno 300 family, we are not able to track utilization of each individual shader unit because the hardware doesn't support it.
The situation you describe - where 3 units are 100% busy and the 4th is idle - never happens. Loads are distributed over all of the units, and when they are idle waiting for data, they are powered down. So a value of 75% would indicate that 25% of the time, all of the cores are idle waiting for data.
I got it. It's very useful for me.
Thank you very much!!