All of lore.kernel.org
 help / color / mirror / Atom feed
* [Bug 211305] New: schedutil selects low P-States on AMD EPYC with frequency invariance
@ 2021-01-21  0:55 bugzilla-daemon
  2021-01-21  0:57 ` [Bug 211305] " bugzilla-daemon
                   ` (18 more replies)
  0 siblings, 19 replies; 21+ messages in thread
From: bugzilla-daemon @ 2021-01-21  0:55 UTC (permalink / raw)
  To: linux-pm

https://bugzilla.kernel.org/show_bug.cgi?id=211305

            Bug ID: 211305
           Summary: schedutil selects low P-States on AMD EPYC with
                    frequency invariance
           Product: Power Management
           Version: 2.5
    Kernel Version: v5.11-rc1
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: cpufreq
          Assignee: linux-pm@vger.kernel.org
          Reporter: ggherdovich@suse.cz
        Regression: No

Phoronix.com discovered a severe performance regression on AMD APYC
introduced on schedutil [see link 1] by the following commits from v5.11-rc1

    commit 41ea667227ba ("x86, sched: Calculate frequency invariance for AMD
systems")
    commit 976df7e5730e ("x86, sched: Use midpoint of max_boost and max_P for
frequency invariance on AMD EPYC")

The problem happens on CPU-bound workloads spanning a large number of cores.
In this case schedutil won't select the maximum P-State. Actually, it's
likely that it will select the minimum one.

[link 1]
https://www.phoronix.com/scan.php?page=article&item=linux511-amd-schedutil&num=1

TEST        : Intel Open Image Denoise, www.openimagedenoise.org
INVOCATION  : ./denoise -hdr memorial.pfm -out out.pfm -bench 200 -threads
$NTHREADS
CPU         : MODEL            : 2x AMD EPYC 7742
              FREQUENCY TABLE  : P2: 1.50 GHz
                                 P1: 2.00 GHz
                                 P0: 2.25 GHz
              MAX BOOST        :     3.40 GHz

Results: threads, msecs (ratio). Lower is better.

               v5.10          v5.11-rc4    v5.11-rc4-patch
    -------------------------------------------------------
      1   1069.85 (1.00)   1071.84 (1.00)   1070.42 (1.00)
      2    542.24 (1.00)    544.40 (1.00)    544.48 (1.00)
      4    278.00 (1.00)    278.44 (1.00)    277.72 (1.00)
      8    149.81 (1.00)    149.61 (1.00)    149.87 (1.00)
     16     79.01 (1.00)     79.31 (1.00)     78.94 (1.00)
     24     58.01 (1.00)     58.51 (1.01)     58.15 (1.00)
     32     46.58 (1.00)     48.30 (1.04)     46.66 (1.00)
     48     37.29 (1.00)     51.29 (1.38)     37.27 (1.00)
     64     34.01 (1.00)     49.59 (1.46)     33.71 (0.99)
     80     31.09 (1.00)     44.27 (1.42)     31.33 (1.01)
     96     28.56 (1.00)     40.82 (1.43)     28.47 (1.00)
    112     28.09 (1.00)     40.06 (1.43)     28.63 (1.02)
    120     28.73 (1.00)     39.78 (1.38)     28.14 (0.98)
    128     28.93 (1.00)     39.60 (1.37)     29.38 (1.02)

See how the 128 threads case is almost 40% worse than baseline in v5.11-rc4.
The column v5.11-rc4-patch corresponds to a patch I've just sent to LKML to
address this problem.

I'm opening this bugzilla entry to attach a few plots made during the study
of this problem, for lack of a better place to share them.

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are the assignee for the bug.

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2021-02-15 15:34 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-21  0:55 [Bug 211305] New: schedutil selects low P-States on AMD EPYC with frequency invariance bugzilla-daemon
2021-01-21  0:57 ` [Bug 211305] " bugzilla-daemon
2021-01-21  0:59 ` bugzilla-daemon
2021-01-21  1:00 ` bugzilla-daemon
2021-01-21  1:03 ` bugzilla-daemon
2021-01-27 21:18 ` bugzilla-daemon
2021-02-12 17:28 ` bugzilla-daemon
2021-02-12 18:19   ` Rafael J. Wysocki
2021-02-12 18:19 ` bugzilla-daemon
2021-02-12 19:12 ` bugzilla-daemon
2021-02-12 20:39 ` bugzilla-daemon
2021-02-12 21:15 ` bugzilla-daemon
2021-02-12 22:00 ` bugzilla-daemon
2021-02-15 13:52 ` bugzilla-daemon
2021-02-15 13:54 ` bugzilla-daemon
2021-02-15 13:55 ` bugzilla-daemon
2021-02-15 14:04 ` bugzilla-daemon
2021-02-15 14:43 ` bugzilla-daemon
2021-02-15 14:47 ` bugzilla-daemon
2021-02-15 15:09 ` bugzilla-daemon
2021-02-15 15:30 ` bugzilla-daemon

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.