python / python/cpython

Relax memory ordering of shared refcount atomics

Open
#156,132 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

interpreter-core performance topic-free-threading type-feature
Dominant language
Python
Stars
77.2k
Forks
35.9k
PR merge metrics
PR metrics pending

Description

Feature or enhancement

Proposal:

In the free-threaded build, all operations on ob_ref_shared use sequentially consistent atomics. Full ordering is stronger than the biased reference counting protocol requires, and on ARM64 the ordered instructions are measurably slower under contention. Instead, we could (and I think should) match what C++ shared_ptr implementations do which is relaxed increfs and acquire/release decrefs ^1 ^2 ^3 ^4.

Has this already been discussed elsewhere?

No response given

Links to previous discussion of this feature:

No response

Linked PRs
  • gh-156135

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the free-threaded implementation of ob_ref_shared and reviewing the linked gh-156135 work. Compare the current atomic ordering with the proposal and its cited shared_ptr implementations; done means the ordering change is correct and the contention performance effect is verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.