cpython/InternalDocs
Pablo Galindo Salgado 572c780aa8
gh-138122: Implement frame caching in RemoteUnwinder to reduce memory reads (#142137)
This PR implements frame caching in the RemoteUnwinder class to significantly reduce memory reads when profiling remote processes with deep call stacks.

When cache_frames=True, the unwinder stores the frame chain from each sample and reuses unchanged portions in subsequent samples. Since most profiling samples capture similar call stacks (especially the parent frames), this optimization avoids repeatedly reading the same frame data from the target process.

The implementation adds a last_profiled_frame field to the thread state that tracks where the previous sample stopped. On the next sample, if the current frame chain reaches this marker, the cached frames from that point onward are reused instead of being re-read from remote memory.

The sampling profiler now enables frame caching by default.
2025-12-06 22:37:34 +00:00
..
images gh-119786: Move garbage collection doc from devguide to InternalDocs (#125282) 2024-10-11 21:18:37 +01:00
asyncio.md fix some typos (#138977) 2025-09-16 18:33:39 +05:30
changing_grammar.md gh-119786: cleanup internal docs and fix internal links (#127485) 2024-12-01 17:12:22 +00:00
code_objects.md gh-119786: Add jit.md. Move adaptive.md to a section of interpreter.md. (#127175) 2024-12-06 16:36:06 +00:00
compiler.md gh-138081: fix some dead links in InternalDocs (#138082) 2025-09-11 10:54:16 +02:00
exception_handling.md Improve format of InternalDocs/exception_handling.md (#134969) 2025-05-31 14:56:33 +03:00
frames.md gh-138122: Implement frame caching in RemoteUnwinder to reduce memory reads (#142137) 2025-12-06 22:37:34 +00:00
garbage_collector.md GH-135552: Make the GC clear weakrefs later (GH-136189) 2025-08-07 16:32:17 -07:00
generators.md gh-138081: fix some dead links in InternalDocs (#138082) 2025-09-11 10:54:16 +02:00
interpreter.md gh-119786: add JUMP_BACKWARD macro to the Jumps section (#131213) 2025-03-16 20:04:39 +00:00
jit.md gh-137959: Fix TIER1_TO_TIER2 macro name in JIT InternalDocs (GH-141496) 2025-11-13 14:44:40 +00:00
parser.md Fix some typos in various doc files (GH-132589) 2025-04-16 18:11:47 +00:00
qsbr.md gh-119786: Add InternalDocs/qsbr.md. (gh-135411) 2025-06-23 22:09:40 +00:00
README.md Add internal doc describing the stack protection mechanism (GH137663) 2025-08-13 19:04:25 +01:00
stack_protection.md GH-139653: Only raise an exception (or fatal error) when the stack pointer is about to overflow the stack. (GH-141711) 2025-11-19 10:16:24 +00:00
string_interning.md gh-119786: cleanup internal docs and fix internal links (#127485) 2024-12-01 17:12:22 +00:00

CPython Internals Documentation

The documentation in this folder is intended for CPython maintainers. It describes implementation details of CPython, which should not be assumed to be part of the Python language specification. These details can change between any two CPython versions and should not be assumed to hold for other implementations of the Python language.

The core dev team attempts to keep this documentation up to date. If it is not, please report that through the issue tracker.

Compiling Python Source Code

Runtime Objects

Program Execution

Modules