一、Top详解

    第一行

    10:18:25 up 当前系统时间
    74 days, 4:33, 系统已经运行天数和小时 例如上方截图为74天4小时32分钟
    users — 当前有3
    load average 后面的三个数分别是1分钟、5分钟、15分钟的负载情况
    第二行

    Tasks — 任务(进程)系统现在共有268个进程,其中处于运行中的有1个,267个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
    第三行cpu状态

    us — 用户空间占用CPU的百分比。
    sy — 内核空间占用CPU的百分比。
    ni — 改变过优先级的进程占用CPU的百分比
    id — 空闲CPU百分比
    wa — IO等待占用CPU的百分比
    hi — 硬中断(Hardware IRQ)占用CPU的百分比
    si — 软中断(Software Interrupts)占用CPU的百分比

    第四行内存状态

    1024k=1M
    8062676k total — 物理内存总量 7877224k used — 使用中的内存总量 185452k free — 空闲内存总量 336584k buffers — 缓存的内存量

    第五行swap交换分区

    8208376k total — 交换区总量 111856k used — 使用的交换区总量 8096520k free — 空闲交换区总量 2774352k cached — 缓冲的交换区总量
    第六行 空行
    第七行第2列

    PID — 进程id

    第七行第2列

    USER — 进程所有者

    第七行第3列

    PR — 进程优先级,实用priority值表示PRI和PR值,或者叫动态优先级
    Linux实际上实现了140个优先级范围,取值范围是从0-139,这个值越小,优先级越高。nice值的-20到19,映射到实际的优先级范围是100-139

    第七行第4列

    NI — nice值。负值表示高优先级,正值表示低优先级

    第七行第5列

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

    第七行第6列

    RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

    第七行第7列

    SHR — 共享内存大小,单位kb



    第七行第8列

    S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

    第七行第9列

    %CPU — 上次更新到现在的CPU时间占用百分比,如果超过100%,那么按1键查看具体每个cpu所占比例

    第七行第10列

    %MEM — 进程使用的物理内存百分比

    第七行第11列

    TIME+ — 进程使用的CPU时间总计,单位1/100秒
    第七行第12列

    COMMAND — 进程名称(命令名/命令行)

    二、其它操作
    op默认的排序列是“%CPU”
    通过”shift + >”或”shift + <”可以向右或左改变排序列

    监控java线程数: ps -eLf | grep java | wc -l

    监控网络客户连接数: netstat -n | grep tcp | grep 侦听端口 | wc -l


    linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:
    image.png

    linux下获取占用内存资源最多的10个进程,可以使用如下命令组合:
    image.png

    Free中的buffer和cache (它们都是占用内存)基于内存的
    buffer :作为buffer cache的内存,是块设备的读写缓冲区

    cache:作为page cache的内存, 文件系统的cache

    如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小

    如何释放Cache Memory
    To free pagecache:
    echo 1 > /proc/sys/vm/drop_caches
    To free dentries and inodes:
    echo 2 > /proc/sys/vm/drop_caches
    To free pagecache, dentries and inodes:
    echo 3 > /proc/sys/vm/drop_caches

    #注意,释放前最好sync一下,防止丢失数据,但是一般情况下没有必要手动释放内存