免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2747 | 回复: 7
打印 上一主题 下一主题

活跃结点 [复制链接]

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-31 17:48 |只看该作者 |倒序浏览
30可用积分
本帖最后由 embeddedlwp 于 2011-10-31 20:07 编辑

2.6.11
  1. #define num_online_nodes() nodes_weight(node_online_map)

  2. #define nodes_weight(nodemask) __nodes_weight(&(nodemask), MAX_NUMNODES)

  3. static inline int __nodes_weight(const nodemask_t *srcp, int nbits)
  4. {
  5.         return bitmap_weight(srcp->bits, nbits);
  6. }
复制代码
这个__node_weight函数是什么意思?

还有这段程序:
  1. 1363static void __init build_zonelists(pg_data_t *pgdat)
  2. 1364{
  3. 1365        int i, j, k, node, local_node;
  4. 1366        int prev_node, load;
  5. 1367        struct zonelist *zonelist;
  6. 1368        nodemask_t used_mask;
  7. 1369
  8. 1370        /* initialize zonelists */
  9. 1371        for (i = 0; i < GFP_ZONETYPES; i++) {
  10. 1372                zonelist = pgdat->node_zonelists + i;
  11. 1373                memset(zonelist, 0, sizeof(*zonelist));
  12. 1374                zonelist->zones[0] = NULL;
  13. 1375        }
  14. 1376
  15. 1377        /* NUMA-aware ordering of nodes */
  16. 1378        local_node = pgdat->node_id;
  17. 1379        load = num_online_nodes();
  18. 1380        prev_node = local_node;
  19. 1381        nodes_clear(used_mask);
  20. 1382        while ((node = find_next_best_node(local_node, &used_mask)) >= 0) {
  21. 1383                /*
  22. 1384                 * We don't want to pressure a particular node.
  23. 1385                 * So adding penalty to the first node in same
  24. 1386                 * distance group to make it round-robin.
  25. 1387                 */
  26. 1388                if (node_distance(local_node, node) !=
  27. 1389                                node_distance(local_node, prev_node))
  28. 1390                        node_load[node] += load;
  29. 1391                prev_node = node;
  30. 1392                load--;
  31. 1393                for (i = 0; i < GFP_ZONETYPES; i++) {
  32. 1394                        zonelist = pgdat->node_zonelists + i;
  33. 1395                        for (j = 0; zonelist->zones[j] != NULL; j++);
  34. 1396
  35. 1397                        k = ZONE_NORMAL;
  36. 1398                        if (i & __GFP_HIGHMEM)
  37. 1399                                k = ZONE_HIGHMEM;
  38. 1400                        if (i & __GFP_DMA)
  39. 1401                                k = ZONE_DMA;
  40. 1402
  41. 1403                        j = build_zonelists_node(NODE_DATA(node), zonelist, j, k);
  42. 1404                        zonelist->zones[j] = NULL;
  43. 1405                }
  44. 1406        }
  45. 1407}
复制代码
下边这部分是干什么用啊,node_load[node]数组是什么作用,为什么要加load
  1. 1388                if (node_distance(local_node, node) !=
  2. 1389                                node_distance(local_node, prev_node))
  3. 1390                        node_load[node] += load;
复制代码

最佳答案

查看完整内容

node_load应该是每个节点的负载吧,加一个数就是把值变大,故意把负载值变大的话就会避免这个节点的真正负载过大。这个方面,我觉得Bo Liu 应该更清楚,你可以向他请教。

论坛徽章:
0
2 [报告]
发表于 2011-10-31 17:48 |只看该作者
node_load应该是每个节点的负载吧,加一个数就是把值变大,故意把负载值变大的话就会避免这个节点的真正负载过大。

这个方面,我觉得Bo Liu <bo-liu@hotmail.com>应该更清楚,你可以向他请教。

论坛徽章:
12
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之同曦
日期:2017-03-17 19:13:162016科比退役纪念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16赛季CBA联赛之福建
日期:2016-01-14 12:49:22程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:002015年亚洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役纪念章
日期:2018-04-10 16:20:18
3 [报告]
发表于 2011-10-31 17:59 |只看该作者
想给LZ提个建议,提问的时候,你的题目最好能把问题简要的描述下,不然不清楚啊。

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
4 [报告]
发表于 2011-10-31 18:00 |只看该作者
想给LZ提个建议,提问的时候,你的题目最好能把问题简要的描述下,不然不清楚啊。
VIP_fuck 发表于 2011-10-31 17:59



    多谢指点!

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2011-10-31 19:49 |只看该作者
bitmap_weight(srcp->bits, nbits);
就是看一个bits指向的bit流, 求得到nbits这个位置为止, 有多少bit是置1的.

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
6 [报告]
发表于 2011-10-31 20:01 |只看该作者
回复 4# chishanmingshen


    多谢大哥解惑,那第二个问题呢?求指点!

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2011-10-31 23:28 |只看该作者
本帖最后由 chishanmingshen 于 2011-10-31 23:32 编辑

第二个问题, 看注释.

论坛徽章:
0
8 [报告]
发表于 2012-08-30 10:50 |只看该作者
兄弟,想向你请教一下,_node_weight该如何理解?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP