压测Cubieboard

想测一测Cubieboard最多能支撑多少tcp长链接(当然,是比较空闲的链接)。

我的cubieboard上安装的是linaro(其实就是linux),首先得调节单个进程打开的句柄数(修改/etc/security/limit.conf),然后还要修改sysctl里tcp_mem等网络参数(具体配置可以参考这里 1, 2) 然写了一套简单的TCP链接客户端和服务端的代码。Server端用epoll模型; Client端创建500个链接然后把fd放入数组里,每个connection每5秒发送128字节。
开始测试时,在cubieboar上我分别对5个端口启动了5个Server,客户端(我的笔记本)则是用脚本不停的创建Client实例。
测试结果:cubieboard可以支撑到10万个tcp长链接,网络流量稳定保持在3.75MB/s,此时系统内存还有大约300MB free(总共1G),CPU idle在20%左右
cubieboard只有网口没有网卡(也就是没有network controller),所有的收包解包都由CPU完成,所以能支持的流量比较有限,不过撑个10万的闲链接还是没问题的。

还想了解一下cubieboard对https的支撑能力,于是我又在cubieboard上装了tengine(在arm上编译还挺顺利,连warning都没有,编译时间4分钟24秒),配上https签名(参加这里)再用ab压力测试,ab压测脚本是:
ab -n 20000 -c 20 -k url
测试结果:访问https的QPS为755, 访问http的QPS为1269

看来用cubieboard搭个小网站是绰绰有余了,一个小的聊天服务器兴许也可以。


====== 2013.1.28 ======

应 @pythonee 同学的要求,测试了200个并发:

ab -n 20000 -c 200 -k url

测试结果:访问https的QPS为858,访问http的QPS为1741,毕竟是单核,提升不明显,压测的时候CPU idle已经为0了
我另外还试了一下把openssl的签名长度改为512bit,以减轻CPU的压力,再测https,QPS可以到959,当然,签名长度再短,QPS也不可能高于http的1741了

cubieboard


相关文章

分类

10 Comments

pythonee said:

能否顺便测一测
ab -n 20000 -c 200 -k url

ex said:

请教一下这类arm board上怎么得到是否存在network controller?

DongHao Author Profile Page said:

@ex 测试网络收发小包的时候,还不到10MBytes/s,CPU就100%利用率了,(同样的VIA的低功耗机器,也是1G主频,网络到100MBytes/s了CPU利用率还不到10%,它是带有网卡的),故而得出此结论。 cubieboard才400元不到的售价,带CPU、GPU、VPU等等,要是再带network controller,那就很难控制在400元以下了吧

ex said:

原来如此。pc上可以用lspci之类看到,但这类板子上通常不是pci总线……不知道这些板子(rpi/cubieboard)的总线彼此是否通用呢。

shuge said:

对于此类的网络测试作者有什么提议吗?即要提高此soc的网络能力楼主有什么好的建议

shuge said:

对于提高此开发板网络性能,楼主有什么好建议吗?

DongHao Author Profile Page said:

@shuge 我也没有好的建议,要么买更好的板子,要么应用就别收发这么多网络包,硬件决定软件。

Gao said:

你好,我想知道客户端是如何实现稳定发出10万个tcp长链接的呢?
普通机器来说,把65535个local port耗尽了不就是无法connect了吗

DongHao Author Profile Page said:

@Gao,假设server端只listen了80这一个端口,那client端最多只能创建65535个链接链上server;但是我是在server端listen了4个端口,client端分别连接server端的这4个端口,就能到10万了

留言:

关于文章

This page contains a single entry by DongHao published on 01 25, 2013 4:19 PM.

修复ext4 aio bug一个 was the previous entry in this blog.

ext4 bigalloc 答疑 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.