Bug 11588 - Avoid false sharing in struct optimistic_spin_node
Summary: Avoid false sharing in struct optimistic_spin_node
Status: RESOLVED FIXED
Alias: None
Product: ANCK 5.10 Dev
Classification: ANCK
Component: block/storage (show other bugs) block/storage
Version: unspecified
Hardware: x86_64 Linux
: P3-Medium S3-normal
Target Milestone: ---
Assignee: Ferry Meng
QA Contact: shuming
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-10-31 11:04 UTC by Jie_1005
Modified: 2024-12-12 17:38 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jie_1005 2024-10-31 11:04:31 UTC
Description of problem:
    性能优化,x86平台当前UB总分不及预期,通过检视代码发现 osq_lock 存在伪共享的情况


Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:

使用UnixBench测试套./Run fstime进行测试,

Actual results:
通过 UnixBench 测试套件发现,在文件复制项目中,osq_lock() 导致了极高的开销。
开销占比如下:osq_lock() 为 94.25%,rwsem_spin_on_owner 为 0.74%,filemap_get_read_batch 为 0.32%。

对 osq_lock() 进行分析后有一些发现:
在 osq_lock() 的序言中,将 percpu 结构的 cpu 成员设置为本地 CPU 标识,且该值实际上不再改变,可视为常量变量。
percpu 结构的其他成员如 next、prev 和 locked 被频繁修改,会使其他 CPU 上的 cpu 成员缓存失效。

ftime的测试数据相对欧拉系统要低。

Expected results:
解决spinlock的false sharing,从而优化unixbench的 file copy性能


Additional info:
Comment 1 小龙 admin 2024-11-13 11:11:58 UTC
The PR Link: https://gitee.com/anolis/cloud-kernel/pulls/4116
Comment 2 Ferry Meng alibaba_cloud_group 2024-12-12 17:38:08 UTC
Merged by @dtc

Mark it as "Fixed"