• Linux top命令的用法详细详解


    https://www.cnblogs.com/fuqu/p/10230385.html

     

    Linux top命令的用法详细详解

     

    正文

    参考:https://www.cnblogs.com/zhoug2020/p/6336453.html

    1、命令字段详解

    top命令的输出如下

    image

    • 第一行:系统运行时间和平均负载

    当前时间、系统已运行时间、当前登录用户的数量、最近5、10、15分钟内的平均负载

    • 第二行:任务

    任务的总数、运行中(running)的任务、休眠(sleeping)中的任务、停止(stopped)的任务、僵尸状态(zombie)的任务

    • 第三行:cpu状态
    字段 字段释义
    us user: 运行(未调整优先级的) 用户进程的CPU时间
    sy system: 运行内核进程的CPU时间
    ni niced:运行已调整优先级的用户进程的CPU时间
    id idle:空闲时间
    wa IO wait: 用于等待IO完成的CPU时间
    hi 处理硬件中断的CPU时间
    si 处理软件中断的CPU时间
    st 这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)
    • 第四行:内存

    全部可用内存、已使用内存、空闲内存、缓冲内存

    • 第五行:swap

    全部、已使用、空闲和缓冲交换空间

    • 第七行至N行:各进程任务的的状态监控
    字段 释义
    PID 进程ID,进程的唯一标识符
    USER 进程所有者的实际用户名
    PR 进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
    NI 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
    VIRT

    virtual memory usage 虚拟内存,进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

    1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
    2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

    RES

    resident memory usage 常驻内存,驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

    1、进程当前使用的内存大小,但不包括swap out
    2、包含其他进程的共享
    3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
    4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

    SHR

    SHR:shared memory 共享内存

    1、除了自身进程的共享内存,也包括其他进程的共享内存
    2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
    3、计算某个进程所占的物理内存大小公式:RES – SHR
    4、swap out后,它将会降下来

    S

    这个是进程的状态。它有以下不同的值:

    • D - 不可中断的睡眠态。
    • R – 运行态
    • S – 睡眠态
    • T – 被跟踪或已停止
    • Z – 僵尸态
    %CPU 自从上一次更新时到现在任务所使用的CPU时间百分比。%CPU显示的是进程占用一个核的百分比,而不是整个cpu(N核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100
    %MEM 进程使用的可用物理内存百分比
    TIME+ 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒
    COMMAND 运行进程所使用的命令。进程名称(命令名/命令行)

    2、交互命令

    按“h”或者“?”,会显示帮助,如下

    image

    Z:改变颜色;B:加粗

    t:显示和隐藏任务/cpu信息;m:内存信息

    1:监控每个逻辑CPU的状况;

    f:进入字段显示配置模式,可增加或者移除显示字段,按相应的字母新增或去除;o:进入字段顺序设置模式,可配置显示位置顺序,按相应的字母往下移动,按“shift+相应的字母”往上移动         ---------常用

    F:进入字段排序配置模式,可设置排序的字段;

    R:正常排序/反向排序;

    s:设置刷新的时间--------常用

    u:输入用户,显示用户的任务

    i:忽略闲置和僵死进程。这是一个开关式命令。

    r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。

    c:切换显示命令名称和完整命令行。

    M:根据驻留内存大小进行排序。-------------常用

    P:根据CPU使用百分比大小进行排序。-----------常用

    H:显示线程

    3、常用参数与命令

    d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。

    p:通过指定监控进程ID来仅仅监控某个进程的状态。

    top –p PID

    -H: 设置线程模式

    显示某个进程所有活跃的线程消耗情况

    top -H -p pid

    按f、再按j把P调出来,P代表”Last used CPU”

    image

    设置线程模式下:第二行的tasks指的是线程个数

    image

    4、疑问

    如下这个java进程设置的最大可用内存为128m,但是这里virt达到了2478m,RES达到了295m,为什么?

    image

    参考答案:http://www.cnblogs.com/seasonsluo/p/java_virt.html

    结论:

    • VIRT高是因为分配了太多地址空间导致。
    • 一般来说不用太在意VIRT太高,因为你有16EB的空间可以使用。
     
     
    分类: LINUX
     
     
    _______________________________________________________________________________________________________________________________________________________________
     
     
     

    几个cpu

    more /proc/cpuinfo |grep "physical id"|uniq|wc -l

    每个cpu是几核(假设cpu配置相同)

    more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l

    cat /proc/cpuinfo | grep processor

    1. 查看物理CPU的个数
    #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
     
    2. 查看逻辑CPU的个数
    #cat /proc/cpuinfo |grep "processor"|wc -l
     
    3. 查看CPU是几核
    #cat /proc/cpuinfo |grep "cores"|uniq
     
    4. 查看CPU的主频
    #cat /proc/cpuinfo |grep MHz|uniq

    uname -a

    Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux

    (查看当前操作系统内核信息)

     

    cat /etc/issue | grep Linux

    Red Hat Enterprise Linux AS release 4 (Nahant Update 5)

    (查看当前操作系统发行版信息)

     

    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

          8  Intel(R) Xeon(R) CPU            E5410   @ 2.33GHz

    (看到有8个逻辑CPU, 也知道了CPU型号)

     

    cat /proc/cpuinfo | grep physical | uniq -c

          4 physical id      : 0

          4 physical id      : 1

    (说明实际上是两颗4核的CPU)

     

    getconf LONG_BIT

    32

    (说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)

     

    cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

    8

    (结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)

     

     

     

     

     

    如何获得CPU的详细信息:

    linux命令:cat /proc/cpuinfo

    用命令判断几个物理CPU,几个核等:

    逻辑CPU个数:
    # cat /proc/cpuinfo | grep "processor" | wc -l

    物理CPU个数:
    # cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

    每个物理CPU中Core的个数:
    # cat /proc/cpuinfo | grep "cpu cores" | wc -l

    是否为超线程?
    如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。

    每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
    # cat /proc/cpuinfo | grep "siblings"

     
    标签: Linux
     
  • 相关阅读:
    MFC绘制直角坐标系
    mfc画波形函数
    ciscn_2019_ne_5
    ciscn_2019_n_5
    [ZJCTF 2019]NiZhuanSiWei
    ciscn_2019_n_1
    pwn-100
    2014提高组笔试错题
    BZOJ3211: 花神游历各国
    主席树模板
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/14096810.html
Copyright © 2020-2023  润新知