zoukankan      html  css  js  c++  java
  • 获取Linux进程运行在哪个CPU内核上面的方法

    首先,当某些时候,在一段程序或者借助第三方软件进行程序协助的时候,在性能的优化,以及程序bug的排除上面,可能会想知道该程序执行的进程被调度到了哪一个CPU内核进行工作,从而可以推断是否是受限于硬件还是受限于程序。下面有四种方法,查看进程具体运行的位置:

    第一种:

    taskset命令:

    首先使用:ps -ef 查看系统具体进程情况:

    我们想知道上面的chrome浏览器具体CPU内核情况:

    使用如下命令:taskset -c -p <pid>

    接下来输入:

    taskset -c -p 6460

    可以得到如下(本机是CPU核数为4核):

    这是因为chrome进程并没有明确的被固定在某个CPU内核上,所以告诉我们,该进程可能被运行在0~3任何一个CPU内核之上。

    如果,某个进程被明确固定了在某个CPU内核上,则会输出:

    pid 6460's current affinity list: 2 (假设)

    输出这个表明,该进程被固定在CPU内核2上

    上面的第一种方法,使用taskset命令,对于进程没有固定在具体CPU内核上的时候,是无法得出该进程此时处于哪个CPU内核,我们可以采取第二种方法:

    第二种:

    使用命令: ps -o pid, psr, comm -p <pid>

    该命令可以明确的告诉你线程或者进程此时所在CPU内核的 ID。

    请看实例:

    输入:

    ps -o pid, psr, comm -p 6460

    可以看到:进程的PID为6460此时在CPU内核2上面运行。(注意是“此时”,因为该进程没有被固定,所以会随着系统的调度而发生变化)

    在第二种方法中,我们仅仅是可以查看该进程你查看时刻处于哪个CPU内核中,无法实时的看到随着系统调度,CPU内核的变化情况。如果需要看到实时的变化情况,可以使用第三种方法:

    第三种:

    使用命令:top

    top 命令也可以显示 CPU 被分配给哪个进程。首先,在top 命令中使用“P”选项。然后按“f”键,显示中会出现 “Last used CPU” 列。

    请看实例:

    top -p 6460

    我们可以监视到随着时间和系统调度的改变,CPU的自动分配情况是怎么样的

    接下来,我们有时候需要查看CPU内核以及系统内存或者交换区的使用情况来对整体的负载进行判断,我们可以使用第四种方法:

    第四种:

    使用命令:htop

    这个命令可以详细的列出计算机的各个CPU内核的使用百分比,以及内存的使用百分比,swap区域的使用百分比

    请看实例:

    输入:

    htop

    注意:这里看到上面CPU内核的使用情况是从 1~4,这个和上面三种方法从0~3是一样的,只是对应的起始编号不同。

  • 相关阅读:
    Django Rest Framework --用户访问频率限制
    Django Rest Framework --权限控制
    Django Rest Framework --认证
    Django Rest Framework
    查找最大或最小的 N 个元素
    collections集合模块 [namedtuple,deque,*]
    Dream
    jQuery Ajax -附示例
    原生Ajax
    Python3 里面的线程池
  • 原文地址:https://www.cnblogs.com/ShaunChen/p/6159662.html
Copyright © 2011-2022 走看看