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+ COMMAND21712 root      20   0  720752   2628    596 S  0.7  0.3   1:19.50 containerd-shim21735 polkitd   20   0 1314948  37304    140 S  0.7  3.7   4:38.99 mysqld21410 root      20   0  720496   2524    656 S  0.3  0.3   1:18.03 containerd-shim21432 polkitd   20   0 1376352  14576      0 S  0.3  1.5   4:44.28 mysqld21597 polkitd   20   0 1314948   5156      0 S  0.3  0.5   4:39.84 mysqld42336 root      20   0  162108   2364   1572 R  0.3  0.2   0:00.77 top1 root      20   0  194096   4680   2624 S  0.0  0.5   0:19.29 systemd2 root      20   0       0      0      0 S  0.0  0.0   0:00.09 kthreadd4 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总数.

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux知识点 -- Linux多线程(三)

Linux知识点 – Linux多线程&#xff08;三&#xff09; 文章目录 Linux知识点 -- Linux多线程&#xff08;三&#xff09;一、线程同步1.概念理解2.条件变量3.使用条件变量进行线程同步 二、生产者消费者模型1.概念2.基于BlockingQueue的生产者消费者模型3.单生产者单消费者模…

MariaDB数据库服务器

目录 一、什么是数据库&#xff1f; 二、什么是关系型数据库&#xff1f; 三、数据库字符集和排序规则是什么&#xff1f; 四、常用数据类型 五、Mariadb数据库相关配置案例 一、什么是数据库&#xff1f; 数据库&#xff08;DB&#xff09;是以一定方式长期存储在计算机硬盘内…

Android OTA 相关工具(六) 使用 lpmake 打包生成 super.img

我在 《Android 动态分区详解(二) 核心模块和相关工具介绍》 介绍过 lpmake 工具&#xff0c;这款工具用于将多个分区镜像打包生成一个 Android 专用的动态分区镜像&#xff0c;一般称为 super.img。Android 编译时&#xff0c;系统会自动调用 lpmake 并传入相关参数来生成 sup…

(第六天)初识Spring框架-SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录

SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录&#xff08;第六天&#xff09;初识Spring框架 ​ 昨天我们已经把Mybatis框架的基本知识全部学完&#xff0c;内容有Mybatis是一个半自动化的持久层ORM框架&#xff0c;深入学习编写动态SQL&a…

Vector<T> 动态数组(模板语法)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 动态数组 Vector&#xff08;难度1&#xff09; 其中&#xff0c;2 是 1 中的一个作业。2 中详细讲解了动态数组实现的基本原理。 本文目标 1 学会写基本的C类模板语法&#xff1b; 2 为以后熟练使用 S…

基于Java的代驾管理系统 springboot+vue,mysql数据库,前台用户、商户+后台管理员,有一万五千字报告,完美运行

基于Java的代驾管理系统 springbootvue&#xff0c;mysql数据库&#xff0c;前台用户、商户后台管理员&#xff0c;有一万五千字报告&#xff0c;完美运行。 系统完美实现用户下单叫车、商户接单、管理员管理系统&#xff0c;页面良好&#xff0c;系统流畅。 各角色功能&#x…

【CicadaPlayer】getPlayerBufferDuration分析

https://github.com/alibaba/CicadaPlayer/blob/release/0.4.4/mediaPlayer/SuperMediaPlayer.cpp核心关键函数int64_t SuperMediaPlayer::getPlayerBufferDuration(bool gotMax, bool internal)17个地方出现: getPlayerBufferDuration的durations 数组 分别 对音频、视频、字…

利用R作圆环条形图

从理念上看&#xff0c;本质就是增加了圆环弧度的条形图。如上图2。 需要以下步骤&#xff1a; 数据处理&#xff0c;将EXCEL中的数据做成3*N的表格导入系统&#xff0c;代码如下&#xff1a;library(tidyverse) library(stringr)library(ggplot2)library(viridis) stuper &…

UDP 多播(组播)

前言&#xff08;了解分类的IP地址&#xff09; 1.组播&#xff08;多播&#xff09; 单播地址标识单个IP接口&#xff0c;广播地址标识某个子网的所有IP接口&#xff0c;多播地址标识一组IP接口。单播和广播是寻址方案的两个极端&#xff08;要么单个要么全部&#xff09;&am…

AI聊天机器人平台Poe发布更新;自然语言理解课程概要

&#x1f989; AI新闻 &#x1f680; AI聊天机器人平台Poe发布更新 突破功能限制 增加企业级服务 摘要&#xff1a;知名问答网站Quora旗下的AI聊天机器人平台Poe发布了一系列更新&#xff0c;包括推出Mac应用、支持同时进行多个对话、接入Meta的Llama 2模型等功能。用户只需支…

自动化运维:Ansible之playbook基于ROLES部署LNMP平台

目录 一、理论 1.playbook剧本 2.ROLES角色 3.关系 4.Roles模块搭建LNMP架构 二、实验 1.Roles模块搭建LNMP架构 三、问题 1.剧本启动php报错语法问题 2.剧本启动mysql报错语法问题 3.剧本启动nginx开启失败 4.剧本安装php失败 5.使用yum时报错 6.rpm -Uvh https…

自动泊车的自动驾驶控制算法

1. 自动泊车系统 自动泊车系统(AutomatedParkingASSiSt,APA)利用车辆搭载的传感器感知车辆周边环境,扫描满足当前车辆停放的障碍物空间车位或线车位,并通过人机交互(HumanMachine Interface,HMI)获取驾驶员对目标车位的选择或自动确定目标车位,自动规划泊车路径,通过控制器向车…

windows环境搭建ELK

目录 资源下载&#xff08;8.9.1&#xff09; ES安装、注册、使用 Kibana安装、注册、使用 Logstash安装、注册、使用 Filebeat安装、使用&#xff08;如果只有一个数据流&#xff0c;则不需要使用filebeat&#xff0c;直接上logstash即可&#xff09; 资源下载&#xff0…

WebSocket--技术文档--架构体系--《WebSocket实现原理以及关键组件》

WebSocket产生背景 简单的说&#xff0c;WebSocket协议之前&#xff0c;双工通信是通过多个http链接来实现&#xff0c;这导致了效率低下。WebSocket解决了这个问题。下面是标准RFC6455中的产生背景概述。 长久以来, 创建实现客户端和用户端之间双工通讯的web app都会造成HTT…

配置开启Hive远程连接

配置开启Hive远程连接 Hive远程连接默认方式远程连接Hive自定义身份验证类远程连接Hive权限问题额外说明 Hive远程连接 要配置Hive远程连接&#xff0c;首先确保HiveServer2已启动并监听指定的端口 hive/bin/hiveserver2检查 HiveServer2是否正在运行 # lsof -i:10000 COMMA…

详解 ElasticSearch Kibana 配置部署

默认安装部署所在机器允许外网 SSH工具 Putty 链接&#xff1a;https://pan.baidu.com/s/1b6gumtsjL_L64rEsOdhd4A 提取码&#xff1a;lxs9 Winscp 链接&#xff1a;https://pan.baidu.com/s/1tD8_2knvv0EJ5OYvXP6VTg 提取码&#xff1a;lxs9 WinSCP安装直接下一步到完成…

elementUi中的el-table表格的内容根据后端返回的数据用不同的颜色展示

效果图如下&#xff1a; 首先 首先&#xff1a;需要在表格行加入 <template slot-scope"{ row }"> </template>标签 <el-table-column prop"usable" align"center" label"状态" width"180" ><templ…

ELK安装、部署、调试 (二) ES的安装部署

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口操作ES&#xff0c;也可以利用Java API。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业…

Linux 桌面上的 Firefox 面临着大问题

导读毫无疑问&#xff0c;无论是在桌面、笔记本电脑还是移动设备上&#xff0c;浏览器都是任何操作系统中最重要的应用之一。 如果没有一个功能强大、快速且稳定的浏览器&#xff0c;操作系统的实用性将大幅度降低&#xff0c;以至于我相当确定&#xff0c;如果一个操作系统没有…

Mysql的page,索引,Explain Type等基本常识

Mysql的基本问题 Mysql 为什么建议使用自增id&#xff1f; 因为id&#xff08;主键&#xff09;是自增的话&#xff0c;那么在有序的保存用户数据到页中的时候&#xff0c;可以天然的保存&#xff0c;并且是在聚集索引&#xff08;id&#xff09;中的叶子节点可以很好的减少插…