Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.1k
gh-103295: expose API for writing perf map files#103546
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
ghost commentedApr 14, 2023 • edited by ghost
Loading Uh oh!
There was an error while loading.Please reload this page.
edited by ghost
Uh oh!
There was an error while loading.Please reload this page.
bedevere-bot commentedApr 14, 2023
Most changes to Pythonrequire a NEWS entry. Please add it using theblurb_it web app or theblurb command-line tool. |
bedevere-bot commentedApr 14, 2023
Most changes to Pythonrequire a NEWS entry. Please add it using theblurb_it web app or theblurb command-line tool. |
4 similar comments
bedevere-bot commentedApr 14, 2023
Most changes to Pythonrequire a NEWS entry. Please add it using theblurb_it web app or theblurb command-line tool. |
bedevere-bot commentedApr 14, 2023
Most changes to Pythonrequire a NEWS entry. Please add it using theblurb_it web app or theblurb command-line tool. |
bedevere-bot commentedApr 14, 2023
Most changes to Pythonrequire a NEWS entry. Please add it using theblurb_it web app or theblurb command-line tool. |
bedevere-bot commentedApr 14, 2023
Most changes to Pythonrequire a NEWS entry. Please add it using theblurb_it web app or theblurb command-line tool. |
Looks like the CI is having trouble installing dependencies, I will update this branch with rebase and try again in a bit |
Uh oh!
There was an error while loading.Please reload this page.
Summary: Backport the perf-trampoline introduced inpython/cpython#96123. The perf trampoline doesn't work properly with the JIT, so we have submitted a PR to have a C-API to unify writing to the perf-map filespython/cpython#103546.Reviewed By: czardozDifferential Revision: D45419843fbshipit-source-id: 16bd13d7981e48c9eb7bc0e5eef1c1f4748965f6
Summary:With the perf trampoline writing to the perf-map files, we want to have a C-API to unify writing to the perf-map files to avoid file corruption from simultaneous writes. We are trying to upstream the API herepython/cpython#103546. More details about the motivation is in the PR.In addition to introducing the C-API, we also change JIT to utilize the new C-API.Reviewed By: czardozDifferential Revision: D45421966fbshipit-source-id: d270cc753a245f93cbfe3d723d0880595fef45f2
bedevere-bot commentedMay 20, 2023
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
* main: (30 commits)pythongh-103987: fix several crashes in mmap module (python#103990) docs: fix wrong indentation causing rendering error in dis page (python#104661)pythongh-94906: Support multiple steps in math.nextafter (python#103881)pythongh-104472: Skip `test_subprocess.ProcessTestCase.test_empty_env` if ASAN is enabled (python#104667)pythongh-103839: Allow building Tkinter against Tcl 8.7 without external libtommath (pythonGH-103842)pythongh-85984: New additions and improvements to the tty library. (python#101832)pythongh-104659: Consolidate python examples in enum documentation (python#104665)pythongh-92248: Deprecate `type`, `choices`, `metavar` parameters of `argparse.BooleanOptionalAction` (python#103678)pythongh-104645: fix error handling in marshal tests (python#104646)pythongh-104600: Make type.__type_params__ writable (python#104634)pythongh-104602: Add additional test for listcomp with lambda (python#104639)pythongh-104640: Disallow walrus in comprehension within type scopes (python#104641)pythongh-103921: Rename "type" header in argparse docs (python#104654) Improve readability of `typing._ProtocolMeta.__instancecheck__` (python#104649)pythongh-96522: Fix deadlock in pty.spawn (python#96639)pythonGH-102818: Do not call `PyTraceBack_Here` in sys.settrace trampoline. (pythonGH-104579)pythonGH-103545: Add macOS specific constants for ``os.setpriority`` to ``os`` (python#104606)pythongh-104623: Update macOS installer to SQLite 3.42.0 (pythonGH-104624)pythongh-104619: never leak comprehension locals to outer locals() (python#104637)pythongh-104602: ensure all cellvars are known up front (python#104603) ...
bedevere-bot commentedMay 20, 2023
carljm commentedMay 20, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Refleak buildbot failures are unrelated, they are all failing in I think this is ready for merge;@pablogsal I will plan to merge it tomorrow evening unless you have objections! |
I went ahead and land it myself after another review pass 😉 Great job everyone! |
Summary:Port the latest changes from the [perf-map C-API PR](python/cpython#103546). This includes using error codes instead of exceptions to avoid the need to hold the GIL.Additionally, there was an issue with Fedora on a 32-bit system that was fixed in this [PR](python/cpython#104811), so I also ported the fix.Reviewed By: carljmDifferential Revision: D46041553fbshipit-source-id: 6502189f489ca6cf11949ecd93c044e5ebe4fd2c
Uh oh!
There was an error while loading.Please reload this page.
#96123 added support for CPython to write /tmp/perf-.map files, associating instruction address ranges with a human-readable frame name for the Linux perf profiler.
Two external Python JIT compilers,Cinder andPyston, both also independently write to perf map files.
Since perf map files are one-per-process, multiple separate libraries trying to write perf map entries independently can lead to file corruption from simultaneous writes.
It's unlikely for both Cinder and Pyston JITs to be used in the same process, but it's quite reasonable to use one of these JITs along with CPython's native perf trampoline support.
This PR add a C-API to write to the perf map file. It also update the perf trampoline to use the new API to write to the perf map file.