linux进程和线程排查,在Linux上,如何检查进程及其线程的CPU亲和性?

这很简单.收集所有进程ID和线程ID,然后调用taskset.

pname="java" # for example

for pid in $(pgrep "${pname}")

do

[ "${pid}" != "" ] || exit

echo "PID: ${pid}"

for tid in \

$(ps --no-headers -ww -p "${pid}" -L -olwp | sed 's/$/ /' | tr -d '\n')

do

taskset -cp "${tid}" # substitute thread id in place of a process id

done

done

输出

PID: 15695

pid 15695's current affinity list: 0

pid 15696's current affinity list: 0

pid 15697's current affinity list: 0

...

这不是一个简单的单行的原因是因为pgrep命令不能返回线程ID(只有进程ID).我们使用命令ps –no-headers -ww -p“${pid}”-L -olwp做了一些额外的工作

在Ubuntu 12上测试,bash 4.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值