多核处理器linux的进程绑定处理器核运行

多核处理器linux的进程绑定处理器核运行

ID:14249816

大小:1.10 MB

页数:14页

时间:2018-07-27

多核处理器linux的进程绑定处理器核运行_第1页
多核处理器linux的进程绑定处理器核运行_第2页
多核处理器linux的进程绑定处理器核运行_第3页
多核处理器linux的进程绑定处理器核运行_第4页
多核处理器linux的进程绑定处理器核运行_第5页
资源描述:

《多核处理器linux的进程绑定处理器核运行》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、多核处理器Linux的进程绑定处理器核运行名词CPUaffinity:中文称作“CPU亲和力”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。一、Linux代码中绑定多核运行1、如果自己写代码,要把进程绑定到CPU,该怎么做?可以用sched_setaffinity函数。在Linux上,这会触发一次系统调用。intsched_setaffinity(pid_tpid,unsignedintlen,unsignedlong*mask);sched_setaffinity的第一个参数是pid(

2、进程ID),设置进程为pid的这个进程,让它运行在mask所设定的CPU上。如果pid的值为0,则表示指定的是当前进程,使当前进程运行在mask所设定的那些CPU上;第二个参数cpusetsize是mask所指定的数的长度。通常设定为sizeof(cpu_set_t);如果当前pid所指定的CPU此时没有运行在mask所指定的任意一个CPU上,则该指定的进程会从其它CPU上迁移到mask的指定的一个CPU上运行。intsched_getaffinity(pid_tpid,unsignedintlen,unsign

3、edlong*mask);该函数获得pid所指示的进程的CPU位掩码,并将该掩码返回到mask所指向的结构中,即获得指定pid当前可以运行在哪些CPU上。同样,如果pid的值为0.也表示的是当前进程。voidCPU_ZERO(cpu_set_t*set)这个宏对CPU集set进行初始化,将其设置为空集。voidCPU_SET(intcpu,cpu_set_t*set)这个宏将cpu加入CPU集set中。voidCPU_CLR(intcpu,cpu_set_t*set)这个宏将cpu从CPU集set中删除。intC

4、PU_ISSET(intcpu,constcpu_set_t*set)如果cpu是CPU集set的一员,这个宏就返回一个非零值(true),否则就返回零(false)。Example:我是在一个虚拟机上运行的程序,机器CPU是双核的,我设置虚拟机模拟四核。在linux上执行top指令看结果,点击“1”查看每个CPU核的运行情况。/*Shorttestprogramtotestsched_setaffinity*(whichsetstheaffinityofprocessestoprocessors).*Compi

5、le:gccsched_setaffinity_test.c*-osched_setaffinity_test.o-lm*Usage:./sched_setaffinity_test.o**Opena"top"-windowatthesametimeandseeallthework*beingdoneonCPU0firstandafterashortwaitonCPU1,2,3.*Repeatwithdifferentnumberstomakesure,itisnota*coincidence.*/#includ

6、e#include#includedoublewaste_time(longn){doubleres=0;longi=0;while(i

7、sk),&mask)<0){perror("sched_setaffinity");}/*wastesometimesotheworkisvisiblewith"top"*/printf("result:%f",waste_time(2000));mask=2;/*二进制10,processswitchestoprocessor1now*/if(sched_setaffinity(0,sizeof(mask),&mask)<0){perror("sched_setaffinity");}/*wastesome

8、moretimetoseetheprocessorswitch*/printf("result:%f",waste_time(2000));mask=4;/*二进制100,processor2*//*bindprocesstoprocessor2*/if(sched_setaffinity(0,sizeof(mask),&mask)<0){perror("sched_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。