Skip to content

BadMoney006/SystemProgramming-Lab1

Repository files navigation

Lab 1 — UNIX I/O 性能实验与高吞吐量 I/O 服务器设计

目录结构

学号/
├── partA/
│   ├── main.c         # I/O 性能测试程序
│   ├── Makefile
│   └── report.pdf     # 实验报告
├── partB/
│   ├── src/           # 服务器与客户端源码
│   ├── Makefile
│   ├── README.md
│   └── paper.pdf      # 论文
└── README.md

Part A — UNIX I/O 性能对比

测试以下 I/O 方式在不同 BUFFSIZE 下的 real/user/sys 时间:

测试 说明
read_bench 系统调用 read()
getc_bench 逐字符 getc()
fgetc_bench 逐字符 fgetc()
fread_bench 标准库 fread()
myfread_bench 自实现 my_fread()
write_bench write()O_SYNC
wsync_bench write()O_SYNC

快速开始

使用根目录的 run.sh 一键完成编译、生成测试文件、运行所有测试并保存结果:

# 运行全部实验(Part A + Part B)
./run.sh

# 只运行 Part A
./run.sh partA

# 只运行 Part B
./run.sh partB

结果保存在 results/ 目录下:

  • results/partA_results.txt — Part A 所有 I/O 方式的性能数据
  • results/partB_<server>.txt — 各服务器的吞吐量与延迟数据

注: 清除页缓存需要 root 权限(/proc/sys/vm/drop_caches)。无 root 时脚本会打印警告并跳过,测试在热缓存下继续运行,结果仍有效,请在报告中注明。

Part B — 高吞吐量 I/O 服务器

实现了 4 种并发模型:

服务器 模型 要求
poll_server poll(2) 多路复用 必做
thread_server 线程池(默认 8 线程) 必做
epoll_server epoll(7) 边缘触发 加分项
iouring_server io_uring 异步 I/O 加分项(需 liburing)

详见 partB/README.md

实验环境说明

在虚拟机 / WSL 中运行。请在报告中注明:操作系统版本、内核版本、文件系统类型、磁盘类型(虚拟磁盘)等信息。

uname -a          # 内核版本
lsb_release -a    # 发行版信息
df -T .           # 文件系统类型

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages