Skip to content

Commit e7faa8c

Browse files
committed
Address PR feedback
1 parent 957cecb commit e7faa8c

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,7 @@ peps/pep-0826.rst @savannahostrowski
703703
peps/pep-0827.rst @1st1
704704
peps/pep-0828.rst @ZeroIntensity
705705
peps/pep-0829.rst @warsaw
706-
peps/pep-0830.rst @pablogsal @Fidget-Spinner @savannahostrowski
706+
peps/pep-0831.rst @pablogsal @Fidget-Spinner @savannahostrowski
707707
# ...
708708
peps/pep-2026.rst @hugovk
709709
# ...
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
PEP: 830
1+
PEP: 831
22
Title: Frame Pointers Everywhere: Enabling System-Level Observability for Python
33
Author: Pablo Galindo Salgado <pablogsal@python.org>,
44
Ken Jin <kenjin@python.org>,
@@ -67,7 +67,7 @@ default experience for Python.
6767

6868
The performance wins that profiling enables far outweigh the modest overhead of
6969
frame pointers. As Brendan Gregg notes: "I've seen frame pointers help find
70-
performance wins ranging from 5% to 500%" [#gregg2024]_. A 1-2% overhead that
70+
performance wins ranging from 5% to 500%" [#gregg2024]_. A 0.5-2% overhead that
7171
unlocks the ability to find 5-500% improvements is a favourable trade.
7272

7373
What Are Frame Pointers?
@@ -109,7 +109,7 @@ At optimisation levels ``-O1`` and above, GCC and Clang omit frame pointers by
109109
default [#gcc_fomit]_. This frees the ``%rbp`` register for general use,
110110
giving the optimiser one more register to work with. On x86-64 this is a gain
111111
of one register out of 16 (about 7%). The performance benefit is small
112-
(typically 1-2%) but it was considered worthwhile when the convention was
112+
(typically 0.5-2%) but it was considered worthwhile when the convention was
113113
established for 32-bit x86, where the gain was one register out of 6 (~20%).
114114

115115
Without frame pointers, the linked list does not exist. Tools that need to
@@ -611,7 +611,7 @@ system calls.
611611
A common misconception in the community is that frame pointers carry large
612612
overhead "because there was a single Python case that had a +10% slowdown."
613613
[#hn-fp]_ That single case is the eval loop benchmark; the geometric mean
614-
across real workloads is 1-2%.
614+
across real workloads is 0.5-2%.
615615

616616
Detailed Performance Analysis of CPython with Frame Pointers
617617
------------------------------------------------------------
@@ -764,7 +764,7 @@ This distinguishes frame pointers from other flags placed in ``CFLAGS_NODIST``:
764764
those flags (such as ``-Werror`` or internal warning suppressions) are
765765
correctness or policy controls that are meaningful per-compilation-unit. Frame
766766
pointers are an ecosystem-wide property that is only effective when all
767-
participants cooperate. The 1-2% overhead measured on CPython is driven by its
767+
participants cooperate. The 0.5-2% overhead measured on CPython is driven by its
768768
high density of small C helper function calls; typical C extension code does
769769
not exhibit the same call density and sees negligible overhead.
770770

@@ -861,7 +861,7 @@ are compiled separately and unaffected by Python's ``CFLAGS``. Extensions with
861861
hot scalar C loops (e.g., Cython-generated code) may see measurable but modest
862862
overhead.
863863

864-
For context, 1-2% geometric mean is comparable to overhead routinely accepted
864+
For context, 0.5-2% geometric mean is comparable to overhead routinely accepted
865865
for build-time defaults such as ``-fstack-protector-strong`` (security) and the
866866
ASLR-compatible ``-fPIC`` flag for shared libraries. In return, the entire
867867
Python ecosystem gains the ability to produce complete flame graphs, accurate
@@ -1074,11 +1074,11 @@ The first graph is the overall effect on pyperformance seen on each system.
10741074
Apart from the Ubuntu AWS Graviton System, all system configurations have below 2%
10751075
geometric mean and median slowdown:
10761076

1077-
.. image:: pep-0830_perf_over_baseline.svg
1077+
.. image:: pep-0831_perf_over_baseline.svg
10781078

10791079
For individual benchmark results, see the following:
10801080

1081-
.. image:: pep-0830_perf_over_baseline_indiv.svg
1081+
.. image:: pep-0831_perf_over_baseline_indiv.svg
10821082

10831083

10841084
Copyright
File renamed without changes.

0 commit comments

Comments
 (0)