加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-05-25 01:42:27 所属栏目:Linux 来源:互联网
导读:在 Linux上,如何检查进程及其线程的CPU亲和性? 这很简单.收集所有进程ID和线程ID,然后调用taskset. pname=java # for examplefor pid in $(pgrep ${pname})do [ ${pid} != ] || exit echo PID: ${pid} for tid in

在 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.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读