cpython/Python
Miss Islington (bot) 6a2a2906f8
[3.14] GH-133136: Revise QSBR to reduce excess memory held (gh-135473) (#135912)
The free threading build uses QSBR to delay the freeing of dictionary
keys and list arrays when the objects are accessed by multiple threads
in order to allow concurrent reads to proceed with holding the object
lock. The requests are processed in batches to reduce execution
overhead, but for large memory blocks this can lead to excess memory
usage.

Take into account the size of the memory block when deciding when to
process QSBR requests.

Also track the amount of memory being held by QSBR for mimalloc pages.  Advance the write sequence if this memory exceeds a limit.  Advancing the sequence will allow it to be freed more quickly.

Process the held QSBR items from the "eval breaker", rather than from `_PyMem_FreeDelayed()`.  This gives a higher chance that the global read sequence has advanced enough so that items can be freed.

(cherry picked from commit 113de8545f)

Co-authored-by: Neil Schemenauer <nas-github@arctrix.com>
Co-authored-by: Sam Gross <colesbury@gmail.com>
2025-07-08 10:58:01 -07:00
..
clinic GH-133231: Add JIT utilities in sys._jit (GH-133233) 2025-05-05 15:25:22 -07:00
frozen_modules gh-97669: Create Tools/build/ directory (#97963) 2022-10-17 12:01:00 +02:00
_contextvars.c gh-128384: Use a context variable for warnings.catch_warnings (gh-130010) 2025-04-09 16:18:54 -07:00
_warnings.c gh-131927: Prevent emitting optimizer warnings twice in the REPL (#131993) 2025-04-12 11:34:36 +01:00
asdl.c bpo-43244: Remove ast.h, asdl.h, Python-ast.h headers (GH-24933) 2021-03-23 20:47:40 +01:00
asm_trampoline.S [3.14] gh-128605: Add branch protections for x86_64 in asm_trampoline.S (#128606) (#135345) 2025-06-10 17:41:39 +02:00
assemble.c gh-87859: Track Code Object Local Kinds For Arguments (gh-132980) 2025-04-29 02:21:47 +00:00
ast.c gh-132661: Implement PEP 750 (#132662) 2025-04-30 11:46:41 +02:00
ast_preprocess.c gh-126835: Rename ast_opt.c to ast_preprocess.c and related stuff after moving const folding to the peephole optimizier (#131830) 2025-05-04 21:07:35 +03:00
ast_unparse.c [3.14] gh-133581: Fix refleak in t-string AST unparsing (GH-133724) (#133731) 2025-05-09 07:38:12 +00:00
bltinmodule.c [3.14] gh-135443: Sometimes Fall Back to __main__.__dict__ For Globals (gh-135593) 2025-06-16 23:59:30 +00:00
bootstrap_hash.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
brc.c Fix typos in documentation and comments (#119763) 2024-06-04 10:22:22 +00:00
bytecodes.c [3.14] GH-135171: Fix generator expressions one last time (hopefully) (GH-135225) 2025-06-09 11:04:23 +01:00
ceval.c [3.14] gh-130396: Move PYOS_LOG2_STACK_MARGIN to internal headers (GH-135928) (#136173) 2025-07-01 13:44:32 +00:00
ceval_gil.c [3.14] GH-133136: Revise QSBR to reduce excess memory held (gh-135473) (#135912) 2025-07-08 10:58:01 -07:00
ceval_macros.h GH-133231: Changes to executor management to support proposed sys._jit module (GH-133287) 2025-05-04 10:05:35 +01:00
codecs.c gh-133036: Deprecate codecs.open (#133038) 2025-04-30 10:11:09 +09:00
codegen.c [3.14] gh-135755: Move SPECIAL_ constants to a private header (GH-135922) (GH-135926) 2025-06-25 13:36:46 +02:00
compile.c gh-126835: Rename ast_opt.c to ast_preprocess.c and related stuff after moving const folding to the peephole optimizier (#131830) 2025-05-04 21:07:35 +03:00
condvar.h gh-104530: Enable native Win32 condition variables by default (GH-104531) 2024-02-02 13:50:51 +00:00
config_common.h gh-76785: Add PyInterpreterConfig Helpers (gh-117170) 2024-04-02 20:35:52 +00:00
context.c [3.14] gh-133968: Add PyUnicodeWriter_WriteASCII() function (#133973) (#134974) 2025-06-09 14:37:26 +02:00
critical_section.c gh-114203: Optimise simple recursive critical sections (#128126) 2024-12-23 13:31:33 +01:00
crossinterp.c [3.14] gh-135855: Raise TypeError When Passing Non-dict Object to _interpreters.set___main___attrs (gh-135900) 2025-06-24 19:19:31 +00:00
crossinterp_data_lookup.h [3.14] gh-135443: Sometimes Fall Back to __main__.__dict__ For Globals (gh-135593) 2025-06-16 23:59:30 +00:00
crossinterp_exceptions.h [3.14] gh-132775: Clean Up Cross-Interpreter Error Handling (gh-135492) 2025-06-14 02:08:25 +00:00
dtoa.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
dup2.c gh-108765: Python.h no longer includes <unistd.h> (#108783) 2023-09-02 16:50:18 +02:00
dynamic_annotations.c bpo-32241: Add the const qualifire to declarations of umodifiable strings. (#4748) 2017-12-12 13:55:04 +02:00
dynload_hpux.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_shlib.c gh-131238: Remove more includes from pycore_interp.h (#131480) 2025-03-19 23:01:32 +01:00
dynload_stub.c gh-88402: Add new sysconfig variables on Windows (GH-110049) 2023-10-04 22:50:29 +00:00
dynload_win.c gh-131238: Remove pycore_runtime.h from pycore_pystate.h (#131356) 2025-03-19 17:33:24 +01:00
emscripten_signal.c GH-108614: Unbreak emscripten build (GH-109132) 2023-09-08 17:54:45 +01:00
emscripten_trampoline.c [3.14] gh-128627: Emscripten: Add missing semicolon in ios detection code (GH-135590) (#135592) 2025-06-16 23:41:46 +00:00
errors.c gh-132781: Cleanup Code Related to NotShareableError (gh-132782) 2025-04-25 14:43:38 -06:00
executor_cases.c.h [3.14] GH-135171: Fix generator expressions one last time (hopefully) (GH-135225) 2025-06-09 11:04:23 +01:00
fileutils.c gh-124476: Fix decoding from the locale encoding in the C.UTF-8 locale (GH-132477) 2025-04-14 21:32:41 +03:00
flowgraph.c [3.14] gh-134280: Disable constant folding for ~ with a boolean argument (GH-134982) (GH-136185) 2025-07-02 11:28:09 +03:00
formatter_unicode.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
frame.c gh-131173: Improve exception handling during take_ownership processing (#132620) 2025-04-17 13:38:34 -07:00
frozen.c GH-89435: os.path should not be a frozen module (#126924) 2024-11-22 18:50:30 +00:00
frozenmain.c gh-105716: Fix _PyInterpreterState_IsRunningMain() For Embedders (gh-117140) 2024-03-21 18:20:20 -06:00
future.c gh-126139: Improve error message location for future statement with unknown feature (#126140) 2024-10-29 23:57:59 +00:00
gc.c GH-133261: Make sure that the GC doesn't untrack objects in trashcan (GH-133431) 2025-05-05 13:44:50 +01:00
gc_free_threading.c [3.14] gh-132917: fix data race on last_mem in free-threading gc (GH-134692) (#134802) 2025-05-27 18:00:19 +00:00
gc_gil.c gh-100240: Use a consistent implementation for freelists (#121934) 2024-07-22 12:08:27 -04:00
generated_cases.c.h [3.14] GH-135171: Fix generator expressions one last time (hopefully) (GH-135225) 2025-06-09 11:04:23 +01:00
getargs.c gh-132987: Support __index__() for "k" and "K" formats in PyArg_Parse (GH-132988) 2025-04-26 17:14:18 +03:00
getcompiler.c closes bpo-43278: remove unnecessary leading '\n' from COMPILER when build with GCC/Clang (GH-24606) 2021-02-25 20:24:21 -08:00
getcopyright.c gh-126133: Only use start year in PSF copyright, remove end years (#126236) 2024-11-12 15:59:19 +02:00
getopt.c GH-133336: Remove reserved `-J` flag for Jython (#133444) 2025-05-05 15:09:19 +00:00
getplatform.c bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
getversion.c [3.14] gh-119132: Remove "experimental" tag from the CPython free-threading. (gh-135550) (gh-135565) 2025-06-16 14:58:14 +00:00
hamt.c [3.14] gh-133968: Add PyUnicodeWriter_WriteASCII() function (#133973) (#134974) 2025-06-09 14:37:26 +02:00
hashtable.c gh-111545: Add Py_HashPointer() function (#112096) 2023-12-06 15:09:22 +01:00
import.c [3.14] gh-135443: Sometimes Fall Back to __main__.__dict__ For Globals (gh-135593) 2025-06-16 23:59:30 +00:00
importdl.c Remove duplicate includes: Python/importdl.c (#132623) 2025-04-18 02:49:19 +01:00
index_pool.c [3.14] gh-91048: Refactor and optimize remote debugging module (#134652) (#134673) 2025-05-25 22:10:20 +00:00
initconfig.c [3.14] gh-102567: Add missing newline to --help-all (GH-136391) (GH-136403) 2025-07-08 06:24:08 +00:00
instruction_sequence.c GH-124715: Move trashcan mechanism into Py_Dealloc (GH-132280) 2025-04-30 11:37:53 +01:00
instrumentation.c gh-132336: Mark a few "slow path" functions used by the interpreter loop as noinline (#132337) 2025-04-10 10:41:15 +02:00
interpconfig.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
intrinsics.c Get rid of ERROR_IF's "label" parameter (GH-132654) 2025-04-29 17:21:53 -07:00
jit.c gh-132661: Implement PEP 750 (#132662) 2025-04-30 11:46:41 +02:00
legacy_tracing.c gh-111178: fix UBSan failures for Python/legacy_tracing.c (#131611) 2025-03-24 11:00:32 +01:00
lock.c [3.14] gh-135871: Fix needless spinning in _PyMutex_LockTimed with zero timeout (gh-135872) (gh-135946) 2025-06-25 17:07:07 +00:00
marshal.c [3.14] gh-136053: Check error for TYPE_SLICE in marshal.c (GH-136054) (GH-136092) 2025-06-29 07:36:04 +00:00
modsupport.c gh-132909: handle overflow for 'K' format in do_mkvalue (#132911) 2025-04-25 11:02:57 +00:00
mysnprintf.c Add a warning message about PyOS_snprintf (#95993) 2022-10-07 11:49:53 -07:00
mystrtoul.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
object_stack.c gh-100240: Use a consistent implementation for freelists (#121934) 2024-07-22 12:08:27 -04:00
opcode_targets.h gh-100239: specialize BINARY_OP/SUBSCR for list-slice (#132626) 2025-05-01 10:28:52 +00:00
optimizer.c GH-133231: Changes to executor management to support proposed sys._jit module (GH-133287) 2025-05-04 10:05:35 +01:00
optimizer_analysis.c [3.14] gh-135608: Add a null check for attribute promotion to fix a JIT crash (GH-135613) (#135739) 2025-06-20 15:24:25 +08:00
optimizer_bytecodes.c [3.14] gh-135608: Add a null check for attribute promotion to fix a JIT crash (GH-135613) (#135739) 2025-06-20 15:24:25 +08:00
optimizer_cases.c.h [3.14] gh-135608: Add a null check for attribute promotion to fix a JIT crash (GH-135613) (#135739) 2025-06-20 15:24:25 +08:00
optimizer_symbols.c GH-131331: Rename "not" to "invert" (GH-131334) 2025-03-20 16:59:41 -07:00
parking_lot.c [3.14] gh-135099: Only wait on _PyOS_SigintEvent() in main thread (GH-135100) (GH-135116) 2025-06-04 08:44:35 -04:00
pathconfig.c gh-111924: Fix data races when swapping allocators (gh-130287) 2025-02-20 11:31:15 -05:00
perf_jit_trampoline.c [3.14] gh-128605: Add branch protections for x86_64 in asm_trampoline.S (#128606) (#135345) 2025-06-10 17:41:39 +02:00
perf_trampoline.c gh-131238: Remove includes from pycore_interp.h (#131495) 2025-03-20 11:35:23 +00:00
preconfig.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
pyarena.c Chore: Fix typo in pyarena.c (#126527) 2024-11-07 16:37:41 +01:00
pyctype.c Include files missed in r72044. 2009-04-27 20:54:42 +00:00
pyfpe.c bpo-46315: Add ifdef HAVE_ feature checks for WASI compatibility (GH-30507) 2022-01-13 09:46:04 +01:00
pyhash.c gh-122854: Add Py_HashBuffer() function (#122855) 2024-08-30 15:42:27 +00:00
pylifecycle.c [3.14] gh-109700: fix interpreter finalization while handling memory error (GH-136342) (#136352) 2025-07-07 07:40:13 +00:00
pymath.c bpo-45440: Remove pymath.c fallbacks (GH-28977) 2021-10-15 19:45:34 +02:00
pystate.c [3.14] gh-132775: Fix Interpreter.call() __main__ Visibility (gh-135638) 2025-06-17 20:24:08 +00:00
pystrcmp.c gh-108767: Replace ctype.h functions with pyctype.h functions (#108772) 2023-09-01 18:36:53 +02:00
pystrhex.c gh-108765: pystrhex: Replace stdlib.h abs() with Py_ABS() (#108830) 2023-09-02 23:15:54 +02:00
pystrtod.c gh-120026: soft deprecate Py_HUGE_VAL macro (#120027) 2024-11-01 22:04:31 +00:00
Python-ast.c [3.14] gh-133968: Add PyUnicodeWriter_WriteASCII() function (#133973) (#134974) 2025-06-09 14:37:26 +02:00
Python-tokenize.c gh-111178: Fix function signatures for test_types (#131455) 2025-03-19 13:46:17 +00:00
pythonrun.c [3.14] gh-132775: Add _PyCode_GetScriptXIData() (gh-133676) 2025-05-08 10:05:34 -06:00
pytime.c gh-131238: Remove pycore_runtime.h from pycore_pystate.h (#131356) 2025-03-19 17:33:24 +01:00
qsbr.c [3.14] GH-133136: Revise QSBR to reduce excess memory held (gh-135473) (#135912) 2025-07-08 10:58:01 -07:00
README Issue #18093: Factor out the programs that embed the runtime 2014-07-25 21:52:14 +10:00
remote_debug.h [3.14] gh-91048: Fix external inspection multi-threaded performance (GH-136005) (#136080) 2025-06-28 19:12:54 +01:00
remote_debugging.c [3.14] gh-134876: Add fallback for when process_vm_readv fails with ENOSYS (GH-134878) (#135240) 2025-06-07 18:56:38 +00:00
specialize.c [3.14] gh-132815: Add support for JUMP_BACKWARD in specialization stats (GH-135606) (#135612) 2025-06-17 12:38:22 +00:00
stackrefs.c [3.14] gh-133590: ensure that TableEntry.linenumber_borrow is initialized (GH-133681) (#133872) 2025-05-11 08:44:22 +00:00
stdlib_module_names.h GH-91048: Minor fixes for `_remotedebugging & rename to _remote_debugging` (#133398) 2025-05-05 02:30:14 +02:00
structmember.c gh-132685: fix thread safety of PyMember_GetOne with _Py_T_OBJECT (#132690) 2025-04-18 21:03:42 +05:30
suggestions.c GH-131238: Core header refactor (GH-131250) 2025-03-17 09:19:04 +00:00
symtable.c gh-132661: Implement PEP 750 (#132662) 2025-04-30 11:46:41 +02:00
sysmodule.c [3.14] gh-135645: Added supports_isolated_interpreters to sys.implementation (GH-135667) (#135786) 2025-06-21 08:21:50 +00:00
thread.c gh-131238: Add explicit includes to pycore headers (#131257) 2025-03-17 12:32:43 +01:00
thread_nt.h GH-131296: Add missing UNREACHABLE mark in thread_nt.h (GH-131589) 2025-03-31 20:28:35 +01:00
thread_pthread.h gh-130115: fix thread identifiers for 32-bit musl (#130391) 2025-04-04 16:31:37 +02:00
thread_pthread_stubs.h gh-125161: return non zero value in pthread_self on wasi (#125303) 2024-10-13 20:59:41 +05:30
tier2_engine.md Docs: fix spelling of the word 'transferring' (#116641) 2024-03-13 23:53:32 +01:00
traceback.c GH-124715: Move trashcan mechanism into Py_Dealloc (GH-132280) 2025-04-30 11:37:53 +01:00
tracemalloc.c gh-131296: fix clang-cl warning in tracemalloc.c (#131514) 2025-03-22 10:38:47 +01:00
uniqueid.c gh-128923: Use zero to indicate unassigned unique id (#128925) 2025-01-17 16:42:27 +01:00
vm-state.md gh-133079: Remove Py_C_RECURSION_LIMIT & PyThreadState.c_recursion_remaining (GH-133080) 2025-04-29 12:56:20 +02:00

Miscellaneous source files for the main Python shared library