You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu虚拟机上按指定核心数并行运行BPFM等基准测试并拉满CPU?

解决方案:核心绑定+测试参数调优

要实现按2的幂次核心数并行测试,且让指定核心跑满100%,核心是用Open-MPI的进程-核心绑定,再配合每个测试工具的高负载参数。以下是具体操作:

一、Open-MPI核心绑定基础

用mpirun的这两个参数确保进程绑定到指定核心,避免调度漂移:

  • --bind-to core:强制每个进程绑定到单个物理核心
  • --map-by core:按核心分配进程,每个核心对应一个进程
  • --np <num>:指定并行进程数(等于要使用的核心数)

二、分工具执行命令(单工具满核心测试)

针对每个工具,调整参数生成足够负载,确保CPU跑满:

1. BPFM 测试

BPFM需要生成持续的计算/网络负载才能占满CPU,假设你的BPFM程序有负载生成模块:

# 用8核心测试:8个进程,每个绑定1核
mpirun --np 8 --bind-to core --map-by core bpftool prog run ./your_bpf_prog.o -- load-full

注:--load-full是示例参数,需替换为你BPFM程序中能生成满负载的选项(比如循环哈希计算、高速发包)

2. IOR 存储测试

IOR要跑满CPU,需设置高IO压力(同步IO+大吞吐量):

# 16核心测试:16个IOR进程,每个绑定1核
mpirun --np 16 --bind-to core --map-by core ior -a POSIX -b 2G -t 128M -i 15 -F --sync

参数说明:--sync启用同步IO,让CPU参与调度;-b/-t设置足够大的块大小,确保IO压力拉满。

3. FIO 存储IO测试

用同步IO模式让CPU参与调度,容易跑满核心:

# 4核心测试:4个FIO进程,每个绑定1核
mpirun --np 4 --bind-to core --map-by core fio --name=full_load --ioengine=sync --rw=randread --bs=4k --numjobs=1 --size=20G --runtime=120 --time_based

--numjobs=1确保每个mpirun进程对应一个独立FIO任务,避免进程复用

4. Sysbench CPU测试

Sysbench CPU测试本身就能跑满核心,只需设置足够大的计算量:

# 32核心测试:32个Sysbench进程,每个绑定1核
mpirun --np 32 --bind-to core --map-by core sysbench cpu --cpu-max-prime=200000 run

--cpu-max-prime值越大,计算时间越长,CPU占用越稳定

三、并行运行多个测试(按比例分配核心)

比如总核心数为64,要让四个测试各占25%(16核),给每个测试分配专属核心组:

# BPFM绑定核心0-15,后台运行
mpirun --np 16 --bind-to core:0-15 --map-by core bpftool prog run ./your_bpf_prog.o -- load-full &
# IOR绑定核心16-31,后台运行
mpirun --np 16 --bind-to core:16-31 --map-by core ior -a POSIX -b 2G -t 128M -i 15 -F --sync &
# FIO绑定核心32-47,后台运行
mpirun --np 16 --bind-to core:32-47 --map-by core fio --name=full_load --ioengine=sync --rw=randread --bs=4k --numjobs=1 --size=20G --runtime=120 --time_based &
# Sysbench绑定核心48-63,前台运行
mpirun --np 16 --bind-to core:48-63 --map-by core sysbench cpu --cpu-max-prime=200000 run

如果总核心数是2,每个测试占1核(50%),则给每个测试分配1个核心即可。

四、验证CPU使用率

运行测试时,用以下命令确认核心使用率:

# 实时查看每个核心的负载
htop
# 每2秒输出一次核心使用率统计
mpstat -P ALL 2

正常情况下,绑定的核心使用率会稳定在95%-100%。

五、关键注意事项

  • 虚拟机必须配置独占核心(宿主机不能超配CPU),否则核心会被宿主机抢占,无法达到100%使用率。
  • 每个工具的负载参数需要根据你的硬件调整,比如IOR/FIO的块大小、Sysbench的质数上限,确保进程不会提前结束或负载不足。
  • 如果Open-MPI绑定不生效,可搭配taskset强制绑定:比如taskset -c 0-7 mpirun --np 8 ...,双重保障核心绑定。

内容的提问来源于stack exchange,提问作者JulianW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:17:07