Skip to content

[PATCH v2] Optimize 64-bit atomic access on RV64 - #422

Open
pg-hub-mirror[bot] wants to merge 1 commit into
masterfrom
pg-hub/mirror-patch-607b066a1e16c08d
Open

pg-hub-mirror[bot] wants to merge 1 commit into
masterfrom
pg-hub/mirror-patch-607b066a1e16c08d

Conversation

@pg-hub-mirror

@pg-hub-mirror pg-hub-mirror Bot commented Sep 18, 2026

Copy link
Copy Markdown

Read-only mirror. Reply and review on pgsql-hackers; activity here is not sent upstream.

  • Original author: 王红岩 <wanghongyan2025(at)iscas(dot)ac(dot)cn>
  • Mailing list: pgsql-hackers
  • Message-ID: 162ef016.d668.1a0b26c7630.Coremail.wanghongyan2025@iscas.ac.cn
  • Original email

Patch files:


Hi,
Thanks for pointing me to the patch submission guidelines.
Attached is v2. The code change is unchanged from v1. This revision
reformats the commit message and adds the missing submission,
validation, platform, and performance information.
The patch is intended for review and application against PostgreSQL
master.
It defines PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY on RV64, allowing the
generic pg_atomic_read_u64() and pg_atomic_write_u64()
implementations to use naturally aligned plain loads and stores
instead of compare/exchange loops. RV32 remains unchanged.
Validation was performed on PostgreSQL commit
86f7c82.
Test environment:

  • Hardware: SpacemiT K3 / spacemit-x100
  • Architecture: RV64GC
  • Compiler: GCC 12.3.1
  • CFLAGS: -O2 -g -march=rv64gc -mabi=lp64d
    Results:
  • configure/build/install: passed
  • PostgreSQL regression tests: 240/240 passed
  • PinBuffer targeted stress test: passed
  • pg_amcheck: passed
  • 80-client/40-thread/60-second soak tests: no failures
  • disassembly confirmed that the target read path changed from an
    lr.d/sc.d loop to ld, while state-updating CAS paths retained LR/SC
    The paired pgbench campaign covered 13 workload and concurrency
    conditions, with 10 interleaved baseline/candidate runs per condition,
    for a total of 130 pairs. Each pair used the same seed, and the
    baseline/candidate execution order was alternated.
    Results:
  • 114/130 pairs favored the patched build
  • mean improvement: 1.680%
  • median improvement: 1.665%
  • bootstrap median 95% CI: [1.358%, 1.897%]
    These measurements were obtained from one RV64 system and do not
    imply the same performance improvement on every RV64 implementation.
    No new SQL regression test is included because this change has no
    SQL-visible behavior. No user-facing documentation change is needed
    because this is an internal architecture-specific optimization.
    Changes since v1:
  • reformatted and clarified the commit message
  • added branch and submission status
  • added platform and validation information
  • added performance methodology and results
  • clarified the scope of the performance measurements
    Regards,
    Hongyan Wang
    -----原始邮件-----
    发件人:"wenhui qiu" <qiuwenhuifx(at)gmail(dot)com>
    发送时间:2026-09-17 11:30:18 (星期四)
    收件人: wanghongyan <wanghongyan2025(at)iscas(dot)ac(dot)cn>
    抄送: pgsql-hackers(at)postgresql(dot)org, "Ni Jincheng" <nijincheng(at)iscas(dot)ac(dot)cn>, Yuansheng <yuansheng(at)isrc(dot)iscas(dot)ac(dot)cn>
    主题: Re: [PATCH v1] Optimize 64-bit atomic access on RV64
    Hi Wanghongyan
    You can follow up this document : https://wiki.postgresql.org/wiki/Submitting_a_Patch
    Thanks

RV64 guarantees that naturally aligned XLEN-wide loads and stores are
atomic.  Teach PostgreSQL about that property by defining
PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY in a new RISC-V atomics header.

This allows the generic pg_atomic_read_u64() and
pg_atomic_write_u64() implementations to use plain loads and stores
instead of compare/exchange loops on RV64.  Keep RV32 on the existing
generic fallback.

Co-authored-by: Ni Jincheng <nijincheng@iscas.ac.cn>
Co-authored-by: Yuansheng <yuansheng@isrc.iscas.ac.cn>
@pg-hub-mirror

pg-hub-mirror Bot commented Sep 18, 2026

Copy link
Copy Markdown
Author

Earlier design discussion: Discussion #388

@pg-hub-mirror pg-hub-mirror Bot added area:storage Storage, access methods, buffers, or I/O source:pgsql-hackers Mirrored from pgsql-hackers type:patch Mail thread contains a PostgreSQL patch area:executor Executor area:testing Tests and buildfarm area:sql SQL language or commands area:docs Documentation labels Sep 18, 2026
@pg-hub-mirror pg-hub-mirror Bot locked and limited conversation to collaborators Sep 18, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area:docs Documentation area:executor Executor area:sql SQL language or commands area:storage Storage, access methods, buffers, or I/O area:testing Tests and buildfarm source:pgsql-hackers Mirrored from pgsql-hackers type:patch Mail thread contains a PostgreSQL patch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant