免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: linux_c_py_php
打印 上一主题 下一主题

[其他] [基于Epoll内置Leader-Follower服务端实现, 已可达50万echo qps(全新支持Lua啦)] [复制链接]

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
21 [报告]
发表于 2013-02-18 13:51 |显示全部楼层
本帖最后由 linux_c_py_php 于 2013-02-18 13:53 编辑

据我猜测, 单线程的时候单核CPU是一个瓶颈, 多线程的时候网卡中断是个瓶颈, 结果就是单线程没CPU了, 所以跑不出D, 但多线程CPU多还能往上跑所以跑出D了, 但也高不上去了.

因为单线程做计算和单线程做中断, 我觉得它们的能力是持平的, 所以单线程和多线程恰巧在极限的时候达成了服务承载力的一致.

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
22 [报告]
发表于 2013-02-18 13:52 |显示全部楼层
yulihua49 发表于 2013-02-18 13:49
如何配置CPU亲缘性?


你看这两个链接:

http://www.vpsee.com/2010/07/loa ... h-irq-smp-affinity/

http://www.vpsee.com/2010/07/smp-irq-affinity/

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
23 [报告]
发表于 2013-02-18 13:54 |显示全部楼层
yulihua49 发表于 2013-02-18 13:49
如何配置CPU亲缘性?
把工程发过来我试试?
我只有一个双核的LINUX和4核的Solaris。


代码就是1楼那个tar包, 我把测试端贴上代码来, 你直接编译了跑.

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
24 [报告]
发表于 2013-02-18 13:55 |显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. #include <arpa/inet.h>
  7. #include <unistd.h>

  8. int main(int argc, char *const arvg[]) {
  9.     int sock = socket(AF_INET, SOCK_STREAM, 0);
  10.    
  11.     struct sockaddr_in srvAddr;
  12.     srvAddr.sin_family = AF_INET;
  13.     srvAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
  14.     srvAddr.sin_port = htons(9876);
  15.         
  16.     connect(sock, (struct sockaddr *)&srvAddr, sizeof(srvAddr));
  17.    
  18.     int i;
  19.     char buff[1024];
  20.     const char *hello = "hello world\n";
  21.     int helloLen = strlen(hello);
  22.    
  23.     for (i = 0; i < 100000000; ++i) {
  24.         int size = 0;
  25.         while (size < helloLen) {
  26.             int ret = write(sock, hello + size, helloLen - size);
  27.             if (ret > 0) size += ret;
  28.         }
  29.         recv(sock, buff, helloLen, MSG_WAITALL);
  30.     }

  31.     close(sock);
  32.     return 0;
  33. }
复制代码
长连接测试端.

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
25 [报告]
发表于 2013-02-18 14:39 |显示全部楼层
网卡中断怎么样了: /proc/interrupts

看看开没开irqbalance

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
26 [报告]
发表于 2013-02-18 14:40 |显示全部楼层
client就跑完一个核了, 你这机器性能不行... 敢不敢来个好点的..

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
27 [报告]
发表于 2013-02-18 14:44 |显示全部楼层
好吧, 我拿到12核机器的root了, 我改一下亲缘性再跑.

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
28 [报告]
发表于 2013-02-18 14:49 |显示全部楼层
好吧, 我把机器搞挂了...

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
29 [报告]
发表于 2013-02-18 15:13 |显示全部楼层
文档里基本都说是公司网卡是多队列的, 通过把每个队列分配到一个CPU上, 然后就能把网卡流量打满了..


论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
30 [报告]
发表于 2013-02-18 15:28 |显示全部楼层
yulihua49 发表于 2013-02-18 15:25
我的不知哪个是网卡,流量感觉均衡。
其他多核机器都是solaris的,不知道怎么看。


我正在公司里找人打听中, 刚才切root配置了一下直接断网了... 悲剧了.... 提操作单让OP处理- -, 伤不起..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP