---
title: 系统资源与性能——内存-官方技术文章-鲲鹏社区
description: 介绍内存分析方法
keywords: 系统资源与性能,官方技术文章,鲲鹏社区,基本概念,常用内存分析,工具,方式,监测系统内存
url: https://www.hikunpeng.com/developer/techArticles/20251209-18?envFlag=1
section: (其他)
---

# 系统资源与性能——内存-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20251209-18?envFlag=1
描述: 介绍内存分析方法
关键词: 系统资源与性能,官方技术文章,鲲鹏社区,基本概念,常用内存分析,工具,方式,监测系统内存

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

系统资源与性能——内存

系统资源与性能——内存

openEuler

发表于 2025/12/09

0

### 基本概念

内存是计算机的重要组成部件，用于暂时存放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 | 估计有多少内存可用于启动新应用程序，而不交换。 |

- 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。 |

- 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 | 系统全域的数据存取量。 |

- 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 | 该节点的进程在其他节点上分配的内存访问大小。 |
