Testing the network speed
==========================================================================================
4 datanodes on 2 servers, test remotely
cpu 6,7 are busy on both node 3,4
Network NIC speed: RX:53MB/s Rx:50MB/s on node 2(run test on node2)
Network NIC speed: TX:50MB/s RX:53MB/s on node 3,4
--------------------------------------------------
/mysql/mysqlc718/bin/flexAsynch -ndbrecord -n -temp -a 2 -l 3 -con 8 -t 16 -p 100 -o 1000 -warmup_time 1000
insert average: 161075/s min: 153875/s max: 170212/s stddev: 4%
update average: 167642/s min: 158149/s max: 182836/s stddev: 6%
delete average: 186487/s min: 181179/s max: 192840/s stddev: 2%
read average: 229615/s min: 187025/s max: 273972/s stddev: 13%
4 datanodes on 2 servers, test on datanode
cpu 6,7 is busy on node 3
CPU 0,1,3,5 are very busy on node4
Network NIC speed: RX:119MB/s Rx: 76MB/s on node 3
Network NIC speed: TX: 75MB/s RX:119MB/s on node 4(run test on node 4)
--------------------------------------------------
/mysql/mysqlc718/bin/flexAsynch -ndbrecord -n -temp -a 2 -l 3 -con 8 -t 8 -p 400 -o 1000 -warmup_time 1000
insert average: 388932/s min: 357621/s max: 408475/s stddev: 5%
update average: 408243/s min: 406504/s max: 411205/s stddev: 0%
delete average: 437398/s min: 406194/s max: 453257/s stddev: 5%
read average: 842261/s min: 404142/s max: 1139601/s stddev: 31%
2 datanodes in one server,run the test localy, 80% cpus are busy
Network NIC speed:
lo: Tx:318MB/s Rx:318MB/s
--------------------------------------------------
/mysql/mysqlc718/bin/flexAsynch -ndbrecord -n -temp -a 2 -l 3 -con 8 -t 12 -p 200 -o 1000 -warmup_time 1000
insert average: 568274/s min: 555812/s max: 574575/s stddev: 1%
update average: 596434/s min: 594353/s max: 600450/s stddev: 0%
delete average: 602412/s min: 600600/s max: 603318/s stddev: 0%
read average: 1316408/s min: 878798/s max: 1424332/s stddev: 14%
2 datanodes on 1 server, Run test remotedly, cpus are free on client:
eth1:Tx:115MB/s Rx:90MB/s
2 Data nodes on the same server:60% cpus are busy on datanodes
eth1: Tx:87MB/s Rx:112MB/s
lo: Tx:321MB/s Rx:321MB/s
--------------------------------------------------
/mysql/mysqlc718/bin/flexAsynch -ndbrecord -n -temp -a 2 -l 3 -con 8 -t 12 -p 400 -o 1000 -warmup_time 1000
insert average: 66824/s min: 65157/s max: 67662/s stddev: 1%
update average: 74091/s min: 73986/s max: 74247/s stddev: 0%
delete average: 70739/s min: 70663/s max: 70842/s stddev: 0%
read average: 119134/s min: 113848/s max: 122224/s stddev: 2%
For the 2 datanodes on the same server, and run test clinet remotely:
NIC lo reaches its max speed at 312MB/s when it is doing inserting, and eth1 reaches its max speed at 112MB/s when it is doing reading.
NIC lo is used for comunication between datanodes, and eth1 is used for comunication between clinet the datanode.
总结
==========================================================================================
忙的cpu是recv和TRPMAN线程,负责数据传输的,所以datanodes之间的网络速度是关键,千兆网卡的极限速度是120MB/s,如果datanodes的所有节点在同一server,用lo网卡尅到达321MB/s的速度,3备于千兆网卡
datanode不在同一server上的情况下,在datanode上跑测试很快,可能TC会优先在本地datanode上建立一个连接,这样会使用的高速的lo网卡.把sqlnode于某个datanode放到同一server应该会提高性能。
希望有人能验证这个理论
阅读(2039) | 评论(0) | 转发(0) |