ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:43.27KB ,
资源ID:14159344      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14159344.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux下进程绑定多CPU运行Word文件下载.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Linux下进程绑定多CPU运行Word文件下载.docx

1、0x00000004 (CPU2).如果想设置进程号(PID)为 12212 的进程到 CPU0 上的话:# taskset 0x00000001 -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启动几个

2、工作进程的,默认为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上,这会触发一次系统调用。int sched_setaffinity

3、(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_g

4、etaffinity(pid_t pid, unsigned int len, unsigned long *mask);该函数获得pid所指示的进程的CPU位掩码,并将该掩码返回到mask所指向的结构中,即获得指定pid当前可以运行在哪些CPU上。同样,如果pid的值为0.也表示的是当前进程。Example:1. /* Short test program to test sched_setaffinity2. * (which sets the affinity of processes to processors).3. * Compile: gcc sched_setaffinity_

5、test.c 4. * -o sched_setaffinity_test -lm5. * Usage: ./sched_setaffinity_test6. *7. * Open a top-window at the same time and see all the work8. * being done on CPU 0 first and after a short wait on CPU 1.9. * Repeat with different numbers to make sure, it is not a10. * coincidence.11. */12. 13. #inc

6、lude 14. #include 15. #include 16. 17. double waste_time(long n)18. 19. double res = 0;20. long i = 0;21. while(i n * 200000) 22. i+;23. res += sqrt (i);24. 25. return res;26. 27. 28. int main(int argc, char *argv)29. 30. unsigned long mask = 1; /* processor 0 */31. 32. /* bind process to processor

7、0 */33. if (sched_setaffinity(0, sizeof(mask), &mask) 21. while (i 23. res += sqrt(i);28. void *thread_func(void *param)33. if (pthread_setaffinity_np(pthread_self(), sizeof(mask), 34. &35. perror(pthread_setaffinity_np36. 37. 38. /* waste some time so the work is visible with 39. printf(, waste_tim

8、e(2000);40. 41. mask = 2;42. if (pthread_setaffinity_np(pthread_self(), sizeof(mask), 43. &44. perror(45. 46. 47. /* waste some more time to see the processor switch */48. printf(49. 50. 51. int main(int argc, char *argv)52. 53. pthread_t my_thread;54. 55. if (pthread_create(&my_thread, NULL, thread

9、_func, 56. NULL) != 0) 57. perror(pthread_create58. 59. pthread_exit(NULL);60. void CPU_ZERO (cpu_set_t *set)这个宏对 CPU 集 set 进行初始化,将其设置为空集。void CPU_SET (int cpu, cpu_set_t *set)这个宏将 cpu 加入 CPU 集 set 中。void CPU_CLR (int cpu, cpu_set_t *set)这个宏将 cpu 从 CPU 集 set 中删除。int CPU_ISSET (int cpu, const cpu_set_t *set)如果 cpu 是 CPU 集 set 的一员,这个宏就返回一个非零值(true),否则就返回零(false)。#include#include

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1