Linux查看系统运行情况

简介: 通过查看内存、cpu以及硬盘的状态可帮助我们分析问题,并优化应用程序

磁盘使用情况

#查看硬盘使用情况
df -h


上图各标题释义:

● Filesystem 文件系统,显示当前机器安装的所有硬盘和硬盘的分区情况

● Size 容量,磁盘空间容量

● Used 已用,

● Avail  可用

● Use%  已用百分比

● Mounted on 挂载点,磁盘挂载的目录位置

其中 /dev/vda1 代表就是我们的硬盘使用情况,这里简单说下:

/dev 下的 vd{x}{y} (其中 x从a-z,y 为数字) x位代表的是硬盘,y位代表的是分区,比如:vda 代表硬盘1,vdb 代表硬盘2;vda1 代表硬盘1的分区1,vda2 代表硬盘1的分区2。

若发现硬盘使用率过高,可通过以下命令查看:

#进入到根目录逐层分析或者进入到你认为可能造成占用过大的文件夹
cd /
#查看每个文件夹及文件使用情况
du -sh *
#仅查看文件夹的使用情况
du --max-depth=1 -h



要是单纯查看磁盘大小,也可使用以下命令:

fdisk -l


内存使用情况

#数字单位 kb
free
#数字单位 G
free -g
#数字单位 M
free -m
#带有单位展示
free -h


纵向释义:

  • Mem 物理内存使用情况
  • Swap 交换分区情况

横向释义:

  • total 可供系统使用的内存大小,物理内存减去预留位和内核使用内存
  • used 已经使用的内存数,包含 buffer 和 cache,但其中部分缓存并未实际使用
  • free 空闲未被分配的内存(真正尚未被使用的物理内存)
  • shared 多个进程共享的内存
  • buff/cache buffers和cache 所用的内存总量
  • buffer 内存和磁盘之间产生的用于缓存即将写入磁盘的数据。根据磁盘的读写设计,把分散的写操作集中进行,以减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。Linux中有个守护进程会定期清理缓冲内容。
  • cache 用于将从磁盘读取的数据缓存起来,当重新读取时若命中缓存则可从内存中快速获取,而无需从磁盘读取。缓存数据会根据读取的频率进行组织,将频繁读取的放在容易找到的位置,频率低或者不再读取的数据不断向后排,直至删除。Cache 是CPU和内存之间为了解决速度不对等问题产生的,当CPU调用大量数据时,就可避开内存直接从Cache中调用,从而加快读取速度。
  • available 应用程序认为的实际可用的最大空间,大致的计算方式为:available = free + buff/cache
  • buffer 和 cache 虽然存在分配未使用,但对内核来说都属于已经被使用的内存。当应用程序申请内存时,若 free 内存不够,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。因此从应用程序的角度来说,available = free + buff/cache。


我们根据 free 查询的结果,结合ECS的监控图:

内存使用率=(total-available)/total

因此上述内存使用率 = (7822712-6817660)/7822712 = 12.85%

CPU使用情况

1、概念

简单介绍下 CPU 使用率,指的是单位时间内 CPU 使用情况的统计。这样说可能有些抽象,举个例子,一天24小时,一个外卖员用了6个小时去接单送货,那么他的使用率为:6/24 = 25%。同理,我们衡量 CPU 的使用率就是 CPU占用的时间(非空闲的时间)/ 总 CPU 时间 得到的百分比,粗略的概括为以下公式:

CPU使用率 = 1-空闲时间/总CPU时间

Linux 会将每个 CPU 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。

通常大部分性能工具在计算CPU使用率时会取间隔一段时间的两次值做差值计算后,来计算这段时间的平均 CPU 使用率,公示如下:

2、性能

那么如何理解性能呢?比如有两个外卖员,两人接送单的总时间还是 6 小时,使用率仍然是 25%。但A是在接外卖单的空余时间还顺带接了一个跑腿,那么可以看出 A 的整体性能比 B 好。回到系统设计上,我们应该尽量避免任务长时间占用CPU的任务设计,拆分长任务,防止出现卡顿。

3、查看

1)使用 top 命令查看:

top 默认显示的是所有 CPU 的平均值。如果你的机器是多核的,按下数字 1 ,就可以切换到展示每个 CPU 的使用率,再此按下 1 即可折叠收起。

各字段释义:

  • us(user 缩写)代表用户态进程占用 CPU 时间占比。注意,它不包括下面的 nice 时间,但包括了 guest 时间。
  • sy(system 缩写)代表内核占用CPU时间占比
  • ni(nice 缩写)代表低优先级用户态进程 CPU 时间占比。这些进程的优先级会被调整,也就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间。其中,nice 可取值范围是 -20 到 19,数值越大,优先级反而越低。
  • id(idle 缩写)代表空闲CPU时间占比,这个时间不包括等待 I/O 的时间(iowait)
  • wa(iowait 缩写)代表等待 I/O 的 CPU 时间占比
  • hi(IRQ 缩写)代表硬中断(Hardware)的 CPU 时间占比
  • si(softirq 缩写)代表处理软中断的 CPU 时间占比
  • st(steal 缩写)代表当系统运行在虚拟机中的时候,被其他虚拟机占用的 CPU 时间占比

补充:

  • guest 代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的 CPU 时间
  • gnice(guest_nice 缩写)代表以低优先级运行虚拟机的时间

基于我们之前介绍的概念,top 工具默认使用的是 3 秒间隔的差值计算的 CPU 使用率。

2)/proc/stat

/proc/stat 中包含系统启动以来的系统和内核的统计信息,通过它我们可以查看 CPU 的汇总时间。它的单位是 USER_HZ,也就是 10 ms(1/100 秒)。

cat /proc/stat |grep cpu


横向:

  • cpu 所有的cpu累加数据
  • cup{x} x为数字,代表不同cpu的数据

纵向(第二列开始)数字分别为:

  • user、nice、system、idle、iowait、irq、softirq、steal、guest、guest_nice

每列的字段释义可参考上面的介绍,CPU 总时间计算公式如下:

CPU总时间= user + nice + system + idle + iowait + irq + softirq

我们可以通过上述的数据通过第一个公式计算出开机以来的 CPU 平均使用率,但这个使用率通常并没有什么意义,实际上我们会更关注一段时间内的CPU使用率。

3)ps命令

查看哪些进程占用了CPU:

ps aux | sort -nrk 3,3 | head -n 5


红框内的数字就代表了这个进程的 CPU 使用率。

我们也可以通过进程名查看CPU的使用率:

ps -C {进程名} -o %cpu
#对应上图 28276 这个进程命令如下
ps -C AliYunDunMonitor -o %cpu


此时我们使用 top 查看这两个进程的 CPU 使用情况:

top -p 28276,14429


对比 ps 命令查看的结果,两者并不一样,因为 top 是使用的 3秒时间间隔计算的结果,而 ps 使用的是进程整个生命周期计算的结果。


相关文章
|
4天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
19 3
|
4天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
35 5
linux系统服务二!
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
35 3
linux系统服务!!!
|
4天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
19 3
|
7天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
23 6
|
7天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
32 6
|
8天前
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
36 5
|
8天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
25 3
|
8天前
|
监控 网络协议 算法
Linux内核优化:提升系统性能与稳定性的策略####
本文深入探讨了Linux操作系统内核的优化策略,旨在通过一系列技术手段和最佳实践,显著提升系统的性能、响应速度及稳定性。文章首先概述了Linux内核的核心组件及其在系统中的作用,随后详细阐述了内存管理、进程调度、文件系统优化、网络栈调整及并发控制等关键领域的优化方法。通过实际案例分析,展示了这些优化措施如何有效减少延迟、提高吞吐量,并增强系统的整体健壮性。最终,文章强调了持续监控、定期更新及合理配置对于维持Linux系统长期高效运行的重要性。 ####