在CentOS系统上测试C++程序的性能可以通过多种方法和工具来实现。以下是一些常用的方法和工具:
基准测试可以评估系统在标准化任务下的基本性能水平。常用的基准测试工具有 sysbench,它可以用于评估CPU、内存、磁盘I/O等性能。
sysbench cpu --cpu-max-prime=20000 --threads=4 run
sysbench memory --memory-block-size=1m --memory-total-size=10g run
sysbench fileio --file-total-size=5g prepare
sysbench fileio --file-total-size=5g --file-test-mode=rndrw --time=60 --threads=4 run
sysbench fileio --file-total-size=5g cleanup
性能分析工具可以帮助你找出程序中的性能瓶颈。perf 和 火焰图 是两个非常强大的工具。
# 开发环境:从启动开始记录
sudo perf record -g ./slow_program
# 生产环境:对运行中程序采样30秒
sudo perf record -p <进程id> -g -f 99 sleep 30
# 分析结果
sudo perf report
# 先记录perf数据
sudo perf record -p <进程id> -g -f 99 sleep 30
# 导出数据
sudo perf script > perf.out
# 用flamegraph工具生成svg图
git clone https://github.com/brendangregg/flamegraph.git
cd flamegraph
./stackcollapse-perf.pl ../perf.out > ../perf.folded
./flamegraph.pl ../perf.folded > ../flamegraph.svg
# 使用浏览器打开生成的svg文件
firefox flamegraph.svg
压力测试可以评估系统在极端条件下的稳定性和性能极限。stress 是一个常用的压力测试工具。
# 安装stress工具
sudo yum install -y stress
# CPU测试 -c 2表示2颗CPU
stress -c 2
# 内存测试 -vm 2 2个线程 –vm-bytes 2000M分配2000M的内存测试
stress -vm 2 -vm-bytes 2000M -vm 2
磁盘I/O测试可以评估磁盘的读写性能。fio 是一个强大的磁盘I/O测试工具。
# 安装fio
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz
tar -zxvf fio-2.0.7.tar.gz
cd fio-2.0.7
make && make install
# 4k顺序读
fio -filename=/tmp/fiotest -direct=1 -iodepth 1 -thread -rw=read -rwmixread=70 -ioengine=psync -bs=4k -size=5G -numjobs=20 -runtime=60 -group_reporting -name=sqe_100read_4k
# 4k顺序写
fio -filename=/tmp/fiotest -direct=1 -iodepth 1 -thread -rw=write -rwmixwrite=70 -ioengine=psync -bs=4k -size=5G -numjobs=20 -runtime=60 -group_reporting -name=sqe_100write_4k
通过上述方法,你可以对CentOS系统上的C++程序进行全面的性能测试和分析,从而找出性能瓶颈并进行优化。