免费注册 查看新帖 |

Chinaunix

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

派对 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2007-02-12 10:25 |只看该作者
帮你看了看,思路好像是想用更加细粒度的锁来提高双核下的并行效率。还使用了大量的__read_mostly。
///哈西表的本质不就是粒度?

对你不利的地方:
1)增加了双核下死锁的机率,两CPU各持一把锁,但又相互等待对方的锁。
///基本避免了死锁

2)失去了和广大Linux爱好者统一的编程接口,大家都有ip_conntrack_lock,你却用exp_lock,一个模块集成不小心,可能就game over、oops、外加panic了。
///这是HW头痛的问题,也是ct与rt的最大区别,尝试是应该地,也是艰苦地。

BTW:测试过前后的性能差异吗?
///如果方便,去你那里测桥。

论坛徽章:
0
62 [报告]
发表于 2007-02-12 11:33 |只看该作者

  1.         } else {
  2.                 spin_lock(&br->hash_lock);

  3.                 if (!fdb_find(head, addr)) {
  4.                         /*
  5.                          * nice game, ifuleu@
  6.                          * better to alloc fdbe off lock
  7.                          */
  8.                         fdb_create(head, source, addr, 0);
  9.                 }
  10.                 /*
  11.                  * else  we lose race and someone else inserts
  12.                  * it first, don't bother updating
  13.                  */
  14.                 spin_unlock(&br->hash_lock);
  15.         }

复制代码


漂亮的段子,不到400行,由于保守的逻辑,陷入明显的混乱,
期待仔细的测量结果。

[ 本帖最后由 sisi8408 于 2007-2-12 14:00 编辑 ]

论坛徽章:
0
63 [报告]
发表于 2007-02-12 14:41 |只看该作者

  1. static __inline__ void fdb_delete (struct net_bridge_fdb_entry *f)
  2. {
  3.         hlist_del_rcu(&f->hlist);
  4.         /*
  5.          * though I dont know where u go,
  6.          * I do believe u exist.
  7.          * what is the charm?
  8.          */
  9.         br_fdb_put(f);
  10. }
复制代码

论坛徽章:
0
64 [报告]
发表于 2007-02-12 15:27 |只看该作者

  1. void br_fdb_cleanup (unsigned long _data)
  2. {
  3.         struct net_bridge * br = (struct net_bridge *)        _data;
  4.         unsigned long delay = hold_time(br);
  5.         int i;
  6.         unsigned long now = jiffies;
  7.         /*
  8.          * of cough, rover is more appreciated.
  9.          */
  10.         unsigned long cnt = 0;
  11.        
  12.         //spin_lock_bh(&br->hash_lock);
  13.         for (i = 0; i < BR_HASH_SIZE; i++) {
  14.                 struct net_bridge_fdb_entry * f;
  15.                 struct hlist_node *h, *n;

  16.                 spin_lock_bh(slock(i));
  17.                 hlist_for_each_entry_safe(f, h, n, &br->hash[i], hlist) {
  18.                         ++cnt;
  19.                         if (!f->is_static &&
  20.                             time_before_eq(f->ageing_timer + delay, now /* jiffies */)) {
  21.                                 --cnt;
  22.                                 fdb_delete(f);
  23.                         }
  24.                 }
  25.                 spin_unlock_bh(slock(i));
  26.         }
  27.         //spin_unlock_bh(&br->hash_lock);

  28.         if ((cnt >> 3) > BR_HASH_SIZE)
  29.                 cnt = HZ / 10;
  30.         else if ((cnt >> 2) > BR_HASH_SIZE)
  31.                 cnt = HZ / 2;
  32.         else
  33.                 cnt = HZ;
  34.         mod_timer(&br->gc_timer, jiffies + cnt /* HZ/10 */);
  35. }
复制代码

[ 本帖最后由 sisi8408 于 2007-2-12 16:00 编辑 ]

论坛徽章:
0
65 [报告]
发表于 2007-02-13 10:19 |只看该作者

  1. 刚才撞见straw,是不是当年的大侠straw@smth
复制代码

很疑惑的说。
不妨说说,当年为什么梁老大与武汉三剑客翻脸,至今没弄明白?
土狼哥哥,TND,也不知跑哪去了?

[ 本帖最后由 sisi8408 于 2007-2-13 11:06 编辑 ]

论坛徽章:
0
66 [报告]
发表于 2007-02-13 10:48 |只看该作者

  1. static int __init vlan_proto_init(void)
  2. {
  3.         int err;

  4.         printk(VLAN_INF "%s v%s %s\n",
  5.                vlan_fullname, vlan_version, vlan_copyright);
  6.         printk(VLAN_INF "All bugs added by %s\n", vlan_buggyright);

  7. .......
  8. }
复制代码

真是强人的代码~~~

论坛徽章:
0
67 [报告]
发表于 2007-02-13 15:54 |只看该作者
原帖由 sisi8408 于 2007-2-13 10:48 发表于 66楼  

static int __init vlan_proto_init(void)
{
        int err;

        printk(VLAN_INF "%s v%s %s\n",
               vlan_fullname, vlan_version, vlan_copyright);
        printk(VLAN_INF "All bugs added  ...


没看懂

论坛徽章:
0
68 [报告]
发表于 2007-02-13 15:54 |只看该作者
原帖由 sisi8408 于 2007-2-12 10:25 发表于 61楼  
帮你看了看,思路好像是想用更加细粒度的锁来提高双核下的并行效率。还使用了大量的__read_mostly。
///哈西表的本质不就是粒度?

对你不利的地方:
1)增加了双核下死锁的机率,两CPU各持一把锁,但又相互 ...


可以,但你不会把机器抱过来吧

论坛徽章:
0
69 [报告]
发表于 2007-02-13 16:07 |只看该作者
可以,但你不会把机器抱过来吧

抱机器太麻烦,也用不着~~~

论坛徽章:
0
70 [报告]
发表于 2007-02-13 16:47 |只看该作者
祝大家新年好,CUer,节后再见,
有事发邮件~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP