searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

系统资源与性能分析

2024-07-15 09:44:42
13
0

CPU

基本概念

中央处理器(Central Processing Unit,简称CPU)是计算机的主要设备之一,其功能是解释计算机指令以及处理计算机软件中的数据。

  1. 物理核:可以真实看到的CPU核,有独立的电路元件以及L1、L2缓存,可以独立地执行指令。一个CPU可以有多个物理核。
  2. 逻辑核:在同一个物理核内,逻辑层面上存在的核。一般一个物理核对应一个线程,但是如果开启了超线程,当超线程数量为n时,一个物理核可以分成n个逻辑核。
    可以通过lscpu命令查看服务器中有多少个CPU,每个CPU中有几个物理核,以及每个CPU有几个逻辑核。

常用CPU性能分析工具

  1. uptime:可用于打印系统平均负载,通过查看最后三个数字,可以判断平均负载的变化趋势。
    平均负载大于CPU数量时表示CPU不足以服务线程,部分线程在等待;平均负载小于CPU数量,代表当前还有余量。

zh-cn_image_0000001384808269

  1. vmstat:可以动态地了解系统资源的使用情况,以及查看系统中是哪一个环节最占用系统资源。
    通过vmstat -h命令可以查看命令详解参数。
    例如:
#使用vmstat进行监测,每隔1秒刷新一次
vmstat 1

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
procs 进程信息字段。
memory 内存信息字段。
swap 交换分区信息字段。
io 磁盘读/写信息字段。
system 系统信息字段。
cpu CPU信息字段-us:非内核进程消耗 CPU 运算时间的百分比。-sy:内核进程消耗 CPU 运算时间的百分比。-id:空闲。-wa:等待 I/O 所消耗的 CPU 百分比。-st:被虚拟机所盗用的 CPU 百分比。
  1. sar:可用于分析系统性能,可以用来观察当前的活动以及配置,用以归档和报告历史统计信息。
    例如:
# 安装sysstat
yum install -y sysstat

# 查看系统CPU的整体负载情况,每3秒统计一次,共统计5次
sar -u 3 5

zh-cn_image_0000001336448570

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
%user 用户模式下消耗的 CPU 时间的比例。
%nice 通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例。
%system 系统模式下消耗的 CPU 时间的比例。
%iowait CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例。
%steal 利用操作系统等虚拟化技术,等待其他虚拟CPU计算占用的时间比例。
%idle CPU空闲时间比例。
  1. ps:可用于查看正在运行的进程
# 查看系统中所有的进程,以及查看进程的父进程的 PID 和进程优先级
ps -le

zh-cn_image_0000001337039920

# 查看当前shell产生的进程
ps -l

zh-cn_image_0000001385611905

  1. top:可以动态地持续监听进程的运行状态,显示最消耗CPU的进程
top

zh-cn_image_0000001335457246

内存

基本概念

内存是计算机的重要组成部件,用于暂时存放CPU中的运算数据,以及与硬件等外部存储器交换的数据。特别地,非统一内存访问架构(non-uniform memory access,简称NUMA)是一种为多处理器的电脑设计的内存架构,内存访问时间取决于内存相对于处理器的位置。在NUMA下,处理器访问本地内存的速度比非本地内存速度(内存位于另一个处理器,或者是处理器之间共享的内存)快。

常用内存分析工具/方式

  1. free:可用于显示系统内存状态

例如:

# 显示系统内存状态,以MB单位显示
free -m

回显信息如下:

[root@openEuler ~]# free -m
               total        used        free      shared  buff/cache   available
Mem:            2633         436         324          23        2072        2196
Swap:           4043           0        4043

在命令的输出信息中,各字段所代表的含义如下:

标识 含义
total 总内存数。
used 已经使用的内存数。
free 空闲的内存数。
shared 多个进程共享的内存总数。
buff/cache 缓冲和缓存内存总数。
available 估计有多少内存可用于启动新应用程序,而不交换。
  1. vmstat:可以动态地监控系统内存,查看系统内存的使用情况。

例如:

# 监测系统内存,显示活跃和非活跃内存
vmstat -a

回显信息如下:

[root@openEuler ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 2  0    520 331980 1584728 470332    0    0     0     2   15   19  0  0 100  0  0

在命令的输出信息中,与内存相关的memory字段所代表的含义如下:

字段 含义
memory 内存信息字段。-swpd:虚拟内存的使用情况,单位为 KB。-free:空闲的内存容量,单位为 KB。-inact:非活跃的内存容量,单位为 KB。-active:活跃的内存容量,单位为 KB。
  1. sar:可用于监控系统的内存使用情况

例如:

# 系统内存在采样时间内的使用情况,每2秒统计一次,统计 3 次
sar -r 2 3

回显信息如下:

[root@openEuler ~]# sar -r 2 3

04:02:09 PM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kb
dirty
04:02:11 PM    332180   2249308    189420      7.02    142172   1764312    787948     11.52    470404   1584924     
   36
04:02:13 PM    332148   2249276    189452      7.03    142172   1764312    787948     11.52    470404   1584924     
   36
04:02:15 PM    332148   2249276    189452      7.03    142172   1764312    787948     11.52    470404   1584924     
   36
Average:       332159   2249287    189441      7.03    142172   1764312    787948     11.52    470404   1584924     
   36

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
kbmemfree 内存的未使用空间。
kbmemused 内存的已使用空间。
%memused 已使用空间的百分比。
kbbuffers 缓冲区的数据存取量。
kbcached 系统全域的数据存取量。
  1. numactl:可用于查看NUMA节点配置和状态

例如:

# 查看当前的NUMA配置
numactl -H

回显信息如下:

[root@openEuler ~]# numactl -H
available: 1 nodes (0)
node 0 cpus: 0 1 2 3
node 0 size: 2633 MB
node 0 free: 322 MB
node distances:
node   0 
  0:  10 

服务器共划分为1个NUMA节点。每个节点包含4个CPU core,每个节点的内存大小约为6GB。
同时,该命令还给出了不同节点间的距离,距离越远,跨NUMA内存访问的延时越大。应用程序运行时应减少跨NUMA访问内存。

numastat:可用于观察各个NUMA节点的状态

# 观察NUMA节点的状态
numastat
[root@openEuler ~]# numastat
                           node0
numa_hit                 5386186
numa_miss                      0
numa_foreign                   0
interleave_hit             17483
local_node               5386186
other_node                     0 

numastat命令输出字段及其含义如下:

标识 含义
numa_hit 节点内CPU核访问本地内存的次数。
numa_miss 节点内核访问其他节点内存的次数。
numa_foreign 初始分配在本地,最后分配在其他节点的叶数量。每个numa_foreign对应numa_miss事件。
interleave_hit interleave策略页成功分配到这个节点。
local_node 该节点的进程成功在这个节点上分配内存访问的大小。
other_node 该节点的进程在其他节点上分配的内存访问大小。

I/O

基本概念

I/O表示输入(Input)/输出(Output),输入指系统接收信号或数据的操作,输出指从系统发出信号或数据的操作。对于CPU 和主存储器的组合,任何信息传入或传出 CPU/内存组合,就会被认为是 I/O

常用I/O性能分析工具

  1. iostat:可以汇报所有在线磁盘的统计信息

例如:

# 详细显示磁盘信息,以KB为单位显示,以100秒为周期统计(命令本身不会主动停止,需要执行Ctrl+C手动停止)
iostat -d -k -x 100

# 详细显示磁盘信息,以KB为单位显示,以1秒为周期统计,总共统计100s
iostat -d -k -x 1 100

zh-cn_image_0000001385905845

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
Device 监测设备名称。
r/s 设备每秒完成的读取请求数(合并后)。
rKB/s 每秒从磁盘读取KB数。
rrqm/s 每秒合并放入请求队列的读操作数。
%rrqm 读取请求在发送到设备之前合并在一起的百分比。
r_await 每个读请求耗费的平均时间。
rareq-sz 向设备发出的读取请求的平均大小(以KB为单位)。
w/s 设备每秒完成的写入请求数(合并后)。
wKB/s 每秒写入磁盘KB数。
wrqm/s 每秒合并放入请求队列的写操作数。
%wrqm 写入请求在发送到设备之前合并在一起的百分比。
w_await 每个写请求耗费的平均时间。
wareq-sz 向设备发出的写入请求的平均大小(以KB为单位)。
d/s 设备每秒完成的丢弃请求数。
dKB/s 每秒为设备丢弃的扇区(KB)数。
drqm/s 每秒合并到设备排队的丢弃请求数。
%drqm 丢弃请求在发送到设备之前合并在一起的百分比。
d_await 向要服务的设备发出丢弃请求的平均时间。
dareq-sz 向设备发出的丢弃请求的平均大小(以KB为单位)。
f/s 设备每秒完成的刷新请求数(合并后)。
f_await 向要服务的设备发出的刷新请求的平均时间。
aqu-sz 向设备发出的请求的平均队列长度。
%util 用于I/O操作时间的百分比,即使用率。
  1. sar:可用于查看系统磁盘的读写性能

例如:

# 显示系统所有硬盘设备在采样时间内的使用状态,每3秒统计一次,统计5次
sar -d 3 5

zh-cn_image_0000001386149037

在命令的输出信息中,各字段所代表的含义如下:

标识 含义
tps 每秒向物理设备发出的传输总数。
rKB/s 每秒从设备读取的KB数。
wKB/s 每秒写入设备的KB数。
dKB/s 设备每秒丢弃的KB数。
areq-sz 向设备发出的I/O请求的平均大小(KB)。
aqu-sz 向设备发出的请求的平均队列长度。
await 向要服务的设备发出的I/O请求的平均时间。
%util 向设备发出I/O请求的已用时间百分比(设备的带宽利用率)。
  1. vmstat
# 使用vmstat进行监测,报告磁盘相关统计信息
vmstat -d

zh-cn_image_0000001389098425

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
reads -total:已成功完成的读取总数。-merged:分组读取(导致一次I/O)。-sectors:扇区读取成功。-ms:读取花费的毫秒数。
writes -total:已成功完成的写入总数。-merged:分组写入(导致一次I/O)。-sectors:写入成功的扇区。-ms:写入所花费的毫秒数。
IO 磁盘读/写信息字段。-bi:从块设备中读入的数据的总量,单位是块。-bo:写到块设备的数据的总量,单位是块。
0条评论
0 / 1000
胡建忠
17文章数
0粉丝数
胡建忠
17 文章 | 0 粉丝
原创

系统资源与性能分析

2024-07-15 09:44:42
13
0

CPU

基本概念

中央处理器(Central Processing Unit,简称CPU)是计算机的主要设备之一,其功能是解释计算机指令以及处理计算机软件中的数据。

  1. 物理核:可以真实看到的CPU核,有独立的电路元件以及L1、L2缓存,可以独立地执行指令。一个CPU可以有多个物理核。
  2. 逻辑核:在同一个物理核内,逻辑层面上存在的核。一般一个物理核对应一个线程,但是如果开启了超线程,当超线程数量为n时,一个物理核可以分成n个逻辑核。
    可以通过lscpu命令查看服务器中有多少个CPU,每个CPU中有几个物理核,以及每个CPU有几个逻辑核。

常用CPU性能分析工具

  1. uptime:可用于打印系统平均负载,通过查看最后三个数字,可以判断平均负载的变化趋势。
    平均负载大于CPU数量时表示CPU不足以服务线程,部分线程在等待;平均负载小于CPU数量,代表当前还有余量。

zh-cn_image_0000001384808269

  1. vmstat:可以动态地了解系统资源的使用情况,以及查看系统中是哪一个环节最占用系统资源。
    通过vmstat -h命令可以查看命令详解参数。
    例如:
#使用vmstat进行监测,每隔1秒刷新一次
vmstat 1

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
procs 进程信息字段。
memory 内存信息字段。
swap 交换分区信息字段。
io 磁盘读/写信息字段。
system 系统信息字段。
cpu CPU信息字段-us:非内核进程消耗 CPU 运算时间的百分比。-sy:内核进程消耗 CPU 运算时间的百分比。-id:空闲。-wa:等待 I/O 所消耗的 CPU 百分比。-st:被虚拟机所盗用的 CPU 百分比。
  1. sar:可用于分析系统性能,可以用来观察当前的活动以及配置,用以归档和报告历史统计信息。
    例如:
# 安装sysstat
yum install -y sysstat

# 查看系统CPU的整体负载情况,每3秒统计一次,共统计5次
sar -u 3 5

zh-cn_image_0000001336448570

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
%user 用户模式下消耗的 CPU 时间的比例。
%nice 通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例。
%system 系统模式下消耗的 CPU 时间的比例。
%iowait CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例。
%steal 利用操作系统等虚拟化技术,等待其他虚拟CPU计算占用的时间比例。
%idle CPU空闲时间比例。
  1. ps:可用于查看正在运行的进程
# 查看系统中所有的进程,以及查看进程的父进程的 PID 和进程优先级
ps -le

zh-cn_image_0000001337039920

# 查看当前shell产生的进程
ps -l

zh-cn_image_0000001385611905

  1. top:可以动态地持续监听进程的运行状态,显示最消耗CPU的进程
top

zh-cn_image_0000001335457246

内存

基本概念

内存是计算机的重要组成部件,用于暂时存放CPU中的运算数据,以及与硬件等外部存储器交换的数据。特别地,非统一内存访问架构(non-uniform memory access,简称NUMA)是一种为多处理器的电脑设计的内存架构,内存访问时间取决于内存相对于处理器的位置。在NUMA下,处理器访问本地内存的速度比非本地内存速度(内存位于另一个处理器,或者是处理器之间共享的内存)快。

常用内存分析工具/方式

  1. free:可用于显示系统内存状态

例如:

# 显示系统内存状态,以MB单位显示
free -m

回显信息如下:

[root@openEuler ~]# free -m
               total        used        free      shared  buff/cache   available
Mem:            2633         436         324          23        2072        2196
Swap:           4043           0        4043

在命令的输出信息中,各字段所代表的含义如下:

标识 含义
total 总内存数。
used 已经使用的内存数。
free 空闲的内存数。
shared 多个进程共享的内存总数。
buff/cache 缓冲和缓存内存总数。
available 估计有多少内存可用于启动新应用程序,而不交换。
  1. vmstat:可以动态地监控系统内存,查看系统内存的使用情况。

例如:

# 监测系统内存,显示活跃和非活跃内存
vmstat -a

回显信息如下:

[root@openEuler ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 2  0    520 331980 1584728 470332    0    0     0     2   15   19  0  0 100  0  0

在命令的输出信息中,与内存相关的memory字段所代表的含义如下:

字段 含义
memory 内存信息字段。-swpd:虚拟内存的使用情况,单位为 KB。-free:空闲的内存容量,单位为 KB。-inact:非活跃的内存容量,单位为 KB。-active:活跃的内存容量,单位为 KB。
  1. sar:可用于监控系统的内存使用情况

例如:

# 系统内存在采样时间内的使用情况,每2秒统计一次,统计 3 次
sar -r 2 3

回显信息如下:

[root@openEuler ~]# sar -r 2 3

04:02:09 PM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kb
dirty
04:02:11 PM    332180   2249308    189420      7.02    142172   1764312    787948     11.52    470404   1584924     
   36
04:02:13 PM    332148   2249276    189452      7.03    142172   1764312    787948     11.52    470404   1584924     
   36
04:02:15 PM    332148   2249276    189452      7.03    142172   1764312    787948     11.52    470404   1584924     
   36
Average:       332159   2249287    189441      7.03    142172   1764312    787948     11.52    470404   1584924     
   36

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
kbmemfree 内存的未使用空间。
kbmemused 内存的已使用空间。
%memused 已使用空间的百分比。
kbbuffers 缓冲区的数据存取量。
kbcached 系统全域的数据存取量。
  1. numactl:可用于查看NUMA节点配置和状态

例如:

# 查看当前的NUMA配置
numactl -H

回显信息如下:

[root@openEuler ~]# numactl -H
available: 1 nodes (0)
node 0 cpus: 0 1 2 3
node 0 size: 2633 MB
node 0 free: 322 MB
node distances:
node   0 
  0:  10 

服务器共划分为1个NUMA节点。每个节点包含4个CPU core,每个节点的内存大小约为6GB。
同时,该命令还给出了不同节点间的距离,距离越远,跨NUMA内存访问的延时越大。应用程序运行时应减少跨NUMA访问内存。

numastat:可用于观察各个NUMA节点的状态

# 观察NUMA节点的状态
numastat
[root@openEuler ~]# numastat
                           node0
numa_hit                 5386186
numa_miss                      0
numa_foreign                   0
interleave_hit             17483
local_node               5386186
other_node                     0 

numastat命令输出字段及其含义如下:

标识 含义
numa_hit 节点内CPU核访问本地内存的次数。
numa_miss 节点内核访问其他节点内存的次数。
numa_foreign 初始分配在本地,最后分配在其他节点的叶数量。每个numa_foreign对应numa_miss事件。
interleave_hit interleave策略页成功分配到这个节点。
local_node 该节点的进程成功在这个节点上分配内存访问的大小。
other_node 该节点的进程在其他节点上分配的内存访问大小。

I/O

基本概念

I/O表示输入(Input)/输出(Output),输入指系统接收信号或数据的操作,输出指从系统发出信号或数据的操作。对于CPU 和主存储器的组合,任何信息传入或传出 CPU/内存组合,就会被认为是 I/O

常用I/O性能分析工具

  1. iostat:可以汇报所有在线磁盘的统计信息

例如:

# 详细显示磁盘信息,以KB为单位显示,以100秒为周期统计(命令本身不会主动停止,需要执行Ctrl+C手动停止)
iostat -d -k -x 100

# 详细显示磁盘信息,以KB为单位显示,以1秒为周期统计,总共统计100s
iostat -d -k -x 1 100

zh-cn_image_0000001385905845

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
Device 监测设备名称。
r/s 设备每秒完成的读取请求数(合并后)。
rKB/s 每秒从磁盘读取KB数。
rrqm/s 每秒合并放入请求队列的读操作数。
%rrqm 读取请求在发送到设备之前合并在一起的百分比。
r_await 每个读请求耗费的平均时间。
rareq-sz 向设备发出的读取请求的平均大小(以KB为单位)。
w/s 设备每秒完成的写入请求数(合并后)。
wKB/s 每秒写入磁盘KB数。
wrqm/s 每秒合并放入请求队列的写操作数。
%wrqm 写入请求在发送到设备之前合并在一起的百分比。
w_await 每个写请求耗费的平均时间。
wareq-sz 向设备发出的写入请求的平均大小(以KB为单位)。
d/s 设备每秒完成的丢弃请求数。
dKB/s 每秒为设备丢弃的扇区(KB)数。
drqm/s 每秒合并到设备排队的丢弃请求数。
%drqm 丢弃请求在发送到设备之前合并在一起的百分比。
d_await 向要服务的设备发出丢弃请求的平均时间。
dareq-sz 向设备发出的丢弃请求的平均大小(以KB为单位)。
f/s 设备每秒完成的刷新请求数(合并后)。
f_await 向要服务的设备发出的刷新请求的平均时间。
aqu-sz 向设备发出的请求的平均队列长度。
%util 用于I/O操作时间的百分比,即使用率。
  1. sar:可用于查看系统磁盘的读写性能

例如:

# 显示系统所有硬盘设备在采样时间内的使用状态,每3秒统计一次,统计5次
sar -d 3 5

zh-cn_image_0000001386149037

在命令的输出信息中,各字段所代表的含义如下:

标识 含义
tps 每秒向物理设备发出的传输总数。
rKB/s 每秒从设备读取的KB数。
wKB/s 每秒写入设备的KB数。
dKB/s 设备每秒丢弃的KB数。
areq-sz 向设备发出的I/O请求的平均大小(KB)。
aqu-sz 向设备发出的请求的平均队列长度。
await 向要服务的设备发出的I/O请求的平均时间。
%util 向设备发出I/O请求的已用时间百分比(设备的带宽利用率)。
  1. vmstat
# 使用vmstat进行监测,报告磁盘相关统计信息
vmstat -d

zh-cn_image_0000001389098425

在命令的输出信息中,各字段所代表的含义如下:

字段 含义
reads -total:已成功完成的读取总数。-merged:分组读取(导致一次I/O)。-sectors:扇区读取成功。-ms:读取花费的毫秒数。
writes -total:已成功完成的写入总数。-merged:分组写入(导致一次I/O)。-sectors:写入成功的扇区。-ms:写入所花费的毫秒数。
IO 磁盘读/写信息字段。-bi:从块设备中读入的数据的总量,单位是块。-bo:写到块设备的数据的总量,单位是块。
文章来自个人专栏
CTyunOS专栏
14 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0