- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux下进程绑定多cpu运行
进程绑定多核运行
CPU affinity:中文作“CPU亲和力”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。
一、在Linux上修改进程的“CPU亲和力”
在Linux上,可以通过 taskset 命令进行修改。运行如下命令可以安装taskset工具。
在 CentOS/Fedora 下安装 schedutils:
# yum install schedutils
在 Debian/Ubuntu 下安装 schedutils:
# apt-get install schedutils
如果正在使用 CentOS/Fedora/Debian/Ubuntu 的必威体育精装版版本的话,schedutils/util-linux 这个软件包可能已经装上了。
计算 CPU Affinity 和计算 SMP IRQ Affinity 差不多:
0(CPU0)
0(CPU1)
0(CPU0+CPU1)
0(CPU2)
...如果想设置进程号(PID)为 12212 的进程到 CPU0 上的话:
# taskset 0 -p 12212
关掉MySQL),并用taskset将它启动:
# taskset -c 1,2,3 /etc/init.d/mysql start
对于其他进程,也可如此处理(nginx除外,详见下文)。之后用top查看CPU的使用情况。
二、配置nginx绑定CPU
刚才说nginx除外,是因为nginx提供了更精确的控制。
在conf/nginx.conf中,有如下一行:
worker_processes 1;
这是用来配置nginx启动几个工作进程的,默认为1。而nginx还支持一个名为worker_cpu_affinity的配置项,也就是说,nginx可以为每个工作进程绑定CPU。我做了如下配置:
worker_processes 3;
worker_cpu_affinity 0010 0100 1000;
这里0010 0100 1000是掩码,分别代表第2、3、4颗cpu核心。
重启nginx后,3个工作进程就可以各自用各自的CPU了。
三、如果自己写代码,要把进程绑定到CPU,该怎么做?可以用sched_setaffinity函数。在Linux上,这会触发一次系统调用。int sched_setaffinity(pid_t pid, unsigned int len, unsigned long *mask);
sched_setaffinity 的第一个参数是pid (进程ID)设置进程为pid的这个进程让它运行在mask所设定的CPU上如果pid的值为0则表示指定的是当前进程使当前进程运行在mask所设定的那些CPU上第二个参数cpusetsize是mask所指定的数的长度通常设定为sizeof(cpu_set_t)如果当前pid所指定的CPU此时没有运行在mask所指定的任意一个CPU上,则该指定的进程会从其它CPU上迁移到mask的指定的一个CPU上运行int sched_getaffinity(pid_t pid, unsigned int len, unsigned long *mask);
该函数获得pid所指示的进程的CPU位掩码并将该掩码返回到mask所指向的结构中即获得指定pid当前可以运行在哪些CPU上同样如果pid的值为0.也表示的是当前进程Example:
/* Short test program to test sched_setaffinity
* (which sets the affinity of processes to processors).
* Compile: gcc sched_setaffinity_test.c
* -o sched_setaffinity_test -lm
* Usage: ./sched_setaffinity_test
*
* Open a top-window at the same time and see all the work
* being done on CPU 0 first and after a short wait on CPU 1.
* Repeat with different numbers to make sure, it is not a
* coincidence.
*/
#include stdio.h
#include math.h
#include sched.h
double waste_time(long n)
{
d
您可能关注的文档
- 第十三章 经济周期和经济增长 一、思考题 1简述卡尔多经济周期模型 .doc
- 而是演示了大量新功能特性.doc
- 第四章药物的分布 - 长沙医学院.ppt
- 第四章种群生物学.doc
- 土壤中有效磷的测定 - 厦门大学化学化工学院.ppt
- 项目名称 - 生物在线.doc
- 第九章蛋白质组学的研究方法和进展 - 中南大学在线课程平台.doc
- 数学教学需要亲和力.doc
- 锌冶炼烟气制酸净化工段污酸的治理技术 - 有色金属(冶炼部分).doc
- 第26章铁生锈.doc
- 地图在初中地理教学中的个性化教学研究教学研究课题报告.docx
- 小学科学教育探索:校园植物四季变化观察与生态教育创新教学研究课题报告.docx
- 数字化教育环境中数字公民素养评价模式探究教学研究课题报告.docx
- 基于生成式AI的高中生物课堂学习共同体构建策略教学研究课题报告.docx
- 《血液透析患者动静脉内瘘并发症的护理干预对生活质量的影响分析》教学研究课题报告.docx
- 基于国家智慧教育云平台的初中生物实验资源整合与共享策略分析教学研究课题报告.docx
- 《软件项目开发过程中风险管理与企业风险管理教育》教学研究课题报告.docx
- 小学数学思维训练多媒体素材的智能编辑与合成策略研究教学研究课题报告.docx
- 高中物理实验:校园雨水收集系统对建筑能耗的影响分析教学研究课题报告.docx
- 《虚拟现实在教育学教育中的应用:用户体验优化与教育理念创新研究》教学研究课题报告.docx
文档评论(0)