Linux性能工具

Linux性能工具

以下操作都在linux上进行,为了能够让故事正常进行,用docker配一个centos出来

// 新建一个容器 并执行脚本
docker run -itd centos:latest /bin/bash

// 如果退出,需要再次进入的场合
docker exec -it xx /bin/bash

cpu性能

uptime 得到平均负载

[root@bd03d2536b13 /]# uptime
 11:14:41 up 16:30,  0 users,  load average: 2.76, 2.88, 2.97
 
  1. 当前时间 16:30
  2. 系统已运行的时间 11:14:41
  3. 当前在线用户0 user
  4. 平均负载:2.76, 2.88, 2.97,最近1分钟、5分钟、15分钟系统的负载

cat /proc/loadavg 最直接查看系统平均负载命令

[root@bd03d2536b13 /]# cat /proc/loadavg
3.52 3.11 3.04 5/761 36

除了前3个数字表示平均进程数量外,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID

top指令

top - 11:33:27 up 16:49,  0 users,  load average: 3.17, 3.02, 3.03
Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s): 71.2 us, 12.4 sy,  0.0 ni, 16.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1989.5 total,    123.2 free,   1537.8 used,    328.5 buff/cache
MiB Swap:   1024.0 total,    201.7 free,    822.2 used.    302.2 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    1 root      20   0   12028   3000   2644 S   0.0   0.1   0:00.08 bash
   14 root      20   0   12028   3292   2756 S   0.0   0.2   0:00.07 bash
   41 root      20   0   48412   3772   3168 R   0.0   0.2   0:00.00 top

top指令有很多组合,这个之后再说。先只是简单的top指令。

第一行:和uptime得到的数据差不多,最后一个如果大于5相当于是系统负载很高的意思了。

top - 11:33:27 up 16:49,  0 users,  load average: 3.17, 3.02, 3.03

第二行:表达当前任务有3个,1个在跑,两个睡眠,0个停止,0个僵尸线程

Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie

第三行:表达cpu情况如何

%Cpu(s): 71.2 us, 12.4 sy,  0.0 ni, 16.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us, user: 用户空间占用CPU的百分比。
  • sy,system: 内核空间占用CPU的百分比。
  • ni,niced:运行已调整优先级的用户进程的CPU时间
  • wa,IO wait: 用于等待IO完成的CPU时间
  • hi:处理硬件中断的CPU时间
  • si: 处理软件中断的CPU时间
  • st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。

可以使用t指令切换显示。

第四行:表达内存使用情况,类似于free指令。第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。

MiB Mem :   1989.5 total,    123.2 free,   1537.8 used,    328.5 buff/cache
MiB Swap:   1024.0 total,    201.7 free,    822.2 used.    302.2 avail Mem

物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。

交换部分显示的是:全部、已使用、空闲和缓冲交换空间。

可以用m指令切换显示。

各个进程的状态主体:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    1 root      20   0   12028   3000   2644 S   0.0   0.1   0:00.08 bash
   14 root      20   0   12028   3292   2756 S   0.0   0.2   0:00.07 bash
   41 root      20   0   48412   3772   3168 R   0.0   0.2   0:00.00 top
  • PID:进程ID,进程的唯一标识符

  • USER:进程所有者的实际用户名。

  • PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

  • NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级

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

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

  • SHR:SHR是进程使用的共享内存。共享内存大小,单位kb

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

    • D - 不可中断的睡眠态。
    • R – 运行态
    • S – 睡眠态
    • T – 被跟踪或已停止
    • Z – 僵尸态

%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM:进程使用的可用物理内存百分比。

TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)

1指令可以看到每个核上的情况

vmstat

这个指令可以得到系统整体的cpu使用率上下文切换次数,中断次数,还包括处于运行和不可中断状态的进程数量。

[root@bd03d2536b13 /]# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0 849408 829344  66192 281136    1    4     9    12    3   88 56 10 35  0  0
 4  0 849408 613752  66240 279692    0    0     0   156 6027 9175 23 19 58  0  0
 4  0 849408 367984  66248 279580    0    0     0    28 5881 6941 43 16 40  0  0
 4  0 849408 283032  66248 279572    0    0     0     9 6702 6924 66 13 21  0  0
 4  0 849408 243308  66252 279904    0    0     0     4 6421 7482 74 10 17  0  0

5 5的含义是5s内进行5次采样

r: 运行队列中进程数量

b: 等待IO的进程数量

swpd: 使用虚拟内存大小

free: 可用内存大小

buff: 用作缓冲的内存大小

cache: 用作缓存的内存大小

si: 每秒从交换区写到内存的大小

so: 每秒写入交换区的内存大小

bi: 每秒读取的块数

bo: 每秒写入的块数

in: 每秒中断数,包括时钟中断。【interrupt】

cs: 每秒上下文切换数。 【count/second】

us: 用户进程执行时间(user time)

sy: 系统进程执行时间(system time)

id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。

wa: 等待IO时间

如果r经常大于4,id经常少于40,表示cpu的负荷很重。

如果bi,bo长期不等于0,表示内存不足。

如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354