ndbmtd not using all CPUs
Posted by:
Kevin Chan
Date: March 05, 2016 06:00PM
I've recently migrated to Mysql Cluster, and I'm confused regarding the behavior of ndbmtd.
According to my understanding of the documentation, setting MaxNoOfExecutionThreads=numberOfCPUthreadsAvailable on cluster's config.ini, and running ndbmtd instead of ndbd would utilize the full power of a machine. However, this is what I am experiencing on two equal quad core servers:
1) Before Mysql Cluster, my server ran a typical mysql-server mysqld process. In times of user spike or long queries, monitoring CPU usage with 'TOP' would often show the mysqld process using 300% or more of CPUs.
2) Then, with the Cluster migration, MaxNoOfExecutionThreads set to 4 and 2 nodes in the pool, the ndbmtd process would not use more than 100%. Notice that during this time, only 1 node was active as I had not ran "ALTER ONLINE TABLE table REORGANIZE PARTITION" yet.
3) After I reorganized the partitions and node 2 was active, now both the first server and the second one started reaching up 200% CPU usage with ndbmtd, but no more than that, which is very confusing.
Is this the intended behavior?
I don't understand why CPU usage does not go over 200% now, when the previous mysqld process would often reach 350%. With mysql cluster, half of the cpus are sitting idle on each server, and some queries are failing to execute due to lack of processing power.
Cluster version is "MySQL Cluster 7.4.10", and the OS for both servers is Centos 6.7
Thank you.