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 使用的是进程整个生命周期计算的结果。


相关文章
|
2月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
2月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
773 10
|
2月前
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
324 0
|
2月前
|
Ubuntu Linux 开发者
国产 Linux 发行版再添新成员,CutefishOS 系统简单体验
当然,系统生态构建过程并不简单,不过为了帮助国产操作系统优化生态圈,部分企业也开始用国产操作系统替代 Windows,我们相信肯定会有越来越多的精品软件登录 Linux 平台。
119 0
|
2月前
|
Ubuntu 安全 Linux
Linux系统入门指南:从零开始学习Linux
Shell脚本是一种强大的自动化工具,可以帮助您简化重复的任务或创建复杂的脚本程序。了解Shell脚本的基本语法和常用命令,以及编写和运行Shell脚本的步骤,将使您更高效地处理日常任务。
210 0
|
2月前
|
Ubuntu Linux 图形学
Linux学习之Linux桌面系统有哪些?
Cinnamon:与MATE类似,Cinnamon 拥有 GNOME 和 Unity 等其它桌面环境所没有的种种功能,是高度可定制的桌面环境,不需要任何外部插件、窗口组件和调整工具来定制桌面。
126 0
|
2月前
|
Ubuntu 安全 Linux
十款常用Linux系统介绍
本文不是什么大盘点。市面上有好几百款发行版,每款发行版在某个方面都与众不同。不可能在此全部罗列,本文只罗列了十款最常见的Linux发行版(世界上只有两种人,一种是懂二进制的,另一种是不懂二进制的)。请宣传Linux的魅力或威力。
|
2月前
|
Ubuntu 安全 Linux
linux系统|Ubuntu 18.10 如期正式发布,新面孔新技术都来了
微软公司也终于沉不住气要在linux开源系统开疆扩土了。mscode这样的工具的确好用,虽然差第一名那么一点儿,但是最老版的公司出版的软件的确很是让人动心!
|
2月前
|
Ubuntu Linux 数据安全/隐私保护
Win10安装Linux子系统教程!如何在Win10系统中安装Ubuntu!
登录系统后,输入cd /返回上一级,然后再输入“ls”查看一下系统文件目录,看看对不对!
|
2月前
|
Web App开发 安全 Linux
Linux 比起其他系统的5 个优点和 5 个缺点
对Linux系统感兴趣的朋友,可以点击下方书籍进行学习。