RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1487152 - ss should only read /proc/slabinfo when required
Summary: ss should only read /proc/slabinfo when required
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: iproute
Version: 7.4-Alt
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: rc
: ---
Assignee: Phil Sutter
QA Contact: Jaroslav Aster
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-08-31 10:36 UTC by Jaroslav Aster
Modified: 2017-11-09 11:25 UTC (History)
1 user (show)

Fixed In Version: iproute-4.11.0-3.el7a
Doc Type: If docs needed, set a value
Doc Text:
Clone Of: 1289312
Environment:
Last Closed: 2017-11-09 11:25:03 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2017:3172 0 normal SHIPPED_LIVE iproute enhancement update 2017-11-09 16:12:24 UTC

Description Jaroslav Aster 2017-08-31 10:36:39 UTC
Similar issue on rhel-alt-7.4.

# rpm -q iproute
iproute-4.11.0-2.el7a.ppc64le

# strace -eopen ss 2>&1 | grep slabinfo
open("/proc/slabinfo", O_RDONLY)        = 3


+++ This bug was initially created as a clone of Bug #1289312 +++

Description of problem:

The `ss` utility is reading /proc/slabinfo every time it is executed
rather than when it actually needs the information.

For the customer system, which is running a low latency application
on the stock rhel6 kernel, this causes delay up around 100ms while
irq processing is blocked while gathering the information on slab
usage.

As it appears the the information gathered from /proc/slabinfo
is only used when running ss with the summary option (-s), based
on a suggestion from the customer i've done a patch to move
gathering of slabinfo so that it is only done when the information
is required.

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

iproute-2.6.32-31.el6.x86_64

How reproducible:

100%

Steps to Reproduce:
1. Run ss with no options under strace
2. strace data shows /proc/slabinfo is read
3.

Actual results:

/proc/slabinfo is read every time

Expected results:

/proc/slabinfo is only read when the information is required

Additional info:

--- Additional comment from Phil Sutter on 2015-12-08 10:27:02 EST ---

This upstream commit fixes the behaviour:

commit a221d621bb4af414b974ccc40bba26481337d7cf
Author: Bryton Lee <brytonlee01>
Date:   Thu Feb 12 14:16:04 2015 +0800

    prevent the read ahead of /proc/slabinfo in ss
    
    Signed-off-by: Bryton Lee <brytonlee01>

--- Additional comment from Phil Sutter on 2015-12-08 13:20:09 EST ---

Fix verification is pretty simple using strace as suggested by Stuart:

Here's a test of the faulty version:

# strace -eopen ss 2>&1 | grep slabinfo
open("/proc/slabinfo", O_RDONLY)        = 3

With the patch from comment #3 applied, the above command does not produce any output.

Comment 1 Phil Sutter 2017-08-31 11:39:59 UTC
The original issue is actually not present in rhel-alt-7.4, but a different one with similar symptoms so the test-case luckily caught it. The much more severe effect of this issue is that a call to 'ss' with not further arguments in rhel-alt-7.4 prints the list of connected TCP sockets twice. Therefore I second the request for exception+.

Upstream accepted my fix already:

commit 6c6bbc30f4e7fedc74381627f7ec86d26050b404
Author: Phil Sutter <phil>
Date:   Mon Aug 28 19:31:22 2017 +0200

    ss: Fix for added diag support check
    
    Commit 9f66764e308e9 ("libnetlink: Add test for error code returned from
    netlink reply") changed rtnl_dump_filter_l() to return an error in case
    NLMSG_DONE would contain one, even if it was ENOENT.
    
    This in turn breaks ss when it tries to dump DCCP sockets on a system
    without support for it: The function tcp_show(), which is shared between
    TCP and DCCP, will start parsing /proc since inet_show_netlink() returns
    an error - yet it parses /proc/net/tcp which doesn't make sense for DCCP
    sockets at all.
    
    On my system, a call to 'ss' without further arguments prints the list
    of connected TCP sockets twice.
    
    Fix this by introducing a dedicated function dccp_show() which does not
    have a fallback to /proc, just like sctp_show(). And since tcp_show()
    is no longer "multi-purpose", drop it's socktype parameter.
    
    Fixes: 9f66764e308e9 ("libnetlink: Add test for error code returned from netlink reply")
    Signed-off-by: Phil Sutter <phil>

Comment 5 errata-xmlrpc 2017-11-09 11:25:03 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, 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/RHEA-2017:3172


Note You need to log in before you can comment on or make changes to this bug.