Bug 2009378

Summary: perf script -F "weight" broken in RHEL-9
Product: Red Hat Enterprise Linux 9 Reporter: Joe Mario <jmario>
Component: kernelAssignee: Michael Petlan <mpetlan>
kernel sub component: Perf QA Contact: Qiao Zhao <qzhao>
Status: CLOSED ERRATA Docs Contact:
Severity: high    
Priority: unspecified CC: acme, efuller, xiawu, zsun
Version: 9.0Keywords: Triaged
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: kernel-5.14.0-24.el9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 2026390 (view as bug list) Environment:
Last Closed: 2022-05-17 15:40:31 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2026390    
Deadline: 2021-12-06   

Description Joe Mario 2021-09-30 13:40:00 UTC
Description of problem:
The following perf command is broken in RHEL-9:

# perf script -F "comm,pid,cpu,event,addr,data_src,weight,ip,sym,phys_addr"
Samples for 'cpu/mem-loads,ldlat=30/P' event do not have WEIGHT attribute set. Cannot print 'weight' field.

Version-Release number of selected component (if applicable):


How reproducible:
Easy to reproduce.

Steps to Reproduce:
Just run a simple command, such as:

# perf mem record strings /boot/vmlinuz-`uname -r` > /dev/null 2>&1
# perf script -F "weight"

Actual results:

# perf mem record strings /boot/vmlinuz-`uname -r` > /dev/null 2>&1
# perf script -F "weight"
Samples for 'cpu/mem-loads,ldlat=30/P' event do not have WEIGHT attribute set. Cannot print 'weight' field.

Expected results:

# perf mem record strings /boot/vmlinuz-`uname -r` > /dev/null 2>&1
# perf script -F "weight" | head -10            
             118
              56
             819
              51
             238
              57
             281
             326
             417
             148


Additional info:

This feature is important to us.  When triaging performance problems, it is very common to try and understand what load instructions are taking the longest and why.  Here's a snipit for how we use it.  The weight field shows the machine cycles needed for each load (sample).

perf.jirka.v2 script -F "comm,pid,cpu,addr,weight,ip,sym" |sort -nrk5 | head -10
     tugtest 77011 [004]     406100       2944      401868 acquire_lock
     tugtest 77011 [006]     406100       2868      401868 acquire_lock
     tugtest 77011 [006]     406100       2815      401868 acquire_lock
     tugtest 77011 [006]     406100       2797      401868 acquire_lock
     tugtest 77011 [004]     406100       2756      401868 acquire_lock
     tugtest 77011 [004]     406100       2741      401868 acquire_lock
     tugtest 77011 [004]     406100       2604      401868 acquire_lock
     tugtest 77011 [004]     406100       2582      401868 acquire_lock
     tugtest 77011 [006]     406100       2563      401868 acquire_lock
     tugtest 77011 [006]     406100       2557      401868 acquire_lock

In the above example, the load latencies are only in the 2-3K range (not too bad).  The more serious ones are often up in the 10K->60K range.

Side node:  This bug has already been fixed and the patch has been submitted upstream.

Comment 4 Michael Petlan 2021-11-26 13:29:50 UTC
Added a testcase for this into perftool-testsuite:

-- [ PASS ] -- perf_mem :: test_basic :: script -F weight

Comment 14 errata-xmlrpc 2022-05-17 15:40:31 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new packages: kernel), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:3907