免费注册 查看新帖 |

Chinaunix

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

[FreeBSD] 精通polling参数调优的进来帮帮忙吧 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2006-05-25 18:23 |只看该作者
原帖由 xie_minix 于 2006-5-25 18:11 发表
mirnshi:
我猜想,开发POLLING的团队有问题.他们对MUTEX的了解不够,最起码在5.3版本时.
这是最要命的事情.
其次,写代码时没经过思考(请原谅我这么说,他们也不容易),比如你看:
5.3版本
poll_idle(void)中
mtx ...

实在晕倒,BSD内核中也有这样质量的代码?

论坛徽章:
0
62 [报告]
发表于 2006-05-25 19:05 |只看该作者
原帖由 xie_minix 于 2006-5-25 18:11 发表
mirnshi:
我猜想,开发POLLING的团队有问题.他们对MUTEX的了解不够,最起码在5.3版本时.
这是最要命的事情.
其次,写代码时没经过思考(请原谅我这么说,他们也不容易),比如你看:
5.3版本
poll_idle(void)中
mtx ...


不晓得是不是跟linux的大内核锁一样,可以重复进入的?
ether_poll()说不定在别的地方还有调用到,所以要加锁
大内核锁在linux里已经很少用到了。看来linux更注重性能的说法有一定道理

另外,不晓得FB有没有针对Opteron的优化?楼主用的Opteron应该很牛啦

[ 本帖最后由 caibird3rd 于 2006-5-25 19:08 编辑 ]

论坛徽章:
0
63 [报告]
发表于 2006-05-25 19:36 |只看该作者

回复 62楼 caibird3rd 的帖子

还有更牛的,双路Opteron 270,就是四个2.0G的Opteron处理器。
另外还有双路双核XEON,每个CPU都支持HT。系统应该会认出八个CPU。
不过在双路Opteron 250上也无法改善FreeBSD性能的话。
就只有用linux了。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
64 [报告]
发表于 2006-05-25 22:07 |只看该作者
原帖由 xie_minix 于 2006-5-25 18:11 发表
mirnshi:
我猜想,开发POLLING的团队有问题.他们对MUTEX的了解不够,最起码在5.3版本时.
这是最要命的事情.
其次,写代码时没经过思考(请原谅我这么说,他们也不容易),比如你看:
5.3版本
poll_idle(void)中
mtx ...

6.x中的代码,不同呀。主版本3、5都不是很好,命短。

  1. /*
  2. * ether_poll is called from the idle loop.
  3. */
  4. void
  5. ether_poll(int count)
  6. {
  7.         int i;

  8.         NET_LOCK_GIANT();
  9.         mtx_lock(&poll_mtx);

  10.         if (count > poll_each_burst)
  11.                 count = poll_each_burst;

  12.         for (i = 0 ; i < poll_handlers ; i++)
  13.                 pr[i].handler(pr[i].ifp, POLL_ONLY, count);

  14.         mtx_unlock(&poll_mtx);
  15.         NET_UNLOCK_GIANT();
  16. }
  17. static void
  18. poll_idle(void)
  19. {
  20.         struct thread *td = curthread;
  21.         struct rtprio rtp;

  22.         rtp.prio = RTP_PRIO_MAX;        /* lowest priority */
  23.         rtp.type = RTP_PRIO_IDLE;
  24.         mtx_lock_spin(&sched_lock);
  25.         rtp_to_pri(&rtp, td->td_ksegrp);
  26.         mtx_unlock_spin(&sched_lock);

  27.         for (;;) {
  28.                 if (poll_in_idle_loop && poll_handlers > 0) {
  29.                         idlepoll_sleeping = 0;
  30.                         ether_poll(poll_each_burst);
  31.                         mtx_lock_spin(&sched_lock);
  32.                         mi_switch(SW_VOL, NULL);
  33.                         mtx_unlock_spin(&sched_lock);
  34.                 } else {
  35.                         idlepoll_sleeping = 1;
  36.                         tsleep(&idlepoll_sleeping, 0, "pollid", hz * 3);
  37.                 }
  38.         }
  39. }
复制代码

个人感觉,还是扔掉5.x吧,因为当初粗粗看了5.x,就觉得是个试验品,就没有仔细看,一直在4.x上做。6.1出来了,应该算是稳定住了

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
65 [报告]
发表于 2006-05-25 22:17 |只看该作者
原帖由 xfsoul 于 2006-5-25 19:36 发表
还有更牛的,双路Opteron 270,就是四个2.0G的Opteron处理器。
另外还有双路双核XEON,每个CPU都支持HT。系统应该会认出八个CPU。
不过在双路Opteron 250上也无法改善FreeBSD性能的话。
就只有用linux了。

个人以为,双核并不是完全意义上的“双CPU”,在目前的这种IA架构上,CPU多了,不见得是好事,这些CPU调度起来都是件麻烦事。
从我目前了解到的以及实验数据来说,cpu的处理速度足够了应付中低端(1G及1G以下),只是总线有问题,所以网络的速度跟不上。

论坛徽章:
0
66 [报告]
发表于 2006-05-26 08:27 |只看该作者
原帖由 xie_minix 于 2006-5-25 18:11 发表
我猜想,开发POLLING的团队有问题.他们对MUTEX的了解不够,最起码在5.3版本时.
这是最要命的事情.
其次,写代码时没经过思考(请原谅我这么说,他们也不容易),比如你看:
...


原作者在此:


但从André Oppermann的一篇文章来看,6.0专门针对SMP的情况对polling进行了修改:
Interface Polling

The network interface polling implementation has been re-implemented to work correctly in SMP environments. Polling is no longer a global configuration variable but enabled or disabled individually per interface if the driver supports it. Most commonly found network drivers support polling.


而且,从kern_poll.c文件的cvs记录来看,对锁的使用进行优化的工作也一直在进行,比如:
http://lists.freebsd.org/piperma ... ptember/051848.html

论坛徽章:
0
67 [报告]
发表于 2006-05-26 08:36 |只看该作者
原帖由 xfsoul 于 2006-5-25 18:23 发表

实在晕倒,BSD内核中也有这样质量的代码?


先污染,后治理。

[ 本帖最后由 雨丝风片 于 2006-5-26 08:51 编辑 ]

论坛徽章:
0
68 [报告]
发表于 2006-05-26 09:24 |只看该作者
原帖由 mirnshi 于 2006-5-25 15:00 发表
将mbuf的尺寸增大,并不会带来特别显著的提高,系统会根据包的大小,自动分拆的,大家可以看看协议栈的实现。 ...


请教一下,这个分拆体现在哪儿?

扩大mbuf尺寸,不考虑是否真能提高性能,至少可以尽量避免系统使用mbuf链或者cluster。另外,楼主两个网卡mtu一致,而且是二层转发,似乎也涉及不到ip fragmentation的问题。所以请教这个“自动分拆”的含义?

论坛徽章:
0
69 [报告]
发表于 2006-05-26 09:47 |只看该作者
他的意思是指包在mbuf和cluster的分拆而不是包数据本身分拆,所以跟MTU无关了,使用cluster是有好处的,例如对于同一包的数据处理可以直接通过指向cluster指针,增加引用计数器,避免数据复制等。如果不使用cluster可以大幅度增加性能当初设计就不会有cluster了。

论坛徽章:
0
70 [报告]
发表于 2006-05-26 09:57 |只看该作者
原帖由 colddawn 于 2006-5-26 09:47 发表
他的意思是指包在mbuf和cluster的分拆而不是包数据本身分拆,所以跟MTU无关了,使用cluster是有好处的,例如对于同一包的数据处理可以直接通过指向cluster指针,增加引用计数器,避免数据复制等。如果不使用clust ...


不是讨论是否需要使用、当时是否有必要设计cluster。我的意思很简单,系统是否使用mbuf链或者mcluster来存储网络数据都取决于mbuf的尺寸,既然把mbuf尺寸调整到足以存放楼主测试的全部数据,又何来“包在mbuf和cluster的分拆”呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP