承德网站建设价格,郑州电力高等专科学校宿舍,全屏网站模版,wordpress宗旨是什么由于服务器上某几个核被C程序绑定了#xff0c;我们的java程序有的线程会使用到#xff0c;导致C程序丢包异常#xff0c;所以需要将JAVA程序绑定到指定的CPU核上
1.命令介绍
1.taskset命令
taskset -c cpu核编号 pid #可以指定进程绑定到哪个cpu核上2.t…由于服务器上某几个核被C程序绑定了我们的java程序有的线程会使用到导致C程序丢包异常所以需要将JAVA程序绑定到指定的CPU核上
1.命令介绍
1.taskset命令
taskset -c cpu核编号 pid #可以指定进程绑定到哪个cpu核上2.top命令
我们可以使用top命令来查看,cpu各核的使用情况进程绑定到哪个cpu核上
top 输入top后按1来查看各cpu核使用情况找个空闲的cpu核 top -H -p pid 查看进程中各线程cpu使用情况按f之后按方向键或者前面的字母键选中Last used cpu(SMP), 按空格键选中然后按esc返回就可以查看绑定的cpu核 P列的数字就cpu核的编号 1.使用
taskset需要指定pid但是如果进程已经启动了再指定核之前创建的线程就可能已经飘到了别的cpu核上了导致不可控所以我们需要修改程序启动脚本在启动的时候就指定cpu核
nohup test.sh $1 nohup.out 21 #原来的命令
# 这是我们的启动脚本叫start.sh里面调用了test.shtest.sh里是执行java -jar命令和一些jvm参数之类的启动项
#所以我们直接将test.sh脚本指定到特定的核上即可
taskset -c 20-24 nohup test.sh $1 nohup.out 21 #修改后的命令启动成功后 jps -l 查看一下java进程的pid然后使用top -H -p 查看一个各线程所使用的cpu核为指定的核即可。
2.如果想指定某些线程绑定到固定cpu核上来提升性能可以使用Java-Thread-Affinity库
https://github.com/OpenHFT/Java-Thread-Affinity
dependencygroupIdnet.openhft/groupIdartifactIdaffinity/artifactIdversion3.2.3/version
/dependency具体实现我也没使用过就不写了