All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Deacon <will@kernel.org>
To: "liuqi (BA)" <liuqi115@huawei.com>
Cc: Linuxarm <linuxarm@huawei.com>,
	mark.rutland@arm.com, bhelgaas@google.com,
	linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, zhangshaokun@hisilicon.com
Subject: Re: [PATCH v6 2/2] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU
Date: Wed, 16 Jun 2021 14:42:58 +0100	[thread overview]
Message-ID: <20210616134257.GA22905@willie-the-truck> (raw)
In-Reply-To: <8e15e8d6-cfe8-0926-0ca1-b162302e52a5@huawei.com>

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:
> > > On 2021/6/12 0:23, Will Deacon wrote:
> > > > On Mon, May 31, 2021 at 09:32:31PM +0800, Qi Liu wrote:
> > > > > +	/* 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?
> > > > 
> > > Our PMU hardware support 8 sets of counters to count bandwidth, latency and
> > > 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?
> > 
> Maybe I didn’t express it clearly.
> 
> 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 was
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

WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will@kernel.org>
To: "liuqi (BA)" <liuqi115@huawei.com>
Cc: Linuxarm <linuxarm@huawei.com>,
	mark.rutland@arm.com, bhelgaas@google.com,
	linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, zhangshaokun@hisilicon.com
Subject: Re: [PATCH v6 2/2] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU
Date: Wed, 16 Jun 2021 14:42:58 +0100	[thread overview]
Message-ID: <20210616134257.GA22905@willie-the-truck> (raw)
In-Reply-To: <8e15e8d6-cfe8-0926-0ca1-b162302e52a5@huawei.com>

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:
> > > On 2021/6/12 0:23, Will Deacon wrote:
> > > > On Mon, May 31, 2021 at 09:32:31PM +0800, Qi Liu wrote:
> > > > > +	/* 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?
> > > > 
> > > Our PMU hardware support 8 sets of counters to count bandwidth, latency and
> > > 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?
> > 
> Maybe I didn’t express it clearly.
> 
> 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 was
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

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-06-16 13:43 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-31 13:32 [PATCH v6 0/2] drivers/perf: hisi: Add support for PCIe PMU Qi Liu
2021-05-31 13:32 ` Qi Liu
2021-05-31 13:32 ` [PATCH v6 1/2] docs: perf: Add description for HiSilicon PCIe PMU driver Qi Liu
2021-05-31 13:32   ` Qi Liu
2021-05-31 13:32 ` [PATCH v6 2/2] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU Qi Liu
2021-05-31 13:32   ` Qi Liu
2021-06-11 16:23   ` Will Deacon
2021-06-11 16:23     ` Will Deacon
2021-06-14  9:20     ` Jonathan Cameron
2021-06-14  9:20       ` Jonathan Cameron
2021-06-15  9:26       ` Will Deacon
2021-06-15  9:26         ` Will Deacon
2021-06-15  8:57     ` liuqi (BA)
2021-06-15  8:57       ` liuqi (BA)
2021-06-15  9:35       ` Will Deacon
2021-06-15  9:35         ` Will Deacon
2021-06-16  1:54         ` liuqi (BA)
2021-06-16  1:54           ` liuqi (BA)
2021-06-16 13:42           ` Will Deacon [this message]
2021-06-16 13:42             ` Will Deacon
2021-06-17 11:00             ` liuqi (BA)
2021-06-17 11:00               ` liuqi (BA)
2021-06-17 17:57               ` Will Deacon
2021-06-17 17:57                 ` Will Deacon
2021-06-18  9:32                 ` liuqi (BA)
2021-06-18  9:32                   ` liuqi (BA)
2021-06-21 17:59                   ` Will Deacon
2021-06-21 17:59                     ` Will Deacon
2021-06-23  9:59                     ` liuqi (BA)
2021-06-23  9:59                       ` liuqi (BA)
2021-06-11 23:33   ` Krzysztof Wilczyński
2021-06-11 23:33     ` Krzysztof Wilczyński
2021-06-16  1:09     ` liuqi (BA)
2021-06-16  1:09       ` liuqi (BA)
2021-06-16 15:23       ` Bjorn Helgaas
2021-06-16 15:23         ` Bjorn Helgaas
2021-06-16 17:27         ` Will Deacon
2021-06-16 17:27           ` Will Deacon
2021-06-16 14:14     ` Bjorn Helgaas
2021-06-16 14:14       ` Bjorn Helgaas
2021-06-11 10:04 ` [PATCH v6 0/2] drivers/perf: hisi: Add support for " liuqi (BA)
2021-06-11 10:04   ` liuqi (BA)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210616134257.GA22905@willie-the-truck \
    --to=will@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=liuqi115@huawei.com \
    --cc=mark.rutland@arm.com \
    --cc=zhangshaokun@hisilicon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.