性能调优之top命令详解

摘要:
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。第一行是任务队列信息,同uptime命令的执行结果。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。qRES进程使用的、未被换出的物理内存大小,单位kb。

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

在linux系统下输入top命令如下:性能调优之top命令详解第1张

参数含义

top - 00:10:55 up 81 days,  6:00, 17 users,  load average: 0.00, 0.02, 0.05Tasks: 155 total,   1 running, 153 sleeping,   0 stopped,   1zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0st
KiB Mem :  3881920 total,   467472 free,   724592 used,  2689856 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2632956avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+COMMAND                                             
    9 root      20   0       0      0      0 S   0.3  0.0  20:17.67rcu_sched                                           
  400 root      20   0 1381588  37088   5316 S   0.3  1.0 247:34.50CmsGoAgent.linu                                     
 6547 root      10 -10  165896  42956   6564 S   0.3  1.1 159:56.44AliYunDun                                           
 7364 44854885  20   0 3551588  91672  15488 S   0.3  2.4  36:26.60java                                                
11880 root      20   0  116268  15576   4424 S   0.3  0.4 128:42.67node_exporter                                       
    1 root      20   0  125952   3636   1532 S   0.0  0.1  27:24.68systemd                                             
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.69kthreadd                                            
    3 root      20   0       0      0      0 S   0.0  0.0   0:37.74 ksoftirqd/0                                         
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                        
    7 root      rt   0       0      0      0 S   0.0  0.0   0:49.07 migration/0                                         
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh         

统计信息区前五行是系统整体的统计信息。

第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

00:10:55当前时间
up 81 days,  6:00,    系统已运行时间(天:时:分)
17users,     当前登录用户数
load average: 0.00, 0.02, 0.05     系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s): 
0.3%us 用户空间占用CPU百分比
1.0%sy 内核空间占用CPU百分比
0.0%ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7%id 空闲CPU百分比
0.0%wa 等待输入输出的CPU时间百分比
0.0%hi:硬件CPU中断占用百分比
0.0%si:软中断占用百分比
0.0%st:虚拟机占用百分比

最后两行为内存信息。内容如下:

Mem:
191272k total    物理内存总量
173656k used    使用的物理内存总量
17616k free    空闲内存总量
22052k buff/cache    用作内核缓存的内存量
Swap: 
192772k total    交换区总量
0k used    使用的交换区总量
192772k free    空闲交换区总量
123988k cached    缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号  列名    含义
a    PID     进程id
b    PPID    父进程id
c    RUSER   Real user name
d    UID     进程所有者的用户id
e    USER    进程所有者的用户名
f    GROUP   进程所有者的组名
g    TTY     启动进程的终端名。不是从终端启动的进程则显示为 ?
h    PR      优先级
i    NI      nice值。负值表示高优先级,正值表示低优先级
j    P       最后使用的CPU,仅在多CPU环境下有意义
k    %CPU    上次更新到现在的CPU时间占用百分比
l    TIME    进程使用的CPU时间总计,单位秒
m    TIME+   进程使用的CPU时间总计,单位1/100秒
n    %MEM    进程使用的物理内存百分比
o    VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p    SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
q    RES     进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r    CODE    可执行代码占用的物理内存大小,单位kb
s    DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t    SHR     共享内存大小,单位kb
u    nFLT    页面错误次数
v    nDRT    最后一次写入到现在,被修改过的页面数。
w    S       进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
x    COMMAND 命令名/命令行
y    WCHAN   若该进程在睡眠,则显示睡眠中的系统函数名
z    Flags   任务标志,参考 sched.h

以下2个命令会很大的CPU使用,可以通过以下2个命令结合top命令观察CPU使用率

{ yes > /dev/null & } && sleep 30 && ps -ef|grep yes|awk '{print $2}' |xargs kill


for i in $(seq 0 $(($(cat /proc/cpuinfo |grep processor|wc -l)-1)));do taskset -c $i yes > /dev/null & done && sleep 30 && ps -ef|grep yes|awk '{print $2}'|xargs kill

常用命令

  • -d 时间间隔
  • -n 执行次数
  • -p 查看指定端口的进程数据
  • -b 批处理输出
top交互命令
在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了s选项,其中一些命令可能会被屏蔽。
  • h显示帮助画面,给出一些简短的命令总结说明
  • k终止一个进程。
  • i忽略闲置和僵死进程。这是一个开关式命令。
  • q退出程序
  • r重新安排一个进程的优先级别
  • S切换到累计模式
  • s改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s
  • f或者F从当前显示中添加或者删除项目
  • o或者O改变显示项目的顺序
  • l切换显示平均负载和启动时间信息
  • m切换显示内存信息
  • t切换显示进程和CPU状态信息
  • c切换显示命令名称和完整命令行
  • M根据驻留内存大小进行排序
  • P根据CPU使用百分比大小进行排序
  • T根据时间/累计时间进行排序
  • W将当前设置写入~/.toprc文件中

性能统计 perf_avg

统计某进程的cpu与mem,

  • 要求统计n次,一次间隔1s,
  • 最后输出平均cpu与mem数据。
  • 字段之间用tab隔开,平均数与之前的数据错开一行
  • 支持输入不同的进程标记来统计不同进程的数据
perf_avg() {
    top -b -d 1 -n $2 |
        grep -i "$1"--color=auto 
            --line-buffered |
        awk '
        BEGIN{OFS=""}
        {
            cpu+=$9;
            mem+=$10;
            print $9,$10}
        END{
            print "";
            print cpu/NR, mem/NR
        }
        '
}

统计AliYunDun5次的平均CPU与men

$ perf_avg AliYunDun 5
0.0    0.1
0.0    1.2
2.0    1.2
0.0    0.1
4.0    1.2
0.0    0.1
2.0    1.2
0.0    0.1
1.0    0.1
1.0    1.2

1    0.65

免责声明:文章转载自《性能调优之top命令详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android LBS系列03 Geocoder类与地址显示CI框架3.x 之文件上传与生成缩略图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java 开发 2.0: 现实世界中的 Redis

原文地址:http://www.ibm.com/developerworks/cn/java/j-javadev2-22/ 之前,我已在本系列中讨论过 NoSQL 的概念,也介绍了一些与 Java 平台兼容的 NoSQL 数据存储,其中包括 Google 的 Bigtable 和 Amazon 的 SimpleDB。此外,我还讨论过较为常见的基于服务器的...

Delphi数据库处理

Delphi数据库处理 第一节 BDE、ADO、InterBase和dbExpress Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。 BDE(Bor...

nginx配置及性能调优

https://www.toutiao.com/i6765746230141125132/?timestamp=1575450096&app=news_article&group_id=6765746230141125132&req_id=201912041701360100260760263C04643 2.4、配置默认主页loc...

cpu 之二 酷睿i3/i5/i7处理器到底简单区别

自从Intel推出酷睿系列处理器以来,i3、i5、i7处理器成为家喻户晓的品牌,这是商品很流行的一种根据级别定位命名的方式,即数字越大,代表相应产品价格越贵、性能越好。 一:普通的认识 Intel Core i7系列定位为发烧级、高性能用户专属,他们拥有4核心+8线程(Extreme系列则拥有6核心+12线程)、高主频、超大容量三级缓存等特性,性能是最强的...

centos性能优化cpu相关的测试及方法

工具下载地址https://src.fedoraproject.org/repo/pkgs/stress/stress-1.0.4.tar.gz/a607afa695a511765b40993a64c6e2f4/stress-1.0.4.tar.gzhttps://ftp.osuosl.org/pub/blfs/conglomeration/sysstat...

linux进程状态详解(转)

  Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。  在下文将对进程的 R、S、D、T、Z、X 六种状态做个说明。 PROCESS STATE CODES        Here are the different values that the s, stat and state...