Linux与bash:4.Linux终端命令之性能统计命令
Posted new nm个对象
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux与bash:4.Linux终端命令之性能统计命令相关的知识,希望对你有一定的参考价值。
1.linux常用的性能分析命令
2.总体态势命令:uptime
uptime用于查看操作系统的总体态势:返回四个值:当前时间、系统运行了多久时间、当前登录的用户有多少,以及前 1、5 和 15 分钟系统的平均负载。
这里,第一项是当前时间,up 表示系统正在运行,3:00 是系统启动的总时间,最后是系统的负载load信息
什么叫负载load:系统负载是处于可运行runnable或不可中断uninterruptable状态的进程的平均数。可运行状态的进程要么正在使用 CPU 要么在等待使用 CPU。 不可中断状态的进程则正在等待某些 I/O 访问,例如等待磁盘 IO。负载均值的意义根据系统中 CPU 的数量不同而不同,负载为 1 对于一个只有单 CPU 的系统来说意味着负载满了,而对于一个拥有 4 CPU 的系统来说则意味着 75% 的时间里都是空闲的。
平均负载分析:一般情况下单核cpu平均负载不大于3,表示性能良好。n核cpu,平均负载不大于n*3,表示性能良好。
3.操作系统日志:dmesg
应用场景:一般在系统性能发生卡顿等问题时,使用dmesg命令查看系统日志
4.虚拟内存统计:vmstat
(4.1)简介
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。
(4.2)物理内存和虚拟内存区别
我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。
物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(**Swap Space**)。
作为物理内存的扩展,linux会在物理内存不足时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。
(4.3)虚拟内存原理
在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。
在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。
分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。
当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。尽管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)。
(4.4)常见命令展示
vmstat 5 5 【在5秒时间内进行5次采样】
参数解析:
Procs(进程):
r: 运行队列中进程数量
b: 等待IO的进程数量
Memory(内存):
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap:
si: 每秒从交换区写到内存的大小(每秒进入磁盘交换器的大小)
so: 每秒写入交换区的内存大小(每秒从磁盘交换区出来的大小)
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数
bo: 每秒写入的块数
系统:
in: 每秒中断数,包括时钟中断。【interrupt】(比如,当cpu满负载时,你移动鼠标,cpu会中断一些进程,来响应你的鼠标移动。)
cs: 每秒上下文切换数。 【count/second】
CPU(以百分比表示):
us: 用户进程执行时间占用cpu的百分比(user time)
sy: 系统进程执行时间占用cpu的百分比(system time)
id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
wa: 等待IO时间
(4.5)实战:编写一个bash脚本,不断创建进程。然后使用vmstat查看
-
第一步,编写bash脚本
-
vi test.sh
-
-
chmod +x ./test.sh ./test.sh
-
第二步:使用vmstat查看
可以看到r运行队列数一直在50以上
- 第三步:查看进程列表
-
第四步:杀掉相关进程
-
ps -ef | grep test.sh | awk 'kill_sh="kill -9 "$2;system(kill_sh)' 参数解析: ps -ef | grep test.sh----先找出test.sh对应的进程 awk 'kill_sh="kill -9 "$2;system(kill_sh)'-------使用awk执行shell命令。方法:将命令赋值给变量,然后使用system参数去执行变量
-
5.io情况:iostat
列出磁盘io的情况
tps:该设备每秒的传输次数
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read: 读取的总数据量;
kB_wrtn:写入的总数量数据量;
其他参数:
1:iostat 1--------每1秒刷新一次
2:iostat -c-------只查看cpu的io情况
3:iostat -d------只查看磁盘的io情况
6.内存情况:free -m
free -m 查看linux内存使用情况。
一、从系统层面分析
Mem:内存的使用情况总览表。
totel:机器总的物理内存 单位为:M
used:用掉的内存。
free:空闲的物理内存。
注:物理内存(totel)=系统看到的用掉的内存(used)+系统看到空闲的内存(free)
我们平时看内存的使用也就看这些。
二、从程序的角度分析
shared:多个进程共享的内存总和,当前废弃不用。
buffers:缓存内存数(写入磁盘时)。
cached: 缓存内存数(从磁盘读取时)。
注:程序预留的内存=buffers+cached
7.进程详情:top(重要)
inux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。
命令详解:
(1)top命令的顶部显示与uptime命令相似的输出。
这些字段显示:
- 当前时间
- 系统已运行的时间
- 当前登录用户的数量
- 相应最近5、10和15分钟内的平均负载。
(2)任务
第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用’t’切换显示。
(3)cpu状态
第三行显示的是CPU状态。 这里显示了不同模式下的所占CPU时间的百分比。这些不同的CPU时间表示:
- us, user: 运行(未调整优先级的) 用户进程的CPU时间
- sy,system: 运行内核进程的CPU时间
- ni,niced:运行已调整优先级的用户进程的CPU时间
- id: 空闲时间(包括IO等待时间),中央处理器的空闲时间
- wa,IO wait: 用于等待IO完成的CPU时间
- hi:处理硬件中断的CPU时间
- si: 处理软件中断的CPU时间
- st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
可以使用’t’命令切换显示。
(4)内存使用:
第四五两行显示内存使用率,有点像’free’命令。第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。
物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。相似地:交换部分显示的是:全部、已使用、空闲和缓冲交换空间。
(5)字段/列
PID
进程ID,进程的唯一标识符
USER
进程所有者的实际用户名。
PR
进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI
进程的nice值(优先级)。越小的值意味着越高的优先级。
VIRT
进程使用的虚拟内存。
RES
驻留内存大小。驻留内存是任务使用的非交换物理内存大小。
SHR
SHR是进程使用的共享内存。
S
这个是进程的状态。它有以下不同的值:
- D – 不可中断的睡眠态。
- R – 运行态
- S – 睡眠态
- T – 被跟踪或已停止
- Z – 僵尸态
%CPU
自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM
进程使用的可用物理内存百分比。
TIME+
任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND
运行进程所使用的命令。
还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。
交互命令:
top -h:帮助信息
top -n :获取多次cpu的执行情况 ,top –n 4 只更新4次(默认是不断更新的)
top -d : 间隔时间,top -d 4 每隔4秒更新一次
top -p : 获取指定pid的进程的数据,top –p 4444(PID)
top命令实战:
-
检测指定pid的内存20次
-
for i in {1..20};do top -n 1 -p 1 | grep systemd | awk '{print $11}';done 解析: top -n 1 -p 1------打印pid为1的进程信息一次 grep systemd-------取出含systemd内容的记录,也就是进程信息那一条记录 awk '{print $11}'--打印字段11,也就是内存信息
-
8.iftop分析网络状态
9.性能分析总结
当我们遇到系统性能很差时,可以分别查看系统的CPU,内存,IO,网络流量来排查到底哪里出问题了
以上是关于Linux与bash:4.Linux终端命令之性能统计命令的主要内容,如果未能解决你的问题,请参考以下文章