spin_lock

作者: 葛一娜 | 来源:发表于2021-03-31 18:13 被阅读0次

当性能测试出现下降,使用perf top监控,出现mt_spin_lock_wait超过5%

出现spin_lock的有几种情况。

1、rootdbs大小不合理

在运行过程中使用onstat -d,检查各个空间的使用情况,显示rootdbs剩余空间很少。

修改onconfig文件,rootdbs大小,从3000000修改为30000000。

重新测试,再没出现。

2、锁争抢

如果rootdbs空间还有很多剩余,使用onstat -g ath,如果出现大量的lock wait。

说明锁太少,一个锁占用120字节内存。再内存允许的情况下,加大locks数。

3、索引分片不合理

onstat -g ath

多刷新几次,看到是哪个锁,例如:pt_20004e

将20004e 16进制转换为10进制:2097230

oncheck -pt benchmarksql >a.txt

去a.txt中找2097230对应的索引:138_134

echo "select * from sysindexes"| dbaccess -e

benchmarksql - >b.txt

从b文件中找到 138_134对应的tabid:138

select * from systables where tabid=138;

找到对应的表,然后检查这个表对应的表结果和索引分片是否合理

查看spin_lock哪个占用最多

onstat -g spi|head -n 1000|sort -rnk 1|less

相关文章

  • spin_lock

    当性能测试出现下降,使用perf top监控,出现mt_spin_lock_wait超过5% 出现spin_loc...

  • Linux中的各种锁

    在Linux内核中,有很多同步机制。比较经典的有原子操作、spin_lock(忙等待的锁)、mutex(互斥锁)、...

  • 互斥锁(mutex),自旋锁(spin_lock)是如何实现的

    1.整数值的原子操作 这部分是CPU的任务自旋锁中和互斥锁中都有一个整数值atomic_flag,为0时表示解锁状...

网友评论

      本文标题:spin_lock

      本文链接:https://www.haomeiwen.com/subject/npzozhtx.html