[Bug libc/26994] New: Performance regression with raise()

su-lifan at linux dot alibaba.com sourceware-bugzilla@sourceware.org
Tue Dec 1 16:20:30 GMT 2020


https://sourceware.org/bugzilla/show_bug.cgi?id=26994

            Bug ID: 26994
           Summary: Performance regression with raise()
           Product: glibc
           Version: 2.24
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libc
          Assignee: unassigned at sourceware dot org
          Reporter: su-lifan at linux dot alibaba.com
                CC: drepper.fsp at gmail dot com
  Target Milestone: ---

With the following commit introduced in glibc-2.24:
```
commit 2ac88eecc57ff00e0b5ff803ebcc3465d2d640dd
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Apr 22 09:25:20 2016 -0300

    Refactor Linux raise implementation (BZ#15368)

    This patch changes both the nptl and libc Linux raise implementation
    to avoid the issues described in BZ#15368.  The strategy used is
    summarized in bug report first comment:

     1. Block all signals (including internal NPTL ones);
     2. Get pid and tid directly from syscall (not relying on cached
        values);
     3. Call tgkill;
     4. Restore old signal mask.

    Tested on x86_64 and i686.
```

This causes performance regression (around 20%) of will-it-scale/signal1_thread
with 1 worker. I examined the perf and confirmed the extra rt_sigprocmask
syscalls performed by raise().

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Glibc-bugs mailing list