t**********1 发帖数: 550 | 1 一台E3做服务器,另一台i3做client。
不管单TCP还是多TCP,throughput稳定在大约6-7M/s之间。
估计1G网络是瓶颈。
今晚以前我会放出来的。 |
w****w 发帖数: 521 | 2 内存多大?春运算20天罢,把TRAIN改成10万,看看对throughput有没有影响。
【在 t**********1 的大作中提到】 : 一台E3做服务器,另一台i3做client。 : 不管单TCP还是多TCP,throughput稳定在大约6-7M/s之间。 : 估计1G网络是瓶颈。 : 今晚以前我会放出来的。
|
t**********1 发帖数: 550 | 3 E3 4G,i3 2G。
你自己算算好了。理论上TRAIN 10万cache miss稍大一点。其实现在我这个也已经远大
于cache。而且请求是random的,故意造成最大cache miss。
因此,我很肯定没大影响。你可以自己改了试试。都不用改程序,-D TRAIN=100000 就
好了。
确保你物理内存够用。否则直接core dump。
【在 w****w 的大作中提到】 : 内存多大?春运算20天罢,把TRAIN改成10万,看看对throughput有没有影响。
|
w****w 发帖数: 521 | 4 找了台10年的老机器E5405 @ 2.00GHz,ubuntu 14.04 VM
ticket pool size改为原来的1/4
TRAINS=5000,SEGMENTS=10,time=31s, memory used=0.6G
TRAINS=100000,SEGMENTS=10,time=70s, memory used=11G
TRAINS=100000,SEGMENTS=20,time=151s, memory used=22G |
t**********1 发帖数: 550 | 5 所以说,这个要求,10年前就能轻松做到。 :)
【在 w****w 的大作中提到】 : 找了台10年的老机器E5405 @ 2.00GHz,ubuntu 14.04 VM : ticket pool size改为原来的1/4 : TRAINS=5000,SEGMENTS=10,time=31s, memory used=0.6G : TRAINS=100000,SEGMENTS=10,time=70s, memory used=11G : TRAINS=100000,SEGMENTS=20,time=151s, memory used=22G
|
j******a 发帖数: 100 | 6 难道瓶颈不是那个IO单核?
【在 t**********1 的大作中提到】 : 一台E3做服务器,另一台i3做client。 : 不管单TCP还是多TCP,throughput稳定在大约6-7M/s之间。 : 估计1G网络是瓶颈。 : 今晚以前我会放出来的。
|
T********i 发帖数: 2416 | 7 我不认为是IO单核。这个核10G全双工都没问题。
对了10G你帮我测一下。用我最后commit的代码,大约昨晚5:00多那个。
估计跑10M/s没问题。再多了,抢票机单核就到极限了。
【在 j******a 的大作中提到】 : 难道瓶颈不是那个IO单核?
|
w****w 发帖数: 521 | 8 mlockall在VM里lock不住,估计得在host上lock |
T********i 发帖数: 2416 | 9 VM上这行注释掉,没问题。
要是你VM RAM只有2G,频繁SWAP,就有乐子看了。
【在 w****w 的大作中提到】 : mlockall在VM里lock不住,估计得在host上lock
|
j******a 发帖数: 100 | 10 中午休息的时候,我跑了一下
两台HSX EP的DP
一台2颗CPU是 E5-2699 v3
另一台两颗CPU是 E5-2695 v3
都是8根16G的DDR4 跑1866
10G是X540对联,10G都在头一个CPU上
(client)10.10.172.1《-》10.10.172.2(server)
net/TCP参数我看了下,改了下MTU,其他的没动
netperf -t TCP_STREAM -H 10.10.172.2 -l 10
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.10.172.
2 () port 0 AF_INET : demo
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 10.00 9792.80
因为server只有两个working threads,所以我10.10.172.2关了HT,每个CPU开一个
core,这样可以跑高turbo,
taskset -cp 0 3406
pid 3406's current affinity list: 0,1
pid 3406's new affinity list: 0
taskset -cp 1 3407
pid 3407's current affinity list: 0,1
pid 3407's new affinity list: 1
峰值跑不到8Mt/s,明显CPU0用比较厉害,
watch cat /proc/stat
cpu 446509 0 11326 643305 169 0 6104 0 0 0
cpu0 253237 0 7415 286122 104 0 5594 0 0 0
cpu1 193271 0 3911 357182 65 0 509 0 0 0
我没想明白为什么idle这么高,下了班再看了 |
|
|
T********i 发帖数: 2416 | 11 抢票核任何时候都是100%。
我建议你numactrl确保mem都用同一个numa node看看。
172.
【在 j******a 的大作中提到】 : 中午休息的时候,我跑了一下 : 两台HSX EP的DP : 一台2颗CPU是 E5-2699 v3 : 另一台两颗CPU是 E5-2695 v3 : 都是8根16G的DDR4 跑1866 : 10G是X540对联,10G都在头一个CPU上 : (client)10.10.172.1《-》10.10.172.2(server) : net/TCP参数我看了下,改了下MTU,其他的没动 : netperf -t TCP_STREAM -H 10.10.172.2 -l 10 : MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.10.172.
|
T********i 发帖数: 2416 | 12 你这个配置不对。
我的进程需要至少2个core.
请确保两个core和网卡都在同一个cpu socket上。然后控制numa内存分配也在那个
socket上才是最优的。
172.
【在 j******a 的大作中提到】 : 中午休息的时候,我跑了一下 : 两台HSX EP的DP : 一台2颗CPU是 E5-2699 v3 : 另一台两颗CPU是 E5-2695 v3 : 都是8根16G的DDR4 跑1866 : 10G是X540对联,10G都在头一个CPU上 : (client)10.10.172.1《-》10.10.172.2(server) : net/TCP参数我看了下,改了下MTU,其他的没动 : netperf -t TCP_STREAM -H 10.10.172.2 -l 10 : MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.10.172.
|
j******a 发帖数: 100 | 13 是两个core没错,我系统有两个CPU,一个CPU一个core
numa我觉得不是问题,你的memory用度小,我的系统QPI跑9.6G的
你要是担心numa的问题,我可以拿掉一个CPU跑下,但turbo bin会少跑一档,因为要多
加一个core到CPU里
【在 T********i 的大作中提到】 : 你这个配置不对。 : 我的进程需要至少2个core. : 请确保两个core和网卡都在同一个cpu socket上。然后控制numa内存分配也在那个 : socket上才是最优的。 : : 172.
|
T********i 发帖数: 2416 | 14 turbo的影响比numa小多了。
这个cache miss很严重的。
你的xeon cache比我的大多了。搞好了应该能超10M/s。
【在 j******a 的大作中提到】 : 是两个core没错,我系统有两个CPU,一个CPU一个core : numa我觉得不是问题,你的memory用度小,我的系统QPI跑9.6G的 : 你要是担心numa的问题,我可以拿掉一个CPU跑下,但turbo bin会少跑一档,因为要多 : 加一个core到CPU里
|
j******a 发帖数: 100 | 15 10M/s应该没问题,我用的是v3的CPU,上v4的CPU,cache多10M,memory到2400.只是我
的v4最近要release,都在做别的事情 |
j******a 发帖数: 100 | 16 恩,我想这个是很有可能的,45M的L3 cache够不够大我没有把握,要测过才知道
【在 T********i 的大作中提到】 : turbo的影响比numa小多了。 : 这个cache miss很严重的。 : 你的xeon cache比我的大多了。搞好了应该能超10M/s。
|
j******a 发帖数: 100 | 17 我试了没太多差,我猜是cache missing本来就很高了
很容易验证,我可以在你的branch上加些code把cache missing打出来看一下
如果是这样的话,瓶颈应该就在memory了,我的v4全在跑burnin,等过了这阵子我去测
一下ddr 2400
【在 j******a 的大作中提到】 : 恩,我想这个是很有可能的,45M的L3 cache够不够大我没有把握,要测过才知道
|
T********i 发帖数: 2416 | 18 你用numactl把CPU 和memory都限制在同一个numa node上面了?
【在 j******a 的大作中提到】 : 我试了没太多差,我猜是cache missing本来就很高了 : 很容易验证,我可以在你的branch上加些code把cache missing打出来看一下 : 如果是这样的话,瓶颈应该就在memory了,我的v4全在跑burnin,等过了这阵子我去测 : 一下ddr 2400
|
j******a 发帖数: 100 | 19 我拿掉了一颗CPU,没有开COD,整个就是一个SMP |
T********i 发帖数: 2416 | 20 那看来就这样了。单线程也就8M左右。
【在 j******a 的大作中提到】 : 我拿掉了一颗CPU,没有开COD,整个就是一个SMP
|
|
|
j******a 发帖数: 100 | 21 我改了我的BIOS把performance bias改到从OS改到BIOS,这样我的BIOS可以override
OS,always turbo,让两个core稳定跑3.5G(因为有两个core,跑不到最高3.6),可以
跑上8M/s了,不换高频CPU/memory,应该是极限了 |
T********i 发帖数: 2416 | 22 赞。这个结果我已经很满意了。
看来要超10M还得多核并行。
【在 j******a 的大作中提到】 : 我改了我的BIOS把performance bias改到从OS改到BIOS,这样我的BIOS可以override : OS,always turbo,让两个core稳定跑3.5G(因为有两个core,跑不到最高3.6),可以 : 跑上8M/s了,不换高频CPU/memory,应该是极限了
|
j******a 发帖数: 100 | 23 我又仔细调了一下,现在可以到9M/s了
# time counts unit events
3.000105834 1,843,134 LLC-loads
3.000105834 568,715 LLC-loads-misses
6.000348237 98,750,471 LLC-loads
6.000348237 1,804,739 LLC-loads-misses
9.000746193 274,980,789 LLC-loads
9.000746193 5,255,184 LLC-loads-misses
12.000940350 258,626,768 LLC-loads
12.000940350 8,324,724 LLC-loads-misses
Session closed
Session closed
Session closed
Session closed
Session closed
Session closed
15.001277633 32,839,409 LLC-loads
15.001277633 1,686,588 LLC-loads-misses
18.001451881 199,047 LLC-loads
18.001451881 784 LLC-loads-misses |
j******a 发帖数: 100 | |
T********i 发帖数: 2416 | 25 多劳费心,多谢夸奖。
【在 j******a 的大作中提到】 : 魏老师写的这个短小精悍的程序,真是值得多琢磨
|
b***i 发帖数: 3043 | 26 学到了很多可以提高效率的方法。这些是老魏自己发明的,还是也是学的?
比如
104 for (size_t i=0; i
105 Ticket *cur = &_tickets[i];
106 cur->_next = (cur + 1);
107 }
108 _tickets[n - 1]._next = NULL;
【在 T********i 的大作中提到】 : 多劳费心,多谢夸奖。
|
g****u 发帖数: 252 | 27 你测这些有啥开源软件吗?
我以前用vtune,后来改oprofile,后来改perf. 但是要能直接以lib的形式
链接进去,只测核心代码的话我觉得会很酷。
【在 j******a 的大作中提到】 : 我又仔细调了一下,现在可以到9M/s了 : # time counts unit events : 3.000105834 1,843,134 LLC-loads : 3.000105834 568,715 LLC-loads-misses : 6.000348237 98,750,471 LLC-loads : 6.000348237 1,804,739 LLC-loads-misses : 9.000746193 274,980,789 LLC-loads : 9.000746193 5,255,184 LLC-loads-misses : 12.000940350 258,626,768 LLC-loads : 12.000940350 8,324,724 LLC-loads-misses
|
j******a 发帖数: 100 | 28 就拿38F/186/c1几个MSR写写,几行code的事情,intel SDM 19章写得不清不楚,拿
perf的code当event tables
【在 g****u 的大作中提到】 : 你测这些有啥开源软件吗? : 我以前用vtune,后来改oprofile,后来改perf. 但是要能直接以lib的形式 : 链接进去,只测核心代码的话我觉得会很酷。
|