linux线程绑定cpu内核
通过taskset配置绑定线程内核
文章目录
一、获取[pthread_name]的pid
代码如下(示例):ps -ef|grep [pthread_name] | grep catalina | awk ‘{print $2}’ //通过服务名查看pid
root@ft2000-FT2004:/# ps -ef|grep tomcat | grep catalina | awk '{print $2}'
8969
root@ft2000-FT2004:/#
二、查看设备上的内核数
代码如下(示例):cat /proc/cpuinfo | grep process
root@ft2000-FT2004:/# cat /proc/cpuinfo | grep process
processor : 0
processor : 1
processor : 2
processor : 3
root@ft2000-FT2004:/#
三、查看[pthread_name]服务器的内核数
代码如下(示例):taskset -pc [pid]
root@ft2000-FT2004:/# taskset -pc 8969
pid 8969's current affinity list: 0-3
root@ft2000-FT2004:/#
四、绑定cpu内核
代码如下(示例:三种绑定cpu方式):taskset -pc [cpu_set] [pid]
root@ft2000-FT2004:/# taskset -pc 0 8969
pid 8969's current affinity list: 0-3
pid 8969's new affinity list: 0
root@ft2000-FT2004:/# taskset -pc 0-1 8969
pid 8969's current affinity list: 0
pid 8969's new affinity list: 0,1
root@ft2000-FT2004:/# taskset -pc 0,1,3 8969
pid 8969's current affinity list: 0,1
pid 8969's new affinity list: 0,1,3
root@ft2000-FT2004:/#
五、整合成shell文件一键执行
代码如下(示例):bindingTheKernel.sh [pthread_name] [cpu_set]
#!/bin/bash
pthreadName=$1
cpuSet=$2
pid=$(ps -ef|grep $pthreadName | grep catalina | awk '{print $2}')
taskset -pc ${cpuSet} ${pid}
echo ${pid}
提示:上传到linux上,执行 sudo chmod 777 ./bindingTheKernel.sh 赋权限