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终端命令之性能统计命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux与bash:3.Linux终端命令之进阶命令(curl,jq,sort,uniq,wc)

4.Linux根文件系统和目录结构及bash特性

Linux Shell编程之谈谈bash

Linux与bash:1.Linux终端基础命令

linux bash终端快捷键

4:Bash shell命令-步入Linux的现代方法