Linux命令查看CPU、内存、IO使用情况简单介绍

文章目录

  • 1. CPU相关介绍
    • 1.1 物理CPU
    • 1.2 物理CPU内核
    • 1.3 逻辑CPU
    • 1.4 几核几线程
    • 1.5 CPU设计图
  • 2. top 查看系统负载、CPU使用情况
    • 2.1 系统整体的统计信息
    • 2.2 进程信息
    • 2.3 top命令使用
  • 3. lscpu 显示有关 CPU 架构的信息
  • 4. free 查看内存信息
  • 5. iostat 查看io信息

1. CPU相关介绍

1.1 物理CPU

物理cpu就是计算机上实际安装的cpu,物理cpu数就是主板上实际插入的CPU数量。
在Linux上查看/proc/cpuinfo,其中的physical id就是每个物理cpu的id,有几个不同的physical id就有几个物理cpu。

# 查看物理CPU个数
grep 'physical id' /proc/cpuinfo | uniq | wc -l

在这里插入图片描述

1.2 物理CPU内核

每颗物理CPU可以有1个或者多个物理内核,通常每颗物理CPU的内核数都是固定的,
单核CPU就是有1个物理内核,双核CPU就是有2个物理内核。
在Linux上查看/proc/cpuinfo,其中的core id就是每颗物理CPU的物理内核id,有几个不同的core id就有几个物理内核。

总的CPU物理内核数 = 物理CPU数 * 每颗物理CPU的内核数。

# 查看每个物理CPU核心数
grep 'core id' /proc/cpuinfo | uniq | wc -l
# 或
cat /proc/cpuinfo | grep  'cpu cores' | uniq

在这里插入图片描述

1.3 逻辑CPU

操作系统可以使用逻辑CPU来模拟真实CPU。在没有多核处理器时,一个物理CPU只能有一个物理内核。
现在有了多核技术,一个物理CPU可以有多个物理内核,可以把一个CPU当做多个CPU使用,也就是所谓的逻辑CPU。
没有开启超线程的时,逻辑CPU的个数就是总的CPU物理内核数。
开启超线程后,逻辑CPU的个数就是总的CPU物理内核数的两倍。
在Linux查看/proc/cpuinfo/,其中的processor就是逻辑CPU,有几个processor就有几个逻辑CPU。

总的逻辑CPU数 = 总的物理CPU内核数 * 超线程数。

超线程(hyper-threading)其实就是同时多线程(simultaneous multi-theading),
是一项允许一个CPU执行多个控制流的技术, 一核当两核使用

# 查看总的逻辑CPU的个数
grep 'processor' /proc/cpuinfo | wc -l

# 查看单个物理CPU中逻辑CPU的个数
cat /proc/cpuinfo | grep 'siblings' | uniq

# 查看单个物理CPU中核数和逻辑CPU的个数
cat /proc/cpuinfo | grep -e "cpu cores" -e "siblings" | sort | uniq

# 逻辑CPU数量和型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.4 几核几线程

如果计算机有一个物理CPU,且是双核的,支持超线程,那么这台计算机就是双核四线程。实际上几核几线程中的线程数就是逻辑CPU数。
对于两路四核超线程计算机,两路指计算机有2个物理CPU,每颗CPU中有4个物理内核,CPU支持超线程,
就有2 * 4 * 2 = 16个逻辑CPU,这就是通常所谓的16核计算机。

1.5 CPU设计图

在这里插入图片描述

2. top 查看系统负载、CPU使用情况

top

第一部分是前5行,是系统整体的统计信息;
第二部分是第8行开始的进程信息,我们从上往下逐行依次进行说明。
在这里插入图片描述

2.1 系统整体的统计信息

top - 09:50:21 up 1 day, 18:36,  1 user,  load average: 0.05, 0.12, 0.13
Tasks: 180 total,   1 running, 179 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  2.4 sy,  0.0 ni, 97.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995676 total,    72108 free,   746344 used,   177224 buff/cache
KiB Swap:  2097148 total,   379132 free,  1718016 used.    87544 avail Mem

第一行

top - 09:50:21 up 1 day, 18:36, 1 user, load average: 0.05, 0.12, 0.13

top:当前时间
up:机器运行了多长时间
users:当前登录用户数
load average:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

这里具体需要关注的还是load average三个数值。先来说说定义吧:在一段时间内,CPU正在处理以及等待CPU处理的进程数之和。三个数字分别代表了1分钟,5分钟,15分钟的统计值,这个数值的确能反应服务器的负载情况。但是,这个数值高了也并不能直接代表这台机器的性能有问题,可能是因为正在进行CPU密集型的计算,也有可能是因为I/O问题导致运行队列堵了。所以,当我们看到这个数值飙升的时候,还得具体问题具体分析。大家都知道,一个CPU在一个时间片里面只能运行一个进程,CPU核数的多少直接影响到这台机器在同时间能运行的进程数。所以一般来说Load Average的数值别超过这台机器的总核数,就基本没啥问题。

第二行

Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie

Tasks:当前有多少进程
running:正在运行的进程数, 这里running越多,服务器自然压力就越大。
sleeping:正在休眠的进程数
stopped:停止的进程数
zombie:僵尸进程数

第三行

%Cpu(s): 0.3 us, 2.4 sy, 0.0 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

us:用户空间占CPU的百分比(像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态)
sy: 内核空间占CPU的百分比(所有进程要使用的系统资源都是由Linux内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它)
ni:用户进程空间改变过优先级(ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
id: 空闲CPU占用率
wa: 等待输入输出的CPU时间百分比(和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如,CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的)
hi: 硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。)
si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)
st:steal time

第四行

KiB Mem : 995676 total, 72108 free, 746344 used, 177224 buff/cache

total:物理内存总量
free:空闲内存量
used:使用的内存量
buffer/cache:用作内核缓存的内存量

第五行

KiB Swap: 2097148 total, 379132 free, 1718016 used. 87544 avail Mem

total:交换区内存总量
free:空闲交换区总量
used:使用的交换区总量
buffer/cache:缓冲的交换区总量

第四第五行分别是内存信息和swap信息,所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。不过当内存的free变少的时候,其实我们并不需要太紧张。真正需要看的是Swap中的used信息。Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了。

2.2 进程信息

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 21712 root      20   0  720752   2628    596 S  0.7  0.3   1:19.50 containerd-shim
 21735 polkitd   20   0 1314948  37304    140 S  0.7  3.7   4:38.99 mysqld
 21410 root      20   0  720496   2524    656 S  0.3  0.3   1:18.03 containerd-shim
 21432 polkitd   20   0 1376352  14576      0 S  0.3  1.5   4:44.28 mysqld
 21597 polkitd   20   0 1314948   5156      0 S  0.3  0.5   4:39.84 mysqld
 42336 root      20   0  162108   2364   1572 R  0.3  0.2   0:00.77 top
     1 root      20   0  194096   4680   2624 S  0.0  0.5   0:19.29 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.09 kthreadd
     4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H

PID 进程id
USER 进程所有者的用户名
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行

默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列,还有一些参数,例如:
PPID 父进程id
GROUP 进程所有者的组名
SWAP: 进程使用的虚拟内存中被换出的大小
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志

2.3 top命令使用

top命令常用的选项参数:

选项功能
-d指定每两次屏幕信息刷新之间的时间间隔,如希望每秒刷新一次,则使用:top -d 1
-p通过指定PID来仅仅监控某个进程的状态
-S指定累计模式
-s使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
-i使top不显示任何闲置或者僵死的进程
-c显示整个命令行而不只是显示命令名

top 每隔3秒显式所有进程的资源占用情况
top -d 1 每隔1秒显式所有进程的资源占用情况
top -c 每隔3秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 28820 -p 38830 每隔3秒显示pid是28820和pid是38830的两个进程的资源占用情况
top -d 2 -c -p 69358 每隔2秒显示pid是69358的进程的资源使用情况,并显式该进程启动的命令行参数

敲top后,按键盘数字“1”可以监控每个逻辑CPU的状况

敲top后,输入u,然后输入用户名,则可以查看相应的用户进程

敲top后,top命令默认以K为单位显示内存大小,我们可以通过大写字母E来切换内存信息区域的显示单位,如下按一下E切换到MB
在这里插入图片描述

3. lscpu 显示有关 CPU 架构的信息

在这里插入图片描述

参数说明
Architecture#架构
CPU op-mode(s)#支持的模式
Byte Order#字节排序的模式,常用小端模式
CPU(s)#逻辑cpu颗数
On-line CPU(s) list#在线的cpu数量 有故障或者过热时,某些CPU会停止运行而掉线
Thread(s) per core#每个核心线程
Core(s) per socket#每个cpu插槽核数/每颗物理cpu核数
CPU socket(s)#cpu插槽数,即:物理cpu的数量
NUMA node(s)#有几个NUMA节点
Vendor ID#cpu厂商ID
CPU family#厂商设定的CPU家族编号
Model#型号
Model name#型号名称
Stepping#步进,可以理解为同一型号cpu的版本号
CPU MHz#cpu主频
BogoMIPS#估算MIPS, MIPS是每秒百万条指令
Hypervisor vendor#虚拟化技术的提供商
Virtualization type#cpu支持的虚拟化技术的类型
L1d cache#一级高速缓存 dcache 用来存储数据
L1i cache#一级高速缓存 icache 用来存储指令
L2 cache#二级缓存
L3 cache#三级缓存
NUMA node0 CPU(s)0-3 //四个cpu在同一个numa节点node0上
Flagscpu支持的技术特征

4. free 查看内存信息

# 查看内存信息
cat /proc/meminfo

在这里插入图片描述

显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略。

# 查看内存信息
free -m

在这里插入图片描述

参数解释

参数解释
taotal总计物理(swap)内存的大小
used已使用物理内存(swap)的大小
free可用的物理内存(swap)大小
shared多个进程共享的内存总额
buff/cache磁盘的缓存大小
available可以被新应用程序使用的内存大小

常用命令参数

参数说明
-b以Byte为单位显示内存使用情况
-k以KB为单位显示内存使用情况
-m以MB为单位显示内存使用情况
-g以GB为单位显示内存使用情况
-h以有好的方式显示内存的使用情况
-o不显示缓冲区调节列
-s<间隔秒数>持续观察内存使用状况
-t显示内存总和列
-V显示版本信息

在这里插入图片描述

在进行资源监控时,我们可以使用如下命令查看剩余内存大小

# 查看剩余内存大小
free -m |awk '/Mem/{print $4}'

在这里插入图片描述

5. iostat 查看io信息

iostat 主要用于输出磁盘IO 和 CPU的统计信息。
iostat属于sysstat软件包。可以用yum install sysstat 直接安装。

命令参数:

参数说明
-c显示CPU使用情况
-d显示磁盘使用情况
-N显示磁盘阵列(LVM) 信息
-n显示NFS 使用情况
-k以 KB 为单位显示
-m以 M 为单位显示
-t报告每秒向终端读取和写入的字符数和CPU的信息
-V显示版本信息
-x显示详细信息
-p[磁盘] 显示磁盘和分区的情况

在这里插入图片描述

cpu属性值说明:

%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。

备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

device:磁盘名称
tps:每秒钟发送到的I/O请求数.
Blk_read/s:每秒读取的block数.
Blk_wrtn/s:每秒写入的block数.
Blk_read:读入的block总数.
Blk_wrtn:写入的block总数.

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/97057.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

雅思写作 三小时浓缩学习顾家北 笔记总结(一)

目录 饥饿网翻译100个句子记录 There are some economically deprived communities in large cities. there is no clear link between grouping student by ability and their levels of attainment. young people without tertiary education qualification normally hav…

python-数据可视化-下载数据-CSV文件格式

数据以两种常见格式存储&#xff1a;CSV和JSON CSV文件格式 comma-separated values import csv filename sitka_weather_07-2018_simple.csv with open(filename) as f:reader csv.reader(f)header_row next(reader)print(header_row) # [USW00025333, SITKA AIRPORT, A…

高等职业学校物联网实训室建设方案

一、概述 1.1专业背景 物联网&#xff08;Internet of Things&#xff09;被称为继计算机、互联网之后世界信息产业第三次浪潮&#xff0c;它并非一个全新的技术领域&#xff0c;而是现代信息技术发展到一定阶段后出现的一种聚合性应用与技术提升&#xff0c;是随着传感网、通…

解决博客不能解析PHP直接下载源码问题

背景&#xff1a; 在网站设置反向代理后&#xff0c;网站突然不能正常访问&#xff0c;而是会直接下载访问文件的PHP源码 解决办法&#xff1a; 由于在搞完反向代理之后&#xff0c;PHP版本变成了纯静态&#xff0c;所以网站不能正常解析&#xff1b;只需要把PHP版本恢复正常…

SQL注入漏洞复现(CVE-2017-8917)

文章目录 搭建环境启动环境漏洞复现报错注入使用sqlmap 前提条件&#xff1a; 1.安装docker docker pull medicean/vulapps:j_joomla_22.安装docker-compose docker run -d -p 8000:80 medicean/vulapps:j_joomla_23.下载vulhub Docker Compose是 docker 提供的一个命令行工具&…

springboot docker

在Spring Boot中使用Docker可以帮助你将应用程序与其依赖的容器化&#xff0c;并简化部署和管理过程。 当你在Spring Boot中使用Docker时&#xff0c;你的代码不需要特殊的更改。你可以按照通常的方式编写Spring Boot应用程序。 java示例代码&#xff0c;展示了如何编写一个基…

直播预告!生鲜与零售商品识别系统产业实践与部署详解

生鲜零售作为民生消费的重要一环&#xff0c;在促进行业新消费升级的进程中有着至关重要的作用。在超市等无人零售场景中&#xff0c;目前结算方式主要有以下几种&#xff1a; 但是以上几种方法存在如下缺点&#xff1a; 条形码方式&#xff1a;对于成品包装的商品较为成熟&a…

WPF_布局基础

布局容器 Grid 定义由列和行组成的灵活的网格区域。 行 <Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions> 列 <Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDe…

指针与空间按钮的交互

文章目录 原理案例&#xff1a;“直线指针”和“点击按钮”的交互1、效果2、步骤 原理 指针不能直接和空间按钮交互&#xff0c;得借助一个中间层——分发器——它分发指针的进入、退出、选择事件&#xff0c;空间按钮自动监听这些事件 案例&#xff1a;“直线指针”和“点击…

HTTPS安全通信和SSL Pinning

随着互联网的迅速发展&#xff0c;网络通信安全问题日益凸显。在这一背景下&#xff0c;HTTPS作为一种加密通信协议得到了广泛应用&#xff0c;以保障用户的数据隐私和信息安全。本文将介绍HTTPS的基本原理、发展历程&#xff0c;以及与之相关的中间人攻击和防护方法。 1. HTT…

1.RTKLIB环境配置和调试

1.源码下载 下载链接&#xff1a;rtklib 注&#xff1a;2.4.2 p13为稳定版本&#xff08;标识p代表稳定版本&#xff09;&#xff0c;2.4.3 b34为最新实验版本&#xff08;标识b&#xff09;。点击2.4.3 b34 的Source Programs and Data 链接下载源码。 2.环境配置 **集成…

深度剖析java类和对象

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 在Java中&#xff0c;一切皆对象。 目录 一、类的定义和使用1.1类的定义格式1.2定义学生类 二、类的实例化三、this引…

《Flink学习笔记》——第九章 多流转换

无论是基本的简单转换和聚合&#xff0c;还是基于窗口的计算&#xff0c;我们都是针对一条流上的数据进行处理的。而在实际应用中&#xff0c;可能需要将不同来源的数据连接合并在一起处理&#xff0c;也有可能需要将一条流拆分开&#xff0c;所以经常会有对多条流进行处理的场…

基于Jenkins构建生产CICD环境(第三篇)

目录 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 2、阿里云镜像加速器 3、构建tomcat 基础镜像 4、构建一个Maven项目 基于Jenkins自动化部署PHP环境 基于rsync部署 基于Jenkins自动打包并部署docker环境 1、安装docker-ce 在192.168.2.123 机器上&#x…

SQLI-labs-第三关

目录 知识点&#xff1a;单括号)字符get注入 1、判断注入点&#xff1a; 2、判断当前表的字段数 3、判断回显位置 4、爆库名 5、爆表名 6、爆字段名&#xff0c;以users表为例 7、爆值 知识点&#xff1a;单括号)字符get注入 思路&#xff1a; 1、判断注入点&#xff1…

HTML学习笔记02

HTML笔记02 页面结构分析 元素名描述header标题头部区域的内容&#xff08;用于页面或页面中的一块区域&#xff09;footer标记脚部区域的内容&#xff08;用于整个页面或页面的一块区域&#xff09;sectionWeb页面中的一块独立区域article独立的文章内容aside相关内容或应用…

测试理论与方法----测试流程的第四个步骤:执行测试,提出缺陷

8、执行测试—–>提交缺陷报告 测试流程&#xff1a;执行测试—–>提交缺陷报告 1、缺陷的概述&#xff08;回顾&#xff09; 结果角度&#xff1a;实际结果和预期结果不一致 需求角度&#xff1a;所有不满足需求或超出需求的&#xff0c;都是缺陷 2、缺陷的相关属性…

Glide分析和总结

1. Glide概述 Glide是一款图片处理的框架&#xff0c;从框架设计的角度出发&#xff0c;最基本要实现的就是 加载图片 和 展示。 它把一个图片请求封装成一个Request对象&#xff0c;里面有开启、暂停、关闭、清除网络请求、以及载体生命周期的监听等操作。然后通过RequestBu…

【Java基础增强】Stream流

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得…

ELK原理和介绍

为什么用到ELK&#xff1a; 一般我们需要进行日志分析场景&#xff1a;直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中&#xff0c;此方法效率低下&#xff0c;面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化…