test

2026年4月16日 · 2533 字 · 6 分钟

文件管理

  • basic
    • 脚本:scripts/basic/basic_testcode.sh
    • 关键测例:chdirclosedupdup2fstatgetcwdgetdentsmkdir_mountopenopenatpipereadumountunlinkwrite
  • busybox
    • 脚本:scripts/busybox/busybox_testcode.sh
    • 关键命令:touchcatcutodheadtailhexdumpmd5sumsortuniqstatwcmorermmkdirmvrmdircpfind
  • iozone
    • 脚本:scripts/iozone/iozone_testcode.sh
    • 覆盖点:顺序读写、随机读、反向读、跨步读、fwrite/freadpwrite/preadpwritev/preadv
  • unixbench
    • 脚本:scripts/unixbench/unixbench_testcode.sh
    • 关键测项:fstime 的小/中/大文件读、写、拷贝
  • lmbench
    • 脚本:scripts/lmbench/lmbench_testcode.sh
    • 关键测项:lat_syscall read/write/open/stat/fstatlmddlat_fsbw_file_rdbw_mmap_rd
  • LTP
    • 脚本:scripts/ltp/ltp_testcode.sh
    • 建议优先参考的 runtest 文件:ltp/runtest/fsltp/runtest/fs_bindltp/runtest/fs_perms_simpleltp/runtest/fs_readonly
    • 典型 syscall 族:open*close*read*write*stat*getdents*mount*umount*unlink*rename*mkdir*

内存管理

  • basic
    • 关键测例:brkmmapmunmap
  • libcbench
    • 脚本:scripts/libcbench/libcbench_testcode.sh
    • 作用:偏用户态运行库与分配器/字符串实现的微基准,可作为堆分配和内存访问路径压力来源
  • lmbench
    • 关键测项:lat_pagefaultlat_mmapbw_mmap_rd
  • LTP
    • 建议优先参考的 runtest 文件:ltp/runtest/mmltp/runtest/hugetlbltp/runtest/numa
    • 典型 syscall 族:brk*mmap*munmap*mremap*madvise*mincore*mlock*munlock*move_pages*migrate_pages*
    • 共享内存相关:shmat*shmctl*shmget*

进程、线程与调度

  • basic
    • 关键测例:cloneexecveexitforkgetpidgetppidsleeptimeswaitwaitpidyield
  • cyclictest
    • 脚本:scripts/cyclictest/cyclictest_testcode.sh
    • 关键测项:cyclictest 单线程/多线程实时延迟,hackbench 调度压力
  • unixbench
    • 关键测项:context1pipespawnexeclsyscalllooper + multi.sh
  • lmbench
    • 关键测项:lat_proc fork/exec/shelllat_ctxlat_pipelat_selectlat_sig
  • LTP
    • 建议优先参考的 runtest 文件:ltp/runtest/schedltp/runtest/nptlltp/runtest/cpuhotplug
    • 典型 syscall 族:clone*fork*vfork*execve*wait*waitpid*waitid*sched_*

IPC 与同步

  • basic
    • 关键测例:pipe
  • lmbench
    • 关键测项:lat_pipelat_select
  • LTP
    • 建议优先参考的 runtest 文件:ltp/runtest/syscalls-ipc
    • 典型 syscall 族:msg*sem*shm*futex*epoll*select*poll*eventfd*timerfd*

网络通信

  • iperf
    • 脚本:scripts/iperf/iperf_testcode.sh
    • 关键测项:TCP/UDP 基本吞吐、并发连接、反向传输
  • netperf
    • 脚本:scripts/netperf/netperf_testcode.sh
    • 关键测项:UDP_STREAMTCP_STREAMUDP_RRTCP_RRTCP_CRR
  • LTP
    • 建议优先参考的 runtest 文件:ltp/runtest/net.ipv6ltp/runtest/net.multicastltp/runtest/net.tcp_cmdsltp/runtest/net_stress.*

时间与定时

  • basic
    • 关键测例:gettimeofdaysleeptimes
  • cyclictest
    • 关键测项:定时精度与实时调度延迟
  • LTP
    • 典型 syscall 族:getitimer*setitimer*timerfd_*clock_nanosleep*alarm*nanosleep*

系统信息与基础环境

  • basic
    • 关键测例:uname
  • busybox
    • 关键命令:datedfdmesgduunameuptimepspwdfreehwclock

C 库与语言运行时

  • libctest
    • 脚本:scripts/libctest/libctest_testcode.sh
    • 作用:覆盖静态/动态链接下的 libc 接口兼容性
  • libcbench
    • 作用:覆盖 libc 微基准和用户态运行时热点路径
  • lua
    • 脚本:scripts/lua/lua_testcode.sh
    • 关键测项:date.luafile_io.luarandom.luaremove.luasort.luastrings.lua

CPU / 算术微基准

  • unixbench
    • 关键测项:dhry2regwhetstone-doublearithohshortintlongfloatdoublehanoi

推荐使用方式

  • 先用 basic 对 syscall 能力做最小闭环验证。
  • 文件系统实现稳定后,继续看 busyboxiozonelmbenchunixbench 里的文件相关项。
  • 内存和调度能力成熟后,再补 cyclictestLTPmmschedsyscalls-ipc
  • 网络栈单独看 iperfnetperfLTP 的网络 runtest 入口。