Skip to content

Commit c865f57

Browse files
docs(lmbench): 添加测试脚本使用说明文档
添加 lmbench 测试脚本的完整使用文档,包含: 1. 目录结构说明 2. 环境配置方法 3. 测试执行步骤 4. 测试分类详解(8 大类 48 个测试) 5. 注意事项和依赖说明 6. 宿主机和 DragonOS 使用差异 7. 后续改进计划 该文档为用户提供了测试脚本的使用指南和参考。 Signed-off-by: yuming <[email protected]>
1 parent 0fe12e9 commit c865f57

File tree

1 file changed

+179
-0
lines changed
  • user/apps/tests/benchmark/lmbench/scripts

1 file changed

+179
-0
lines changed
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
# Lmbench 测试脚本
2+
3+
本目录包含 lmbench 基准测试的所有测试用例脚本。
4+
5+
## 目录结构
6+
7+
```
8+
scripts/
9+
├── env.sh # 环境变量配置脚本
10+
├── README.md # 本说明文件
11+
├── ext2_*.sh # ext2 文件系统测试
12+
├── ramfs_*.sh # ramfs 文件系统测试
13+
├── mem_*.sh # 内存相关测试
14+
├── pipe_*.sh # 管道测试
15+
├── process_*.sh # 进程相关测试
16+
├── semaphore_lat.sh # 信号量测试
17+
├── signal_*.sh # 信号相关测试
18+
├── tcp_loopback_*.sh # TCP loopback 测试
19+
├── tcp_virtio_*.sh # TCP virtio 测试
20+
├── udp_*.sh # UDP 测试
21+
├── unix_*.sh # Unix domain socket 测试
22+
├── vfs_*.sh # VFS 相关测试
23+
└── fifo_lat.sh # FIFO 测试
24+
```
25+
26+
## 使用方法
27+
28+
### 1. 配置环境
29+
30+
在运行任何测试前,必须先 source 环境配置脚本:
31+
32+
```bash
33+
cd user/apps/tests/benchmark/lmbench/scripts
34+
source env.sh
35+
```
36+
37+
这会配置以下环境变量:
38+
- `LMBENCH_BIN`: lmbench 二进制文件路径 (`/lib/lmbench/bin/x86_64-linux-gnu`)
39+
- `LMBENCH_EXT2_DIR`: ext2 文件系统测试目录 (`/ext2`)
40+
- `LMBENCH_TMP_DIR`: 临时文件目录 (`/tmp`)
41+
- `LMBENCH_LOG_DIR`: 日志目录 (`/tmp/lmbench_logs`)
42+
- `LMBENCH_TEST_FILE`: 测试文件名 (`test_file`)
43+
- `LMBENCH_ZERO_FILE`: zero 文件名 (`zero_file`)
44+
45+
### 2. 运行单个测试
46+
47+
```bash
48+
# 例如:运行内存拷贝带宽测试
49+
./mem_copy_bw.sh
50+
51+
# 例如:运行管道延迟测试
52+
./pipe_lat.sh
53+
```
54+
55+
### 3. 运行所有测试
56+
57+
```bash
58+
# 遍历所有测试脚本
59+
for script in *.sh; do
60+
if [ "$script" != "env.sh" ]; then
61+
echo "Running $script..."
62+
./"$script"
63+
fi
64+
done
65+
```
66+
67+
## 测试分类
68+
69+
### 文件系统测试
70+
- **ext2_copy_files_bw.sh**: ext2 文件拷贝带宽
71+
- **ext2_create_delete_files_0k_ops.sh**: ext2 创建/删除 0k 文件
72+
- **ext2_create_delete_files_10k_ops.sh**: ext2 创建/删除 10k 文件
73+
- **ramfs_copy_files_bw.sh**: ramfs 文件拷贝带宽
74+
- **ramfs_create_delete_files_0k_ops.sh**: ramfs 创建/删除 0k 文件
75+
- **ramfs_create_delete_files_10k_ops.sh**: ramfs 创建/删除 10k 文件
76+
77+
### 内存测试
78+
- **mem_copy_bw.sh**: 内存拷贝带宽
79+
- **mem_read_bw.sh**: 内存读带宽
80+
- **mem_write_bw.sh**: 内存写带宽
81+
- **mem_mmap_bw.sh**: 内存 mmap 带宽
82+
- **mem_mmap_lat.sh**: 内存 mmap 延迟
83+
- **mem_pagefault_lat.sh**: 页错误延迟
84+
85+
### IPC 测试
86+
- **pipe_bw.sh**: 管道带宽
87+
- **pipe_lat.sh**: 管道延迟
88+
- **fifo_lat.sh**: FIFO 延迟
89+
- **semaphore_lat.sh**: 信号量延迟
90+
91+
### 进程测试
92+
- **process_fork_lat.sh**: fork 延迟
93+
- **process_exec_lat.sh**: exec 延迟
94+
- **process_shell_lat.sh**: shell 调用延迟
95+
- **process_ctx_lat.sh**: 进程上下文切换延迟
96+
- **process_getppid_lat.sh**: getppid 系统调用延迟
97+
98+
### 信号测试
99+
- **signal_install_lat.sh**: 信号安装延迟
100+
- **signal_catch_lat.sh**: 信号捕获延迟
101+
- **signal_prot_lat.sh**: 信号保护延迟
102+
103+
### 网络测试 (TCP)
104+
- **tcp_loopback_bw_128.sh**: TCP loopback 带宽 (128 字节)
105+
- **tcp_loopback_bw_4k.sh**: TCP loopback 带宽 (4k)
106+
- **tcp_loopback_bw_64k.sh**: TCP loopback 带宽 (64k)
107+
- **tcp_loopback_lat.sh**: TCP loopback 延迟
108+
- **tcp_loopback_connect_lat.sh**: TCP loopback 连接延迟
109+
- **tcp_loopback_http_bw.sh**: TCP loopback HTTP 带宽
110+
- **tcp_loopback_select_lat.sh**: TCP select 延迟
111+
- **tcp_virtio_bw_128.sh**: TCP virtio 带宽 (128 字节)
112+
- **tcp_virtio_bw_64k.sh**: TCP virtio 带宽 (64k)
113+
- **tcp_virtio_lat.sh**: TCP virtio 延迟
114+
- **tcp_virtio_connect_lat.sh**: TCP virtio 连接延迟
115+
116+
### 网络测试 (UDP)
117+
- **udp_loopback_lat.sh**: UDP loopback 延迟
118+
- **udp_virtio_lat.sh**: UDP virtio 延迟
119+
120+
### Unix Domain Socket 测试
121+
- **unix_bw.sh**: Unix socket 带宽
122+
- **unix_lat.sh**: Unix socket 延迟
123+
- **unix_connect_lat.sh**: Unix socket 连接延迟
124+
125+
### VFS 测试
126+
- **vfs_open_lat.sh**: open 系统调用延迟
127+
- **vfs_read_lat.sh**: read 系统调用延迟
128+
- **vfs_write_lat.sh**: write 系统调用延迟
129+
- **vfs_stat_lat.sh**: stat 系统调用延迟
130+
- **vfs_fstat_lat.sh**: fstat 系统调用延迟
131+
- **vfs_fcntl_lat.sh**: fcntl 系统调用延迟
132+
- **vfs_select_lat.sh**: select 系统调用延迟
133+
- **vfs_read_pagecache_bw.sh**: 页缓存读带宽
134+
135+
## 注意事项
136+
137+
### 1. 依赖文件准备
138+
某些测试需要预先准备测试文件:
139+
- ext2/ramfs 拷贝测试需要 `zero_file`
140+
- mmap/pagefault 测试需要 `test_file`
141+
142+
### 2. 服务端进程
143+
以下测试会自动启动服务端进程并在测试结束后清理:
144+
- 所有 TCP loopback 测试
145+
- UDP loopback 测试
146+
- Unix socket 连接测试
147+
148+
### 3. Virtio 网络测试
149+
`tcp_virtio_*``udp_virtio_*` 测试需要在 10.0.2.15 有对应的服务端运行。
150+
151+
### 4. HTTP 测试
152+
`tcp_loopback_http_bw.sh` 需要当前目录存在 `file_list` 文件。
153+
154+
## 在宿主机 vs DragonOS 中运行
155+
156+
这些脚本设计为同时支持在宿主机和 DragonOS 中运行:
157+
158+
**宿主机 (Ubuntu)**:
159+
```bash
160+
cd user/apps/tests/benchmark/lmbench/scripts
161+
source env.sh
162+
./mem_copy_bw.sh
163+
```
164+
165+
**DragonOS**:
166+
```bash
167+
cd /test/benchmark/lmbench/scripts # 通过 /test 符号链接访问
168+
source env.sh
169+
./mem_copy_bw.sh
170+
```
171+
172+
两个环境使用相同的路径前缀 `/lib/lmbench/bin/x86_64-linux-gnu/`
173+
174+
## 下一步计划
175+
176+
1. 创建配置文件来控制每个测试是否执行
177+
2. 编写 Makefile 统一运行接口
178+
3. 添加日志重定向和结果收集
179+
4. 实现测试结果对比工具

0 commit comments

Comments
 (0)