Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smallcode

一些用于性能测试和系统监控的小工具。

构建

gen_randomtimertcpBench 均使用 C++11 构建。在 macOS 和 Linux 上安装 make 及可用的 C++ 编译器后执行:

make

生成的可执行文件位于 bin/

bin/gen_random
bin/timer
bin/tcpBench

也可以单独构建某一工具:

make gen_random
make timer
make tcpBench

通过 CXXCXXFLAGS 覆盖默认编译器或编译选项:

make CXX=clang++ CXXFLAGS='-std=c++11 -O2'

清理构建产物:

make clean

gen_random

生成并输出一个 32 位随机数和两个 64 位随机数。

./bin/gen_random

timer

对一段固定运算分别使用 gettimeofday 和 CPU 周期计时并输出耗时,适用于简单的计时方法演示。

./bin/timer

在 x86 Linux/macOS 上,CPU 周期计时使用 rdtsc 指令;在 Apple Silicon 等非 x86 平台上,该部分自动使用单调时钟并以纳秒输出。rdtsc 的结果基于源码中预设的 CPU 频率,仅供粗略比较。

tcpBench

多线程 TCP 吞吐测试工具。先在服务端启动监听,再从客户端发起连接。两端应使用相同的端口和相近的测试时长,并确保防火墙或安全组放行对应 TCP 端口。

服务端:

./bin/tcpBench --mode server --bind-addr 0.0.0.0 --port 5001 --duration 30

客户端:

./bin/tcpBench --mode client --host <SERVER_IP> --port 5001 --threads 4 --duration 30

本机联调时,先在一个终端执行:

./bin/tcpBench --mode server --port 5001 --duration 10

再在另一个终端执行:

./bin/tcpBench --mode client --host 127.0.0.1 --port 5001 --threads 4 --duration 10

常用参数:

参数 说明 默认值
--threads, -t 客户端并发连接数 4
--buf-size, -b 收发缓冲区大小,支持 KMG 后缀 65536
--duration, -d 测试时长,单位为秒 10
--update-interval, -u 吞吐显示间隔,单位为毫秒 1000
--tcp-nodelay 客户端启用 TCP_NODELAY 关闭
--send-buf 客户端设置 SO_SNDBUF0 表示保持系统默认值 0
--recv-buf 服务端设置 SO_RCVBUF0 表示保持系统默认值 0

查看完整参数说明:

./bin/tcpBench --help

rdma_monitor

Linux 下的 RDMA 端口流量监控脚本。它读取 /sys/class/infiniband/<device>/ports/1/counters/ 下的计数器,因此需要安装 Python 3 与 click,且本机存在可访问的 RDMA 设备。

安装依赖:

python3 -m pip install click

监控默认设备 mlx5_0,每秒更新一次:

python3 rdma_monitor/rdma_monitor.py

指定 RDMA 设备和更新间隔:

python3 rdma_monitor/rdma_monitor.py --dev mlx5_0 --interval 2

Ctrl-C 停止监控。该工具依赖 Linux 的 RDMA sysfs 接口,不能在没有 RDMA 设备的 macOS 主机上运行。

About

Some of the widget code you might use in programming

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages