一、
1、cpu数,物理核,逻辑核的关系:
逻辑CPU个数 > 物理CPU个数 * CPU内核数 开启了超线程
逻辑CPU个数 = 物理CPU个数 * CPU内核数 没有开启超线程
2、cpu数,物理核,逻辑核的查看方法:
cat /proc/cpuinfo
processor:逻辑核的个数(逻辑核的id)
physical id:物理CPU的id
cpu cores:每个物理CPU的物理核个数
siblings:每个物理CPU上逻辑CPU个数
core id:每个CPU上的物理核的id
3、查看CPU(各个逻辑核)占用情况:
top 点击"1"可以查看各个逻辑核的占用情况
4、使用cat /proc/cpuinfo查看cpu信息,如下两个信息:
processor,指明第几个cpu处理器
cpu cores,指明每个处理器的核心数
二、进程绑定逻辑核
1、命令绑定
//g++ -o test test.cpp
启动两个实例,将进程都绑定到Cpu0:
taskset -c 0 ./test
taskset -c 0 ./test
通过top, 输入“1”查看系统cpu状况:
Cpu1空闲,Cpu0使用100%
继续测试,将pid为18057的test迁移到CPU1上运行,执行:
$ taskset -pc 1 18057
pid 18057's current affinity list: 0
pid 18057's new affinity list: 1
Cpu0及Cpu1都进入忙碌状态了!
继续测试!将pid为18210的test也迁移到Cpu1上运行,执行:
Cpu0闲着,Cpu1忙碌起来了!
2、显示进程运行的CPU
命令taskset -p 21184
显示结果:
pid 21184's current affinity mask: ffffff
3、指定进程运行在某个特定的CPU上
命令taskset -pc 3 21184
显示结果:
pid 21184's current affinity list: 0-23
pid 21184's new affinity list: 3
注:3表示CPU将只会运行在第4个CPU上(从0开始计数)。
4、进程启动时指定CPU
命令taskset -c 1 ./redis-server ../redis.conf
5、查看进程当前运行在哪个cpu上
taskset -p 2726
pid 2726's current affinity mask: 3
显示的十进制数字3转换为2进制为最低两个是1,每个1对应一个cpu,所以进程运行在2个cpu上。