如何测试CPU,IO和MEM的benchmark

2016/10/20 Performance

本文通过实例来演示如何测试CPU,MEM和IO的benchmark。以此作为性能调优的一个基础。

CPU 性能测试

可以通过下面几个命令行测试CPU的性能。 对于CPU,通过时间Time来衡量其性能。

sysbench

sysbench工具通过计算素数来测试CPU的性能,下面这个命令用四个线程来计算9999以内的素数,看看得花费多少时间,通过时间的长短而评估CPU的性能。
时间越短,说明CPU性能越好。

#sysbench --test=cpu --num-threads=4 --cpu-max-prime=9999 run

线程的数量一般和cpu的数量相等

IO性能测试

磁盘IO的性能直接影响系统的整体性能和用户体验。通过测试工具得到IOPS和MBPS峰值来评估IO的性能。

dd命令测试写性能

下面这条命令在当前目录下产生大概1.6G的内容为0的文件,来评估IO的写性能。

root@sdnhubvm:[12:06]$ dd bs=16k count=102400 oflag=direct if=/dev/zero of=test_data
102400+0 records in
102400+0 records out
1677721600 bytes (1.7 GB) copied, 12.3246 s, 136 MB/s

dd命令测试读性能

下面这条命令读 test_data文件,然后把它丢弃到back hole里去,来测试读IO性能。

root@sdnhubvm:[12:18]$ dd bs=16K count=102400 iflag=direct if=test_data of=/dev/null
102400+0 records in
102400+0 records out
1677721600 bytes (1.7 GB) copied, 12.759 s, 131 MB/s

hdparm命令直接读性能

下面这个命令在没有任何文件系统开销的情况下,测试读磁盘的性能。

root@sdnhubvm:[12:20]$ hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 1728 MB in  3.00 seconds = 575.73 MB/sec
 

fio命令测试4KB随机写的IOPS

下面通过fio来测试随机写的IOPS。

注:在测试之前清空缓存 echo 1 >/proc/sys/vm/drop_caches

$fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randwrite -size=1000G -filename=/dev/vdb 
-name="EBS 4K randwrite test" -iodepth=64 -runtime=60

fio的参数:

  • ioengine: 负载引擎,我们一般使用libaio,发起异步IO请求。
  • bs: IO大小
  • direct: 直写,绕过操作系统Cache。因为我们测试的是硬盘,而不是操作系统的Cache,所以设置为1。
  • rw: 读写模式,有顺序写write、顺序读read、随机写randwrite、随机读randread等。
  • size: 寻址空间,IO会落在 [0, size)这个区间的硬盘空间上。这是一个可以影响IOPS的参数。一般设置为硬盘的大小。
  • filename: 测试对象
  • iodepth: 队列深度,只有使用libaio时才有意义。这是一个可以影响IOPS的参数。
  • runtime: 测试时长

Mem性能测试

通过测试工具得到Mem的带宽和延时来评估Mem的性能。

sysbench

  • sysbench will allocate a buffer (provided through the –memory-block-size parameter, defaults to 1kbyte)
  • each execution will read or write to this memory (–memory-oper, defaults to write)
  • in a random or sequential manner (–memory-access-mode, defaults to sequential).
$sysbench --test=memory --memory-block-size=1M --memory-total-size=10G run

Operations performed: 10240 (10202.87 ops/sec)

lmbench

lmbench这个工具可以测试的指标如下所示,功能是比较强大的。通过lmbench来测试Mem的Bandwidth和latency。

  • Bandwidth benchmarks
    Cached file read
    Memory copy (bcopy)
    Memory read
    Memory write
    Pipe
    TCP
  • Latency benchmarks
    Context switching
    Networking: connection establishment, pipe, TCP, UDP, and RPC hot potato
    File system creates and deletes
    Process creation
    Signal handling
    System call overhead
    Memory read latency
  • Miscellanious
    Processor clock rate calculation

参考文档

Search

    Post Directory