---
title: CACHELINE对齐优化
description: "多并发编程中的临界区变量属于写频率高的变量，如锁中的lockword，会由于上锁和释放锁等操作不停地修改状态，每次修改都会导致其他core中的CACHELINE失效。避免此类数据结构与其他变量间的干扰，会在应用中对该CACHELINE做对齐操作，使得该变量独占一个CACHELINE。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/databasepg/kunpengdbsolution_12_0018.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/databasepg/kunpengdbsolution_12_0018.html
indexId: 44ecc067256daa0551bbe5b0cfc1a782d5e407fea59109761707d0892813181979
---
# CACHELINE对齐优化

多并发编程中的临界区变量属于写频率高的变量，如锁中的lockword，会由于上锁和释放锁等操作不停地修改状态，每次修改都会导致其他core中的CACHELINE失效。避免此类数据结构与其他变量间的干扰，会在应用中对该CACHELINE做对齐操作，使得该变量独占一个CACHELINE。


**表1 不同平台的各级CACHELINE大小**

| Cacheline/Byte | x86 | 鲲鹏920 |
| --- | --- | --- |
| L1 | 64 | 64 |
| L2 | 64 | 64 |
| L3 | 64 | 128 |


MySQL中对x86平台做了很多CACHELINE的64字节对齐，由于鲲鹏920处理器的L3 CACHELINE为128字节，因此需要将MySQL源码中的对齐方式修改为128字节。修改的对齐数据结构如下：

brt_search_latches btr_search_sys

ReadView::m_view_list

trx_sys_t::rw_trx_list

trx_sys_t::mysql_trx_list

trx_sys_t::rsegs

srv_conc_t::n_active

srv_conc_t::n_active

lock_sys_t::mutex

lock_sys_t::wait_mutex

MySQL中原64Byte对齐的数据结构修改为128Byte对齐。

修改后，TPM提升至3%～4%。
