linux 鸟哥私房菜进阶,Linux 鸟哥私房菜-总结篇-性能命令

想要了解系统的平均负载,可以借助一些linux命令。

[uptime]

-s 从某时刻以来的系统负载 yyyy-mm-dd MM:HH:SS

13:57:57 up 4:16, 1 user, load average: 0.00, 0.01, 0.05

跟w命令的第一行是一样的。

[vmstat] 动态的了解,系统资源运作。

CPU 内存 磁盘输入输出的状态

-a 显示活跃和非活跃内存

-f 显示从系统启动至今的系统复制(fork)的进程数量

-S 让显示的数据有单位,参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)

-s 将一些事件(从开机到现在)导致的内存变化情况

vmstat

procs ———–memory———- —swap– —–io—- -system– ——cpu—–

r b swpd free buff cache si so bi bo in cs us sy id wa st

2 0 0 166412 34724 324184 0 0 21 4 62 135 1 0 99 0 0

一 进程字段

1. r 代表可运行进程的数量(正在运行或等待运行时)。

2. b 不可唤醒的进程数量

ps: 这俩越多表明系统太忙。很多进程就无法被执行或者一直等待而无法被唤醒。

二 内存字段

1. swpd 虚拟内存

2. free 空闲的物理内存

3. buff 用于缓冲存储器

4. cache 用于高速缓存

三 内存置换空间

1. si 从磁盘中将进程取出的量(每秒从交换区写到内存的大小)

2. so 由于内存不足而将没用到的进程写入到磁盘的swap容量(每秒写入交换区的内存大小)

ps: 如果si/so 数值太大,表示内存内的数据常常得在磁盘与主存储器之间传来传去,系统效能会差

四 IO 磁盘读写的项目

1. bi 由磁盘读取的区块数量

2. bo 写入到磁盘去的区块数量

ps: 如果这部分值很高,代表系统的I/O 非常忙碌

五 系统项目

1. in 每秒被中断的次数,包括时钟中断

2. cs 每秒上下文切换

ps 这两个数值越大,代表系统与接口设备沟通的非常频繁(接口社保包括:磁盘,网络卡,时间钟等)

六 CPU项目

1. us 非核心层的CPU使用状态

2. sy 核心层所使用的CPU状态

3. id 闲置的状态

4. wa 等待I/O 所耗费的CPU状态

5. st 被其虚拟机所盗用的CPU状态

[dstat]

dstat命令是一个全能系统信息统计工具。与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,譬如输入dstat 3即每三秒收集一次,但最新的数据都会每秒刷新显示。和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat -c即显示CPU的使用情况

dstat

默认参数 -cdngy

-a 等同于cdngy

-c 显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。

-d 显示磁盘读写数据大小。

-n 显示网络状态

-g 显示paging那部分

-p 显示进程状态

-y 显示系统的中断,上线文切换

-l 显示系统负载情况

-r 显示io情况

-s swap情况

-m:显示内存使用情况

—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system– –io/total-

usr sys idl wai hiq siq| read writ| recv send| in out | int csw | read writ

1 0 99 0 0 0| 12k 8083B| 0 0 | 0 0 | 77 134 |0.66 0.30

0 0 100 0 0 0| 0 0 |2349B 1378B| 0 0 | 61 115 | 0 0

0 0 100 0 0 0| 0 4096B| 900B 500B| 0 0 | 52 95 | 0 1.00

0 0 100 0 0 0| 0 0 |4077B 516B| 0 0 | 70 125 | 0 0

hiq :hardware interrupt 硬中断

siq : 软中断

进阶用法:http://dag.wiee.rs/home-made/dstat/

/**

latency

英 /’leɪtənsɪ/ 美 /’letnsi/

n. 潜伏;潜在因素

**/

dstat -c –top-cpu -d –top-bio –top-latency

—-total-cpu-usage—- -most-expensive- -dsk/total- —-most-expensive—- –highest-total–

usr sys idl wai hiq siq| cpu process | read writ| block i/o process | latency process

1 0 99 0 0 0|java 0.2| 12k 7995B|init 6331B 38B|rcuos/0 187

1 1 98 0 0 0| | 0 0 | |rcuos/0 288

1 0 98 0 0 1|mysqld 1.0| 0 0 | |nginx: worker 236

2 0 98 0 0 0| | 0 4096B| |nginx: worker 138

1 1 98 0 0 0|java 1.0| 0 0 | |nginx: worker 77

1 1 98 0 0 0| | 0 0 | |rcu_sched 332

0 0 100 0 0 0| | 0 20k|jbd2/sda1-8 0 12k|rcuos/0 322

2 0 98 0 0 0| | 0 0 | |nginx: worker 125

1 1 98 0 0 0| | 0 0 | |nginx: worker 121

更多的top插件,请参考dstat –list

dstat -c –top-cpu -d –top-bio –top-latency –dstat-mem –top-oom

cpu disk 内存 内存溢出

Terminal width too small, trimming output.

—-total-cpu-usage—- -most-expensive- -dsk/total- —-most-expensive—- –highest-total– —dstat-memory-usage–>

usr sys idl wai hiq siq| cpu process | read writ| block i/o process | latency process |virtu resid share data>

1 0 99 0 0 0|java 0.2| 11k 7852B|init 6179B 37B|rcuos/0 184| 34k 7528B 2824B 4556B>

1 0 99 0 0 0|java 1.0| 0 0 | |rcu_sched 318| 35k 7704B 2836B 4944B>

2 0 98 0 0 0| | 0 0 | |nginx: worker 110| 35k 7716B 2836B 4944B>

2 1 97 0 0 0| | 0 0 | |nginx: worker 114| 35k 7740B 2836B 4944B>

2 1 97 0 0 0| | 0 0 | |rcuos/0 278| 35k 7740B 2836B 4944B>

0 1 99 0 0 0| | 0 0 | |nginx: worker 104| 35k 7740B 2836B 4944B>

1 2 97 0 0 0| | 0 12k|jbd2/sda1-8 0 4096B|nginx: worker 199| 35k 7740B 2836B 4944B>

0 1 99 0 0 0| | 0 0 | |nginx: worker 198| 35k 7740B 2836B 4944B>

2 1 97 0 0 0| | 0 0 | |nginx: worker 104| 35k 7740B 2836B 4944B>

1 1 98 0 0 0|VBoxService 1.0| 0 0 | |rcuos/0 257| 35k 7740B 2836B 4944B>

1 1 98 0 0 0|java 1.0| 0 0 | |nginx: worker 91| 35k 7740B 2836B 4944B>

1 1 98 0 0 0| | 0 0 | |nginx: worker 141| 35k 7740B 2836B 4944B>

1 1 98 0 0 0| | 0 0 | |nginx: worker 123| 35k 7740B 2836B 4944B>

1 1 98 0 0 0| | 0 0 | |nginx: worker 115| 35k 7740B 2836B 4944B>

2 0 98 0 0 0| | 0 0 | |rcuos/0 293| 35k 7740B 2836B 4944B>

1 1 98 0 0 0| | 0 0 | |rcu_sched 149| 35k 7748B 2836B 4944B>^C

[pidstat]

报告linux任务统计

-C 后跟命令名 (可以为正则表达式)

-u:默认的参数,显示各个进程的cpu使用统计

-r:显示各个进程的内存使用统计

-d:显示各个进程的IO使用情况

-p:指定进程号

-w:显示每个进程的上下文切换情况

pid -w -p 22881

06:40:39 PM PID cswch/s nvcswch/s Command

06:40:39 PM 22881 0.00 0.00 php-fpm

PID 进程号

cswch context switch 每秒自原切换任务的上下文总数

所谓自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换

比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换

nvcswch/s involuntary context switch 每秒非自原切换任务的上下文总数

而非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换,比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换

进程上下文切换几种场景

其一,为了保证所有进程可以得到公平调度,CPU 时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,就会被系统挂起,切换到其它正在等待 CPU 的进程运行。

第二种,前后两个线程属于同一个进程。此时,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据。

其三,当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度。

其四,当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行。

最后一个,发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序。

pidstat -r

07:01:43 PM PID minflt/s majflt/s VSZ RSS %MEM Command

07:01:43 PM 1 0.00 0.00 19232 1524 0.00 init

07:01:43 PM 573 0.00 0.00 10640 748 0.00 udevd

-r 报告页面错误和内存利用率。

PID

进程id

minflt/s

任务每秒发生的小故障总数,这些小故障不需要从磁盘加载内存页。

majflt/s

任务每秒发生的主要错误总数,即需要从磁盘加载内存页的错误。

VSZ

Virtual Size:

整个任务的虚拟内存使用量(以千字节为单位)。

RSS

Resident Set Size:

任务使用的物理内存(单位为千字节)。

pid -d 显示各个进程的IO使用情况

Report I/O statistics (kernels 2.6.20 and later only). The following values are displayed:

kB_rd/s

任务每秒从磁盘读取的千字节数。

kB_wr/s

任务每秒写入磁盘的千字节数。

kB_ccwr/s

任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生

07:02:34 PM PID kB_rd/s kB_wr/s kB_ccwr/s Command

07:02:34 PM 7324 0.00 0.00 0.00 sftp-server

07:02:34 PM 7621 0.00 0.00 0.00 bash

07:02:34 PM 18954 0.00 0.00 0.00 nginx

07:02:34 PM 18956 0.00 0.00 0.00 nginx

07:02:34 PM 18957 0.00 0.00 0.00 nginx

07:02:34 PM 18960 0.00 0.00 0.00 nginx

07:02:34 PM 18961 0.00 0.00 0.00 nginx

07:02:34 PM 18962 0.00 0.00 0.00 nginx

07:02:34 PM 18963 0.00 0.00 0.00 nginx

07:02:34 PM 18964 0.00 0.00 0.00 nginx

哎哟,写日志真TM累啊~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值