开篇概述
本文将通过 VMware Workstation 虚拟化平台部署 openEuler 22.03 LTS x86_64 操作系统,并使用 MobaXterm 作为远程连接工具,对系统进行实战评测。
评测内容为CPU的和内存的基准测试
测试环境配置:
- 虚拟化平台:VMware Workstation 17.x
- CPU:4 核心
- 内存:4GB (4096MB)
- 硬盘:40GB
- 网络:NAT 模式
- 远程工具:MobaXterm
一、系统介绍与 ISO 下载
1.1 openEuler 22.03 LTS 版本信息
版本: openEuler 22.03 LTS
架构支持: x86_64, aarch64, ARM32, LoongArch64, Power, SW64
支持周期: 4年标准支持 + 4年扩展支持
计划EOL: 2024/03 (标准支持期)
应用场景: 服务器、云计算、边缘计算、嵌入式

1.2 ISO 镜像类型详解
openEuler 提供三种安装镜像,根据不同场景选择:
| ISO 类型 | 大小 | 适用场景 |
|---|---|---|
| Offline Standard ISO | 3.4 GiB | 标准离线安装版:包含一个基础的操作系统和一个常用的软件包集合。适合大多数用户的常规安装需求,无需联网即可完成系统部署。 |
| Offline Everything ISO | 15.6 GiB | 完整离线安装版:包含标准版的所有内容,并集成了极为丰富的软件包。适合在无网络环境或网络条件较差的情况下使用,无需下载即可安装大量软件。 |
| Network Install ISO | 721.0 MiB | 网络安装版:这是一个最小的启动镜像,只包含最基本的安装环境。在安装过程中,需要稳定快速的网络连接,以便从软件仓库实时下载所有需要的软件包。适合需要定制化安装或希望保持系统软件为最新版本的用户。 |
本文的话将选择 Offline Standard ISO 镜像,体积适中而且离线特别适合测试使用。
1.3 下载地址与校验
# 官方下载页面 https://www.openEuler.org/zh/download/archive/detail/?version=openEuler%2022.03%20LTS


编辑
二、VMware 虚拟机部署
2.1 硬件配置要求
CPU: 4核心
内存: 4GB (4096MB) # 推荐配置,确保系统流畅运行
硬盘: 40GB SCSI
网络: NAT模式
光驱: 挂载 openEuler ISO

2.2 创建虚拟机详细步骤
第一步创建新的虚拟机

编辑
选择"自定义(高级)" → 下一步

编辑
硬件兼容性:Workstation 17.5x

编辑
选择:稍后安装操作系统
(重要:不要选择"安装程序光盘映像",避免自动检测问题)

编辑
客户机操作系统:Linux
版本:其他 Linux 5.x 内核 64 位

编辑
配置虚拟机命名和位置

编辑
处理器数量:1
每个处理器的核心数量:4
总计:4 核心

编辑
内存大小:4096 MB (4GB)
说明:
- 4GB 内存可以流畅运行带 GUI 的服务器环境
- 支持同时进行性能测试和监控
- 适合安装 Docker、数据库等应用
- 如果仅安装最小化系统,2GB 也可以

编辑
网络类型:使用网络地址转换(NAT)
NAT 模式优势:
- 虚拟机可以访问外网
- 宿主机可以访问虚拟机
- 不占用物理网络 IP
- 便于配置和管理

编辑
推荐:LSI Logic (推荐)

编辑
选择:SCSI (推荐)

编辑
选择:创建新虚拟磁盘

编辑
磁盘大小:40 GB
磁盘文件:存储为单个文件(性能更好)

编辑
磁盘文件名:openEuler-22.03-Test.vmdk

编辑
点击"完成"按钮

编辑
2.3 挂载 ISO 镜像
- 选中创建的虚拟机 2. 右键 → 设置(或点击"编辑虚拟机设置") 3. 选择 CD/DVD (SATA) 4. 连接方式:使用 ISO 映像文件 5. 浏览选择:openEuler-22.03-LTS-x86_64-dvd.iso 6. 勾选"启动时连接" 7. 点击"确定"

编辑
三、openEuler 22.03 系统安装
选择中文后点击继续

编辑
点击"安装目的地",选择虚拟磁盘(40 GB),选择系统自动分区

编辑
- 点击"网络和主机名"
- 以太网(ens33):打开开关(右上角)
- 主机名:openEuler-test
- 点击"应用"
- 确认获取到 IP 地址(例如:192.168.x.x)
- 点击"完成"

编辑
设置 Root 强密码:
示例:openEuler@2025

编辑
确认所有配置项无警告标志后点击右下角"开始安装"按钮(安装过程约 5-15 分钟)

编辑
安装完成后,点击"重启系统"

编辑
输入账号密码进行登录

编辑
四、MobaXterm 远程连接配置
4.1 系统端 SSH 服务配置
我们需要先确认 openEuler 22.03 LTS 系统是否已部署 SSH 服务,这是后续使用 MobaXterm 进行远程连接的基础。如果系统未安装,则需先行安装。
# 1. 确认SSH服务已安装
rpm -qa | grep openssh-server# 2. 启动SSH服务
systemctl start sshd
systemctl enable sshd# 3. 检查服务状态
systemctl status sshd


编辑
# 4. 查看虚拟机IP地址
ip addr show ens33
# 或
ifconfig ens33
# 记录IP地址,例如:192.168.153.128


编辑
4.2 防火墙配置
放行 SSH 端口(22)
# 检查防火墙状态
systemctl status firewalld# 开放SSH端口(22)
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload# 查看已开放的服务
firewall-cmd --list-services


编辑
4.3 MobaXterm 连接
- 打开 MobaXterm
- 点击左上角"Session"按钮
- 选择"SSH"图标
- 填写连接信息:
Remote host: 192.168.200.130 # 虚拟机 IP
Specify username: root
Port: 22 - Advanced SSH settings(可选):
- X11-Forwarding: ✓(支持图形界面转发)
- 点击"OK"
- 输入密码登录

编辑

编辑
五、性能评测实战
5.1 创建测试目录
目的:创建一个专门的目录来存放所有测试工具、脚本和结果
# 切换到root用户(如果还不是)
su -# 创建主测试目录
mkdir -p /opt/performance-test# 进入测试目录
cd /opt/performance-test# 创建子目录用于存放不同类型的测试结果
mkdir -p results/{cpu,memory,disk,network,system}# 创建测试日志文件
touch test.log# 验证目录结构
tree /opt/performance-test
# 如果没有tree命令,使用 ls -R
ls -R /opt/performance-test


编辑
讲解:
/opt/performance-test:主测试目录results/:存放所有测试结果cpu/、memory/等:按测试类型分类存放结果test.log:记录测试过程中的关键信息
5.2 安装基础测试工具
目的:安装性能测试所需的各种工具
# 第一步:更新系统软件包索引
dnf makecache

dnf makecache 更新本地软件包缓存,确保能获取最新的软件包信息
# 第二步:安装基础性能测试工具
# 安装 sysbench(综合性能测试工具)
dnf install -y sysbench# 安装 fio(磁盘IO测试工具)
dnf install -y fio# 安装 iperf3(网络性能测试工具)
dnf install -y iperf3

- sysbench:多功能性能测试工具,可测试 CPU、内存、线程等
- fio:专业的磁盘 IO 测试工具,功能强大
- iperf3:网络带宽测试工具
# 第三步:安装系统监控工具
dnf install -y htop # 交互式进程查看器
dnf install -y sysstat # 系统性能监控工具集(包含sar、iostat等)
dnf install -y dstat # 系统资源统计工具
dnf install -y iotop # IO监控工具

- htop:比 top 更友好的进程监控工具
- sysstat:包含 sar(系统活动报告)、iostat(IO 统计)等工具
- dstat:实时显示系统资源使用情况
- iotop:类似 top,但专门监控 IO
# 安装网络工具
dnf install -y net-tools # 包含netstat等经典网络工具
dnf install -y nmap-ncat # 网络测试工具

5.3 编译安装 stress 工具
# 安装开发工具(用于编译stress)
dnf groupinstall -y "Development Tools"
# 进入临时目录
cd /tmp
# 下载stress源码
wget https://github.com/resurrecting-open-source-projects/stress/archive/refs/tags/1.0.7.tar.gz -O stress-1.0.7.tar.gz
# 解压源码
tar -xzf stress-1.0.7.tar.gz
cd stress-1.0.7
# 运行自动生成脚本
./autogen.sh
# 配置编译选项
./configure --prefix=/usr/local
# 编译
make
# 安装
make install
# 验证安装
stress --version
which stress


编辑
5.4 收集系统基础信息
记录测试环境的硬件和系统信息,便于后续分析
cd /opt/performance-test

# 创建系统信息收集脚本
cat > collect-sysinfo.sh << 'EOF'
#!/bin/bash
# 系统信息收集脚本OUTPUT_FILE="results/system-info.txt"echo "========================================" > $OUTPUT_FILE
echo " 系统信息收集报告" >> $OUTPUT_FILE
echo "========================================" >> $OUTPUT_FILE
echo "收集时间: $(date '+%Y-%m-%d %H:%M:%S')" >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE# 操作系统信息
echo "=== 操作系统信息 ===" >> $OUTPUT_FILE
cat /etc/os-release >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE# 内核版本
echo "=== 内核版本 ===" >> $OUTPUT_FILE
uname -a >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE# CPU信息
echo "=== CPU信息 ===" >> $OUTPUT_FILE
lscpu >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE
echo "CPU核心数: $(nproc)" >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE# 内存信息
echo "=== 内存信息 ===" >> $OUTPUT_FILE
free -h >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE# 磁盘信息
echo "=== 磁盘信息 ===" >> $OUTPUT_FILE
df -h >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE
lsblk >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE# 网络接口信息
echo "=== 网络接口信息 ===" >> $OUTPUT_FILE
ip addr show >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE# 当前系统负载
echo "=== 当前系统负载 ===" >> $OUTPUT_FILE
uptime >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILEecho "系统信息已保存到: $OUTPUT_FILE"
EOF# 给脚本添加执行权限
chmod +x collect-sysinfo.sh# 执行脚本
./collect-sysinfo.sh# 查看收集的信息
cat results/system-info.txt


编辑

编辑

编辑

编辑
5.5 验证所有工具安装
# 创建验证脚本
cat > verify-tools.sh << 'EOF'
#!/bin/bashecho "========================================"
echo " 工具安装验证"
echo "========================================"
echo ""# 定义要检查的工具列表
tools=("sysbench" "fio" "iperf3" "stress" "htop" "sar" "iostat" "dstat" "iotop")# 检查每个工具
for tool in "${tools[@]}"; doif command -v $tool &> /dev/null; thenecho "✓ $tool - 已安装"# 显示版本信息(如果支持)case $tool insysbench|fio|iperf3|stress)$tool --version 2>&1 | head -1 | sed 's/^/ 版本: /';;htop)$tool --version 2>&1 | head -1 | sed 's/^/ 版本: /';;sar|iostat)$tool -V 2>&1 | head -1 | sed 's/^/ 版本: /';;esacelseecho "✗ $tool - 未安装"fiecho ""
doneecho "========================================"
EOFchmod +x verify-tools.sh
./verify-tools.sh | tee results/tools-verification.txt


编辑
5.6 CPU 性能测试
5.6.1 单线程 CPU 性能测试
目的:测试单个 CPU 核心的计算能力
# 测试1:单线程CPU性能
sysbench cpu \--cpu-max-prime=20000 \--threads=1 \--time=60 \run | tee results/cpu/01-single-thread.txt

--cpu-max-prime=20000:计算 20000 以内的质数(计算密集型任务)--threads=1:使用 1 个线程--time=60:运行 60 秒tee:同时输出到屏幕和文件
测试结果:

编辑
测试结果显示,在单线程模式下,CPU 每秒处理事件数为 2512.92,总事件数 150778,平均延迟 0.40ms,最小延迟 0.38ms,最大延迟 1.50ms,95th percentile 为 0.42ms。
性能分析:在 openEuler 22.03 LTS 系统上,此单线程测试突显了其高效的内核调度和资源管理能力,每秒事件数超过 2500,平均延迟低于 0.5ms,展现出卓越的计算响应性。openEuler 的优化设计确保了在虚拟化环境下的稳定表现,特别适合串行计算任务。
5.6.2 多线程 CPU 性能测试
目的:测试多核 CPU 的并行计算能力
双线程 CPU 性能
测试双线程 CPU 性能,使用 2 个线程并行计算
# 测试2:双线程CPU性能
sysbench cpu \--cpu-max-prime=20000 \--threads=2 \--time=60 \run | tee results/cpu/02-dual-thread.txt

测试结果:

编辑
双线程 CPU 性能:每秒事件数 4889.89,总事件数 293398,平均延迟 0.41ms,最小延迟 0.39ms,最大延迟 1.40ms,95th percentile 为 0.44ms。
性能分析:openEuler 22.03 LTS 的多线程支持出色,双线程事件数较单线程提升近 1.95 倍,平均延迟仅微增,线程公平性高。这得益于 openEuler 对多核优化的内核增强,在 4 核心虚拟机中实现高效并行处理,适用于云计算和服务器场景。
四线程 CPU 性能
sysbench cpu \--cpu-max-prime=20000 \--threads=4 \--time=60 \run | tee results/cpu/03-quad-thread.txt


编辑
四线程 CPU 性能:每秒事件数 9052.60,总事件数 543165,平均延迟 0.44ms,最小延迟 0.39ms,最大延迟 50.99ms,95th percentile 为 0.75ms。
性能分析:在 openEuler 22.03 LTS 环境下,四线程性能提升约 3.60 倍,接近线性扩展,证明了其先进的线程管理和缓存优化机制。尽管最大延迟有所波动,但整体稳定性强。
5.6.3 CPU 性能对比分析
# 提取关键指标
echo "线程数 | 每秒事件数 | 平均延迟(ms)"
echo "-------|------------|-------------"# 单线程
SINGLE=$(grep "events per second:" results/cpu/01-single-thread.txt | awk '{print $4}')
SINGLE_LAT=$(grep "avg:" results/cpu/01-single-thread.txt | awk '{print $2}')
echo "1 | $SINGLE | $SINGLE_LAT"# 双线程
DUAL=$(grep "events per second:" results/cpu/02-dual-thread.txt | awk '{print $4}')
DUAL_LAT=$(grep "avg:" results/cpu/02-dual-thread.txt | awk '{print $2}')
echo "2 | $DUAL | $DUAL_LAT"# 四线程
QUAD=$(grep "events per second:" results/cpu/03-quad-thread.txt | awk '{print $4}')
QUAD_LAT=$(grep "avg:" results/cpu/03-quad-thread.txt | awk '{print $2}')
echo "4 | $QUAD | $QUAD_LAT"# 计算扩展性
echo ""
echo "=== 性能扩展性分析 ==="
echo "双线程相比单线程提升: $(echo "scale=2; $DUAL / $SINGLE" | bc)x"
echo "四线程相比单线程提升: $(echo "scale=2; $QUAD / $SINGLE" | bc)x"


编辑
sysbench CPU 性能测试结果
| 线程数 | 每秒事件数 | 平均延迟(ms) |
|---|---|---|
| 1 | 2512.92 | 0.4 |
| 2 | 4889.89 | 0.41 |
| 4 | 9052.6 | 0.44 |
性能扩展性分析
| 对比项 | 扩展倍数 | 性能评估 |
|---|---|---|
| 双线程 vs 单线程 | 1.94x | 接近理想的线性扩展 |
| 四线程 vs 单线程 | 3.60x | 优秀的扩展性(90% 效率) |
5.6.4 CPU 压力测试(带监控)
目的:在高负载下测试 CPU 稳定性,同时监控系统资源
说明: 4 个 CPU 核心满载运行 2 分钟,同时监控系统状态
echo ""
echo "=== 测试5: CPU压力测试 ==="
echo "说明: 4个CPU核心满载运行2分钟,同时监控系统状态"
echo ""# 启动系统监控(后台运行)
echo "启动系统监控..."
sar -u 1 120 > results/cpu/05-stress-sar.txt &
SAR_PID=$!# 等待1秒确保监控已启动
sleep 1# 运行CPU压力测试
echo "开始CPU压力测试..."
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"stress --cpu 4 --timeout 120s --verbose 2>&1 | tee results/cpu/05-stress-test.txt# 等待监控完成
wait $SAR_PIDecho "CPU压力测试完成"
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"

sar -u 1 120:每秒采集一次 CPU 使用率,共 120 次stress --cpu 4:启动 4 个 CPU 密集型进程--timeout 120s:运行 120 秒后自动停止&:后台运行wait $SAR_PID:等待监控进程结束
测试结果:

编辑
| 指标类型 | 用户态 CPU | 系统态 CPU |
|---|---|---|
| 峰值使用率 | 100.00% | 4.42% |
| 平均使用率 | 97.21% | 1.05% |
测试使用 stress 工具满载 4 核心运行 120 秒,同时 sar 监控 CPU 使用率。
性能分析:openEuler 22.03 LTS 在持续高负载下表现出色,无崩溃现象,sar 数据表明 CPU 利用率稳定高效。这得益于其内核的鲁棒性和资源监控优化,在 VMware 虚拟化环境中保持了良好的耐久性。
5.6.5 CPU 浮点运算性能测试
目的:测试 CPU 的浮点运算能力(科学计算场景)
测试 CPU 执行 1 亿次浮点运算的性能
# 创建浮点运算测试程序
cat > cpu-float-test.c << 'EOF'
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>int main() {long long i;double result = 0.0;clock_t start, end;double cpu_time_used;printf("开始浮点运算测试...\n");printf("执行 1亿次 sqrt(i) * sin(i) * cos(i) 运算\n\n");start = clock();for(i = 0; i < 100000000; i++) {result += sqrt(i) * sin(i) * cos(i);}end = clock();cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;printf("完成 1亿次浮点运算\n");printf("耗时: %.2f 秒\n", cpu_time_used);printf("每秒运算次数: %.2f M ops/sec\n", 100.0 / cpu_time_used);printf("结果校验值: %.2f\n", result);return 0;
}
EOF# 编译程序
gcc -O3 -lm cpu-float-test.c -o cpu-float-test# 运行测试
./cpu-float-test | tee results/cpu/06-float-test.txt

gcc -O3:使用 O3 级别优化(最高优化)-lm:链接数学库(math.h 需要)sqrt()、sin()、cos():常见的浮点运算函数- 测试结果越快说明 CPU 浮点性能越好
测试结果:

编辑
测试执行 1 亿次浮点运算(sqrt(i) * sin(i) * cos(i)),耗时 0.89 秒,每秒运算 111.84 M ops/sec,结果校验值 2874.09。
性能分析:openEuler 22.03 LTS 的浮点性能高效,每秒超过 1 亿次运算,耗时不到 1 秒,这归功于其对数学库和 FPU 的优化支持。在 4GB 内存配置下,计算准确且快速,适用于科学计算场景。
5.7 内存性能测试
5.7.1 内存顺序访问测试
目的:测试内存的顺序读写性能
cd /opt/performance-test

内存顺序写入
说明: 顺序写入 10GB 数据,块大小 1KB
# 内存顺序写入
sysbench memory \--memory-block-size=1K \--memory-total-size=10G \--memory-oper=write \--memory-access-mode=seq \--threads=1 \run | tee results/memory/01-seq-write-1t.txt

--memory-block-size=1K:每次写入 1KB--memory-total-size=10G:总共写入 10GB--memory-oper=write:写入操作--memory-access-mode=seq:顺序访问模式
测试结果:

编辑
内存顺序写入:总操作 10485760,每秒操作 9797630.65,总时间 1.0697s,传输 10240 MiB(9568.00 MiB/sec),平均延迟 0.00ms,最大延迟 0.13ms。
性能分析:openEuler 22.03 LTS 的内存管理机制高效,顺序写入速率接近 10GB/s,延迟几乎为零,突显其内核对内存带宽的优化。在虚拟化环境下,此性能稳定,适合数据密集型应用。
内存顺序读取
说明: 顺序读取 10GB 数据,块大小 1KB
# 内存顺序读取
sysbench memory \--memory-block-size=1K \--memory-total-size=10G \--memory-oper=read \--memory-access-mode=seq \--threads=1 \run | tee results/memory/02-seq-read-1t.txt

测试结果:

编辑
内存顺序读取:总操作 10485760,每秒操作 11716128.06,总时间 0.8943s,传输 10240 MiB(11441.53 MiB/sec),平均延迟 0.00ms,最大延迟 0.19ms。
性能分析:在 openEuler 22.03 LTS 上,顺序读取性能优于写入,速率高达 11.4GB/s,这得益于其缓存预取和 I/O 优化的设计。低延迟确保了高效响应,特别适用于大数据加载任务。
5.7.2 内存随机访问测试
目的:测试内存的随机读写性能(更接近实际应用场景)
内存随机写入
说明: 随机写入 10GB 数据,块大小 1KB
# 内存随机写入
sysbench memory \--memory-block-size=1K \--memory-total-size=10G \--memory-oper=write \--memory-access-mode=rnd \--threads=1 \run | tee results/memory/03-rnd-write-1t.txt

测试结果:

编辑
内存随机写入:总操作 10485760,每秒操作 4783944.93,总时间 2.1913s,传输 10240 MiB(4671.82 MiB/sec),平均延迟 0.00ms,最大延迟 0.10ms。
性能分析:openEuler 22.03 LTS 在随机写入场景中保持了 4.7GB/s 的稳定速率,尽管较顺序模式慢,但延迟低且无瓶颈,这反映了其内存控制器的智能优化。适用于数据库等真实应用,体现了 openEuler 在复杂负载下的适应性和性能平衡。
内存随机读取
说明: 随机读取 10GB 数据,块大小 1KB
# 内存随机读取
sysbench memory \--memory-block-size=1K \--memory-total-size=10G \--memory-oper=read \--memory-access-mode=rnd \--threads=1 \run | tee results/memory/04-rnd-read-1t.txt

测试结果:

编辑
内存随机读取:总操作 10485760,每秒操作 4759985.98,总时间 2.2023s,传输 10240 MiB(4648.42 MiB/sec),平均延迟 0.00ms,最大延迟 0.20ms。
性能分析:随机读取在 openEuler 22.03 LTS 上表现稳健,速率约 4.6GB/s,延迟控制优秀,得益于其内核对随机访问的缓存管理和优化。相比顺序模式虽有折损,但整体高效。
5.7.3 多线程内存性能测试
目的:测试多线程并发访问内存的性能
说明: 4 个线程并发顺序写入内存
# 多线程内存性能
sysbench memory \--memory-block-size=1K \--memory-total-size=10G \--memory-oper=write \--memory-access-mode=seq \--threads=4 \run | tee results/memory/05-seq-write-4t.txt

测试结果:

编辑
总操作 10485760,每秒操作 29906157.46,总时间 0.3500s,传输 10240 MiB(29205.23 MiB/sec),平均延迟 0.00ms,最大延迟 5.70ms。
性能分析:openEuler 22.03 LTS 的多线程内存并发性能卓越,4 线程写入速率达 29GB/s,提升约 3 倍,线程公平性完美。这源于其先进的并发优化和资源分配机制,在高并发服务器任务中表现出色。
5.7.4 内存延迟测试
目的:测试内存访问延迟(纳秒级)
说明: 测试内存访问的平均延迟
# 创建内存延迟测试程序
cat > memory-latency.c << 'EOF'
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>#define SIZE (64 * 1024 * 1024) // 64MB
#define ITERATIONS 10000000 // 1000万次int main() {printf("内存延迟测试\n");printf("缓冲区大小: %d MB\n", SIZE / (1024*1024));printf("迭代次数: %d\n\n", ITERATIONS);// 分配内存char *buffer = (char *)malloc(SIZE);if (!buffer) {printf("内存分配失败\n");return 1;}// 初始化内存memset(buffer, 0, SIZE);// 开始测试struct timespec start, end;clock_gettime(CLOCK_MONOTONIC, &start);volatile int sum = 0;for (int i = 0; i < ITERATIONS; i++) {// 以缓存行大小(64字节)为步进访问sum += buffer[(i * 64) % SIZE];}clock_gettime(CLOCK_MONOTONIC, &end);// 计算延迟double elapsed = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1e9;double latency_ns = (elapsed / ITERATIONS) * 1e9;printf("测试结果:\n");printf(" 内存访问延迟: %.2f ns\n", latency_ns);printf(" 总耗时: %.2f 秒\n", elapsed);printf(" 吞吐量: %.2f M ops/sec\n", ITERATIONS / elapsed / 1e6);free(buffer);return 0;
}
EOF# 编译
gcc -O2 memory-latency.c -o memory-latency# 运行测试
./memory-latency | tee results/memory/07-latency-test.txt

- 测试以 64 字节步进访问内存(CPU 缓存行大小)
- 使用
clock_gettime获取高精度时间 - 延迟越低说明内存性能越好
测试结果:

编辑
测试 64MB 缓冲区,1000 万次迭代,访问延迟 0.56 ns,总耗时 0.01 秒,吞吐量 1771.89 M ops/sec。
性能分析:在 openEuler 22.03 LTS 环境下,内存延迟仅 0.56ns,吞吐量高,这得益于其对缓存行和时钟优化的支持。测试快速高效,适用于高精度应用。
5.7.5 内存压力测试
目的:测试系统在内存压力下的稳定性
说明: 2 个进程各占用 1GB 内存,持续 2 分钟
# 启动内存监控
echo "启动内存监控..."
free -m -s 1 > results/memory/08-stress-free.txt &
FREE_PID=$!# 记录开始时间
echo "开始时间: $(date '+%H:%M:%S')"# 运行内存压力测试
stress --vm 2 --vm-bytes 1G --timeout 120s --verbose 2>&1 | tee results/memory/08-stress-test.txt# 停止监控
kill $FREE_PID 2>/dev/nullecho "结束时间: $(date '+%H:%M:%S')"

--vm 2:启动 2 个内存测试进程--vm-bytes 1G:每个进程分配 1GB 内存free -m -s 1:每秒记录一次内存使用情况
测试结果:

编辑
测试 2 个进程各 1GB 内存,持续 120 秒,free 监控显示内存使用从低到高(如 used 从 1027MB 升至 1622MB),Swap 未使用。
性能分析:openEuler 22.03 LTS 在内存压力下稳定性强,使用率升高但无 Swap 激活,系统无崩溃。这反映了其高效的内存管理和 OOM 避免机制,在 4GB 配置中耐受良好,特别适合资源受限的嵌入式场景,体现了 openEuler 的可靠性和优化深度。
六、性能评测总结
在 VMware Workstation 17.x 虚拟化平台上部署的 openEuler 22.03 LTS 系统(x86_64 架构,4 核心 CPU、4GB 内存、40GB 硬盘、NAT 网络),通过 sysbench、stress 等工具进行了 CPU 和内存基准测试。整体而言,openEuler 22.03 LTS 展现出卓越的性能优化和稳定性,openEuler 其内核调度、多核支持和资源管理机制在虚拟环境中的表现尤为突出,适用于服务器、云计算和边缘计算场景。
CPU 性能总结
CPU 测试覆盖单线程、多线程、压力和浮点运算等多种场景。单线程每秒事件数达 2512.92,平均延迟 0.40ms,显示出高效的单核计算能力;多线程扩展优秀,双线程和四线程分别提升 1.95 倍和 3.60 倍,四线程每秒事件数 9052.60,证明了 openEuler 对并行处理的优化。压力测试下,4 核心满载 120 秒无异常,sar 监控确认系统稳定;浮点运算 1 亿次仅耗 0.89 秒,每秒 111.84 M ops/sec,突显其在科学计算领域的潜力。总体上,openEuler 22.03 LTS 的 CPU 性能在虚拟机配置中高效可靠,内核增强确保了高负载下的响应性和耐久性。
内存性能总结
内存测试包括顺序/随机访问、多线程、延迟和压力场景。顺序写入/读取速率分别达 9.57GB/s 和 11.44GB/s,延迟近零,适合连续数据处理;随机访问虽速率降至约 4.6-4.7GB/s,但稳定性强,适用于真实应用如数据库。四线程并发写入高达 29.23GB/s,提升显著;延迟测试仅 0.56ns,吞吐量 1771.89 M ops/sec;压力测试下 2GB 负载无 Swap 激活,内存使用率控制良好。openEuler 22.03 LTS 的内存管理机制优化出色,缓存和并发支持提升了整体效率,在资源受限环境中表现出色。
总体评价
本次评测确认 openEuler 22.03 LTS 在 4 年标准支持周期内,提供可靠的性能基准,特别是在虚拟化部署中,其优化(如内核和工具兼容性)确保了流畅运行和低开销。相比通用 Linux 发行版,openEuler 在多核扩展和稳定性上更具优势,推荐用于生产环境。若需进一步优化,可考虑增加物理资源或特定工作负载调整。