Hi,
On Wed, Jun 16, 2021 at 09:54:23AM +0800, liuqi (BA) wrote:
On 2021/6/15 17:35, Will Deacon wrote:
On Tue, Jun 15, 2021 at 04:57:09PM +0800, liuqi (BA) wrote:Maybe I didn’t express it clearly.
On 2021/6/12 0:23, Will Deacon wrote:
On Mon, May 31, 2021 at 09:32:31PM +0800, Qi Liu wrote:Our PMU hardware support 8 sets of counters to count bandwidth, latency and
+ /* Process data to set unit of latency as "us". */
+ if (is_latency_event(idx))
+ return div64_u64(data * us_per_cycle, data_ext);
+
+ if (is_bus_util_event(idx))
+ return div64_u64(data * us_per_cycle, data_ext);
+
+ if (is_buf_util_event(idx))
+ return div64_u64(data, data_ext * us_per_cycle);
Why do we need to do all this division in the kernel? Can't we just expose
the underlying values and let userspace figure out what it wants to do with
the numbers?
utilization events.
For example, when users set latency event, common counter will count delay
cycles, and extern counter count number of PCIe packets automaticly. And we
do not have a event number for counting number of PCIe packets.
So this division cannot move to userspace tool.
Why can't you expose the packet counter as an extra event to userspace?
As there is no hardware event number for PCIe packets counting, extern
counter count packets *automaticly* when latency events is selected by
users.
This means users cannot set "config=0xXX" to start packets counting event.
So we can only get the value of counter and extern counter in driver and do
the division, then pass the result to userspace.
I still think it would be ideal if we could expose both values to userspace
rather than combine them somehow. Hmm. Anyway...
I struggled to figure out exactly what's being counted from the
documentation patch (please update that). Please can you explain exactly
what appears in the HISI_PCIE_CNT and HISI_PCIE_EXT_CNT registers for the
different modes of operation? Without that, the ratios you've chosen to
report seem rather arbitrary.
I also couldn't figure out how the latency event works. For example, I waslatency is not a filter, PCIe PMU has a group of lactency events, their event number are within the latency_events_list, and the above explains how latency events work.
assuming it would be a filter (a bit like the length), so you could say
things like "I'm only interested in packets with a latency higher than x"
but it doesn't look like it works that way.
Thanks,
Will
.