Re: [PATCH v2] Optimize 64-bit atomic access on RV64

From: 王红岩 <wanghongyan2025(at)iscas(dot)ac(dot)cn>
To: "wenhui qiu" <qiuwenhuifx(at)gmail(dot)com>
Cc: 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>
Subject: Re: [PATCH v2] Optimize 64-bit atomic access on RV64
Date: 2026-09-18 02:50:47
Message-ID: 162ef016.d668.1a0b26c7630.Coremail.wanghongyan2025@iscas.ac.cn
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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
86f7c82cf1023e3599f40f939727791a7090cd44.

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

Attachment Content-Type Size
v2-0001-Optimize-64-bit-atomic-access-on-RV64.patch text/plain 2.4 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Ewan Young 2026-09-18 03:01:45 Re: RANGE partition pruning can still exclude the default partition
Previous Message Peter Smith 2026-09-18 02:49:35 Re: Distinguish publication exclusions in object addresses