注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云水居

云在青山水在天,人在江湖不得闲

 
 
 

日志

 
 

[Q]nginx的CPU亲和性分配问题  

2010-09-22 15:36:37|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

查看全文


在nginx0.76中,启动工作进程时,可以指定cpu_affinity,但是奇怪的是,如果指定了m个cpu_affinity和n个工作进程,则在启动工作进程时,如果n>m,则前m-1个工作进程的cpu_affinity与进程启动的序号相同,但最后n-m+1个工作进程全部用最后一个cpu_affinity。
简单些讲,将n个进程分配给m个CPU,按照这种分配方式,则会将m-1个进行分别分配给m-1个CPU,再把剩下的所有进程都分给最后一个CPU,为什么会这样呢?
一个比较合理的选择是第i个进程应该分配给第i%m个CPU,是nginx的bug?还是什么策略?还是我的理解错误呢?

源码如下:
os/unix/ngx_process_cycle.c的353与355行,分别获取和设置cpu_affinity.
        cpu_affinity = ngx_get_cpu_affinity(i);
        ngx_spawn_process(cycle, ngx_worker_process_cycle, NULL,
                          "worker process", type);
追踪获取cpu_affinity的ngx_get_cpu_affinity函数,进入  src/core/nginx.c 第1303-1319 行
u_long ngx_get_cpu_affinity(ngx_uint_t n)
{
    //...
  &nb

查看全文

  评论这张
 
阅读(1266)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017