[PATCH v4 15/21] PM / devfreq: rockchip-dfi: Add perf support
Sascha Hauer
s.hauer at pengutronix.de
Tue May 16 08:39:53 PDT 2023
On Wed, May 10, 2023 at 09:56:34PM +0200, Sascha Hauer wrote:
> On Tue, May 09, 2023 at 09:04:58PM +0100, Robin Murphy wrote:
> > On 2023-05-05 12:38, Sascha Hauer wrote:
> > > The DFI is a unit which is suitable for measuring DDR utilization, but
> > > so far it could only be used as an event driver for the DDR frequency
> > > scaling driver. This adds perf support to the DFI driver.
> > >
> > > Usage with the 'perf' tool can look like:
> > >
> > > perf stat -a -e rockchip_ddr/cycles/,\
> > > rockchip_ddr/read-bytes/,\
> > > rockchip_ddr/write-bytes/,\
> > > rockchip_ddr/bytes/ sleep 1
> > >
> > > Performance counter stats for 'system wide':
> > >
> > > 1582524826 rockchip_ddr/cycles/
> > > 1802.25 MB rockchip_ddr/read-bytes/
> > > 1793.72 MB rockchip_ddr/write-bytes/
> > > 3595.90 MB rockchip_ddr/bytes/
> > >
> > > 1.014369709 seconds time elapsed
> > >
> > > perf support has been tested on a RK3568 and a RK3399, the latter with
> > > dual channel DDR.
> >
> > Might it be useful to offer the option of monitoring each channel
> > individually?
>
> I gave it a quick try. For my normal testing workload the values are
> spread quite homogeneously:
>
> Performance counter stats for 'system wide':
>
> 1062183406 rockchip_ddr/cycles/
> 1517.57 MB rockchip_ddr/read-bytes0/
> 1517.11 MB rockchip_ddr/write-bytes0/
> 1519.78 MB rockchip_ddr/read-bytes1/
> 1514.97 MB rockchip_ddr/write-bytes1/
> 1518.69 MB rockchip_ddr/read-bytes2/
> 1516.01 MB rockchip_ddr/write-bytes2/
> 1519.37 MB rockchip_ddr/read-bytes3/
> 1515.46 MB rockchip_ddr/write-bytes3/
> 12137.84 MB rockchip_ddr/bytes/
>
> 1.005686209 seconds time elapsed
>
> I found one workload that looks strange though:
>
> Performance counter stats for 'system wide':
>
> 1076756945 rockchip_ddr/cycles/
> 2326.55 MB rockchip_ddr/read-bytes0/
> 30.60 MB rockchip_ddr/write-bytes0/
> 0.24 MB rockchip_ddr/read-bytes1/
> 0.09 MB rockchip_ddr/write-bytes1/
> 0.21 MB rockchip_ddr/read-bytes2/
> 0.09 MB rockchip_ddr/write-bytes2/
> 0.30 MB rockchip_ddr/read-bytes3/
> 0.10 MB rockchip_ddr/write-bytes3/
> 2357.87 MB rockchip_ddr/bytes/
>
> I am running this tool (likely not the exact version):
> https://github.com/mturquette/memtest/blob/master/mtest.c
>
> I don't know yet what this tool is doing, but it somehow manages
> to use only a single channel.
Ok, I found it out. On my RK3588 board with four channels the channels
seem to be interleaved with 512 bytes. When I only read/write the first
512 bytes of a page then only channel 0 is used, channel 1 for the
second 512 bytes etc.
The mtest tool allocates a bunch of pages, but only ever reads and
writes the first word of each page.
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the Linux-rockchip
mailing list