1. 什么是绑核?

所谓绑核,其实就是设定某个进程/线程与某个CPU核的亲和力(affinity)。设定以后,Linux调度器就会让这个进程/线程只在所绑定的核上面去运行。
但并不是说该进程/线程就独占这个CPU的核,其他的进程/线程还是可以在这个核上面运行的。如果想要实现某个进程/线程独占某个核,就要使用cpuset命令去实现。
其实,很多情况下,为了提高性能,Linux调度器会自动的实现尽量让某个进程/线程在同样的CPU上去运行。所以,除非必须,我们没有必要显式的去进程绑核操作。

2. 如何绑核?
taskset用于将某个进程/线程绑定到CPU的某个或某几个核上面,其用法如下:
taskset -p pid
可以查出进程pid现在的绑核情况。
设置绑核有两种方法,一种是掩码形式,一种是直接绑定。下面分别介绍:
2.1 掩码形式绑核
按照二进制形式,从最低位到最高位代表物理CPU的#1、#2、……、#n号核。
比如:0x00000001代表CPU的0号核,0x00000003代表CPU的0号和3号核。
需要注意的是,并非掩码中给出的CPU核就一定会存在,比如0x00000400理论上代表CPU的第10号核,但是该核在真正的计算机上面并不一定是存在的。而且,如果我们试图将物理上并不存的核绑定给某个进程时,会返回错误。掩码形式的绑核命令为:
taskset -p mask pid
2.2 按CPU数直接绑核
taskset -cp cpu-list pid
其中cpu-list是数字化的cpu列表,从1开始。多个不连续的cpu可用逗号连接,连续的可用短现连接,比如1,2,5-11等。
比如“taskset -cp 1,2,5-11 9865”命令表示将进程9864绑定到#1、#2、#5~#11号核上面。

转自:http://time-track.cn/taskset-command.html

最新文章

  1. 给button按钮加回车事件
  2. [转]AngularJs 多语言的使用 angular-translate
  3. Pro ASP.NET MVC 5 Framework.学习笔记.6.3.MVC的必备工具
  4. [GRYZ2015]INCR
  5. 在Windows Server 下安装 Oracle 11G 的一般步骤
  6. #pragma——push and pop
  7. java中memcached
  8. 学习了php之后再来看php怎样学java
  9. 201521123079 《Java程序设计》第1周学习总结
  10. 设计模式的征途—23.解释器(Interpreter)模式
  11. [物理学与PDEs]第2章第4节 激波 4.2 熵条件
  12. Zabbix监控nginx性能的另外一种方式
  13. Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)
  14. 【BZOJ1213】高精度开根
  15. PLMN概念和应用设置
  16. Oracle 导入大量数据
  17. js去除字符串空格(空白符)
  18. 物理机通过http访问eNSP虚拟Server
  19. python-计算数据的相关性
  20. HttpContext.Current為空匯總

热门文章

  1. chrome扩展写法
  2. Python开发环境搭建方法简述
  3. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)
  4. POJ-2346 Lucky tickets(线性DP)
  5. BAT等大厂已开源的70个实用工具盘点(附下载地址)
  6. Oracle备份恢复之热备份恢复及异机恢复
  7. shuffle
  8. ios -RunTi me(相关知识)
  9. grpc protobuf
  10. MySQL(4):主从复制原理