




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
查看pid和那个cpu亲和taskset -pc 3687返回pid 3687s current affinity list: 0,1,2,3表示3687和0,1两个cpu内核比较亲和taskset -pc 0-13687设置线程3678和0,1两个cpu内核亲和top -p3687查看此线程具体执行情况*利用taskset可以充分利用多核cpu的好处,可以让某个程序或脚本,运行在某个具体的cpu上。这个工具系统可能没有默认安装:,rpm包名util-linux#taskset -helptaskset (util-linux 2.13-pre7)usage: taskset options mask | cpu-list pid | cmd args.set or get the affinity of a process-p, pid operate on existing given pid-c, cpu-list display and specify cpus in list format-h, help display this help-v, version output version information1:让某个程序运行在特定cpu上面taskset -c 0 sh wade.sh2:切换某个进程到特定的cpu上。taskset -pc 0 12345比如你有一个cpu是4 core你可以这样写你的脚本#!/bin/bashtaskset -c 0 sh a.sh &taskset -c 1 sh b.sh &taskset -c 2 sh c.sh &taskset -c 3 sh d.sh &应该可以充分利用你的cpu了。*我的Linode十分繁忙,在跑一些密集操作数据库的Rake任务时尤其如此。但我观察发现,Linode服务器的4核CPU,只有第1个核心(CPU#0)非常忙,其他都处于idle状态。不了解Linux是如何调度的,但目前显然有优化的余地。除了处理正常任务,CPU#0还需要处理每秒网卡中断。因此,若能将CPU#0分担的任务摊派到其他CPU核心上,可以预见,系统的处理能力将有更大的提升。两个名词SMP(Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。 更多.CPU affinity:中文唤作“CPU亲和力”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。更多.一、在Linux上修改进程的“CPU亲和力”在Linux上,可以通过taskset命令进行修改。以Ubuntu为例,运行如下命令可以安装taskset工具。# apt-get install schedutils对运行中的进程,文档上说可以用下面的命令,把CPU#1 #2 #3分配给PID为2345的进程:# taskset -cp 1,2,3 2345但我尝试没奏效,于是我关掉了MySQL,并用taskset将它启动:# taskset -c 1,2,3 /etc/init.d/mysql start对于其他进程,也可如此处理(nginx除外,详见下文)。之后用top查看CPU的使用情况,原来空闲的#1 #2 #3,已经在辛勤工作了。二、配置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了。三、刨根问底1. 如果自己写代码,要把进程绑定到CPU,该怎么做?可以用sched_setaffinity函数。在Linux上,这会触发一次系统调用。2. 如果父进程设置了affinity,之后其创建的子进程是否会有同样的属性?我发现子进程确实继承了父进程的affinity属性。四、Windows?在Windows上修改“CPU亲和力”,可以通过任务管理器搞定。* 个人感觉,Windows系统中翻译的“处理器关系”比“CPU亲和力”容易理解点儿进行了这样的修改后,即使系统负载达到3以上,不带缓存打开首页(有40多次查询)依然顺畅;以前一旦负载超过了1.5,响应就很慢了。效果很明显。linux taskset命令详解SYNOPSIS taskset options mask | list pid | command arg.OPTIONS -p, -pid operate on an existing PID and not launch a new task -c, -cpu-list specifiy a numerical list of processors instead of a bitmask. The list may contain multiple items, separated by comma, and ranges. For example, 0,5,7,9-11. -h, -help display usage information and exit -V, -version output version information and exit*现 在多核的CPU已经相当普遍了,那么这种多核的服务器如何让CPU得到充分利用,可以靠应用自己来定义,或者依赖操作系统来调度。根据红帽的说法 RHEL5有一个很强壮的CPU调度机制,RHEL6就更强壮了,所以看起来跑在LINUX下面的应用应该都不用去管该用哪个CPU。首先我们来看看CPU中断请求的统计:CentOS release 5.2 (Final)从图上看,CPU的使用基本上还是均匀的。不过CPU0负载还是最大的。所有在某种情况下可能会需要手工来设置进程使用CPU核的优先级。下面是一个操作的例子:postgres 6457 1 0 May05 ? 00:00:00 /app/pgsql/bin/postgres -D /database/pgdata -p 1921rootdevelop1 # taskset -pc 6457pid 6457s current affinity list: 0-3这个进程目前是默认与0-3 这4个核心亲和的。也就是说会在0-3这几个核心调度。rootdevelop1 # taskset -pc 0-1 6457pid 6457s current affinity list: 0-3pid 6457s new affinity list: 0,1修改之后我们看到,已经修改为0,1的范围了。可以通过top -p 6457 f - j查看P列可以看到当前运行的核心号。如果该成在单个CORE上跑的话,马上就能看到CORE的变化。下面是taskset的MAN PAGE:从描述上来看的话,只要taskset返回结果了,那LINUX肯定是确保得到了你想要的结果。DESCRIPTIONtaskset is used to set or retrieve the CPU affinity of a running process given its PID or to launch a new COM-MAND with a given CPU affinity. CPU affinity is a scheduler property that “bonds” a process to a given set ofCPUs on the system. The Linux scheduler will honor the given CPU affinity and the process will not run on anyother CPUs. Note that the Linux scheduler also supports natural CPU affinity: the scheduler attempts to keepprocesses on the same CPU as long as practical for performance reasons. Therefore, forcing a specific CPUaffinity is useful only in certain applications.The CPU affinity is represented as a bitmask, with the lowest order bit corresponding to the first logical CPUand the highest order bit corresponding to the last logical CPU. Not all CPUs may exist on a given system buta mask may specify more CPUs than are present. A retrieved mask will reflect only the bits that correspond toCPUs physically on the system. If an invalid mask is given (i.e., one that corresponds to no valid CPUs on thecurrent system) an error is returned. The masks are typically given in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于ITK的医学图像分割技术深度剖析与实践应用
- 零售业促销活动规定
- 团队绩效考核细则
- 远程监控系统的建设与管理方案
- 酒店餐饮创新规定
- 生产工艺流程规定
- 矿山危险源辨识制度
- 民俗文化节日管理规定
- 电动汽车充电器购买指南
- 电商平台页面设计规划报告
- 员工股权激励分红协议
- 2025年化学检验工(高级技师)职业技能鉴定真题试卷(附答案)
- 农村夜晚昆虫课件
- 《钢筋桁架楼承板应用技术规程》TCECS 1069-2022
- 电梯司机培训内容大纲
- 渝22TS02 市政排水管道附属设施标准图集 DJBT50-159
- 从S国税局视角剖析转让定价反避税的实践与启示
- 图像几何变换讲解
- 分拣部管理制度
- 光缆通信基础知识
- 德胜洋楼公司及德胜员工手册-员工守则
评论
0/150
提交评论