mysql不集群_为什么mysql集群不使用CPU的多个内核?

我检查了MySQL Cluster开发团队,Frazer Clement提供了这个详细的响应.让我们知道您的测试是如何进行的.提出MySQL Cluster特有问题的好地方是论坛:forums.mysql.com/list.php?25

那个CPU没有超线程

所以它有2个真正的核心.

它还指出,当设置为2时,将会:

1 local query handler (LQH) thread

1 transaction coordinator (TC) thread

1 transporter thread

1 subscription manager (SUMA) thread

使用普通的ndbd,所有这些函数都在1个线程中,ndbmtd和MaxNoOfExecutionThreads = 2,它们被分割出来,如图所示.请注意,这是一个“功能”拆分 – 每个线程都有不同的角色,因此需要不同的CPU来完成其部分工作.对于给定的吞吐量,每种线程类型消耗的CPU量将不同.

较高的MaxNoOfExecutionThreads值将增加LQH线程的数量,这些线程应分别占用“LQH”工作的相等份额,并相互平衡.但是,其他线程将具有不同的CPU消耗量.

最后,ndbmtd以一种循环方式使用LockExecuteThreadToCpu = 0,1行.不幸的是,为了提供均衡的CPU所提供的CPU数量,有太多的执行线程(4).那么会发生的是,单个LQH线程被赋予一个CPU,而其他三个线程共享另一个CPU.这可以解释所看到的不平衡.

请注意,线程到cpus的映射在启动时会在每个ndbmtd进程的stdout(ndb_out日志)中输出.使用类似的配置,我看到以下内容:

NDBMT:num_threads = 4

实例化DBSPJ instanceNo = 0

将threadId = 3936锁定为CPU id = 0

将threadId = 3935锁定到CPU id = 0

将threadId = 3937锁定为CPU id = 0

警告:使用LockExecuteThreadToCPU指定的CPU太少.只需要2个但需要4个,这可能会引起争用.

将LQH线程分配给专用CPU和其他线程将共享剩余

thr:2 tid:3940 cpu:0 OK PGMAN(1)DBACC(1)DBLQH(1)DBTUP(1)备份(1)DBTUX(1)RESTORE(1)

thr:3 tid:3933 cpu:1 OK CMVMI(0)

thr:1 tid:3939 cpu:1 OK BACKUP(0)DBLQH(0)DBACC(0)DBTUP(0)SUMA(0)DBTUX(0)TSMAN(0)LGMAN(0)PGMAN(0)RESTORE(0) DBINFO(0)PGMAN(5)

thr:0 tid:3938 cpu:1 OK DBTC(0)DBDIH(0)DBDICT(0)NDBCNTR(0)QMGR(0)NDBFS(0)TRIX(0)DBUTIL(0)DBSPJ(0)

我们可以看到一个执行线程(3940)被锁定到CPU 0,而其他线程被锁定到CPU 1. 3940是一个LQH工作线程(因为它有一个数字> 0的DBLQH块(DBLQH(1)) ).

在此示例中,CMVMI(网络IO接收器),DBLQH(0)/ SUMA(0)和DBTC(0)线程都锁定到CPU 1.

因此,根据使用的流量,CPU 0与CPU1消耗的CPU量将失去平衡.请注意,“维护”线程也会锁定到CPU 0,如果CPU 0饱和,可能会使事情变得更糟.

如果此流量类型的瓶颈是LQH处理,那么将MaxNoOfExecutionThreads增加到4或更高将导致有2个LQH’工作者’,每个将分配一个核心.但是,其他线程也将使用其中一个核心,这将限制该核心上LQH工作人员的资源.

如果LQH工作人员不是瓶颈,那么拥有额外的LQH工作人员可以减少可用于其他线程的CPU,并降低吞吐量.

我建议尝试流量负载,检查ndbmtd输出以了解映射,测量可实现的吞吐量和延迟,以及观察CPU核心的平衡和利用率.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值