linux性能测试

  • super_pi 是一个单线程浮点运算程序,借助libc的数学库,可以求解任意位数的圆周率值。我们关心其运算的总耗时,由于实现方法不同,不推荐不同工具的横向对比
    • super_pi 1048576 即测试cpu计算出1048576位圆周率的耗时
  • sysbench 是一个模块化的、跨平台、多线程基准测试工具。

    • sysbench [general-options]... --test=<test-name> [test-options]... command
    • general-options
      • --num-threads=N 测试的线程
      • --max-requests=N 限制总的请求量
      • --max-time=N 线程程序执行时间
      • --thread-stack-size=SIZE 限制每个线程栈大小,默认32K
    • test-options
      • fileio 磁盘io性能
      • cpu cpu性能测试
      • memory 内存读写速度
      • threads 多线程性能测试
      • mutex 互斥锁性能测试
      • oltp - OLTP test
  • sysbench --test=cpu test options解释

    • --cpu-max-prime=N cpu测试主要是进行素数的加法运算,每个线程并行执行直到请求总数或执行时间超过选项指定值
  • sysbench --test=fileio fileio基准测试在不同类型的i/o负载下的处理能力,文件的大小:测试文件的大小应该大于内存,如果测试数据过小,内存缓存文件数据,则不能表示为一种i/o密集型的工作负载;

    • 我们关注i/o子系统调整的主要信息:每秒的请求数量和总体的吞吐量
    • --file-num 准备阶段指定生成的文件数量
    • --file-block-size 指定文件块的大小,默认16K
    • --file-total-size 指定文件总的大小,默认2G
    • --file-test-mode 指定产生文件负荷的类型,可以有以下值
      • seqwr 顺序写
      • seqrewr 顺序读写
      • seqrd 顺序读
      • rndrd 随机读
      • rndwr 随机写
      • rndrw 随机读写
    • --file-io-mode I/O 模式,默认sync
      • sync
      • async
      • fastmmap
      • slowmmap
    • --file-rw-ratio 指定reads/writes比例,默认1.5
  • sysbench --test=memory 测试内存的分配和传输速度

    • 我们关注执行的总时间
    • --memory-block-size=SIZE 内存块的大小默认 [1K]
    • --memory-total-size=SIZE 总的传输文件大小,默认[100G]
    • --memory-hugetlb=[on|off] allocate memory from HugeTLB pool [off]
    • --memory-oper=STRING 内存操作类型 read/write 默认write
    • --memory-access-mode=STRING memory access mode {seq,rnd} [seq]
  • fio [options] [job options] <job file(s)> 测试磁盘I/O性能
    • 我们关注iops和吞吐量
    • --output 把输出结果写到文件
    • --runtime 执行时间,读写时间可能较长,指定时间结束执行
    • --bandwidth-log Generate per-job bandwidth logs
    • --output-format=x Output format (terse,json,normal)
  • job paramaters
    • filename=str 测试文件名称, 只能是分区,不能是目录,会破坏数据。
    • lockfile=str 如果文件是共享访问的,fio通过顺序化IO保证最终结果的正确,共享通常是模拟真实的文件模式
      • none 不添加锁 default
      • exclusive/readwrite
    • rw=str I/O模式
      • read 顺序读
      • write 顺序写
      • randread 随机读
      • randwrite 随机写
      • rw 顺序读写
      • randrw 随机读写
    • size=int 总的文件大小
    • bs=int 读写的文件块默认4K
    • ioengine=str defines how the job issues I/O
      • sync 同步I/O
      • psync 同步I/O,从指定offset位置开始读写
      • vsync 垂直同步
      • pvsync
      • libaio Linux默认的异步I/O
      • mmap 将一个文件或者其它对象映射进内存
      • net 从网络传输 传输协议可以通过protocol参数指定
    • iodepth=int 在某个时刻,队列中的IO请求、磁盘正在处理的IO请求总数,增加队列深度可以让硬盘不停的工作,减少空闲时间。不过,IO在队列的等待时间也会增加,导致IO响应时间变大
    • direct=bool 如果true,测试过程绕过机器自带的buffer。使测试结果更真实。默认false
    • buffered=bool 和direct相反,默认true
    • rwmixread=int 同时读写是读占的比重,默认50
    • rwmixwrite=int 同上
    • runtime=int 指定秒数后终止执行
    • numjobs=int 指定测试线程,默认为1
    • group_reproting 如果设置,则会汇总每个进程的信息。
    • thread Use threads created with pthread_create(3) instead of processes created with fork(2)
    • lockmem=1g 只使用1g内存进行测试。
  • iperf3网络测试 需要两台虚拟机,一台作为服务器,一台作为客户端

    • Server or Client:
      • -p, --port 服务端监听的端口
      • -i, --interval # 周期性带宽报告间隔秒数,默认一秒
      • -A, --affinity n/n,m set CPU affinity
      • -V, --verbose 详细输出信息
      • -J, --json 输出json格式
    • Server specific:
      • -s, --server 开启服务端
      • -D, --daemon 后台运行
    • Client specific:
      • -u, 使用udp 默认是tcp
      • -b, --bandwidth #[KMG] 设置带宽大小,udp默认1Mbits/s,不限制tcp,如果不设置不能正确测试udp吞吐量
      • -n, --bytes #[KMG] number of bytes to transmit (instead of -t)
      • -k, --blockcount #[KMG] number of blocks (packets) to transmit (instead of -t or -n)
      • -l, --len #[KMG] 读写的缓存大小tcp默认128K,udp默认8K
      • -P, --parallel # 线程数
      • -R, --reverse 服务器发送,客户端接收
      • -w, --window #[KMG] tcp 传输的包的大小,可测试大小不同的包
      • -M, --set-mss #设置TCP的 MTU大小
      • -N, --nodelay set TCP no delay, disabling Nagle's Algorithm
      • -4, --version4 only use IPv4
      • -6, --version6 only use IPv6
      • -Z, --zerocopy 发送数据时使用零缓存策略
      • -O, --omit N 忽略前n个数据包,连接刚建立时数据不稳定
      • --get-server-output get results from server
  • iperf3用来测试网络吞吐量、延迟和丢包率和稳定性,测试稳定性时应该持续一段时间观察网络的吞吐量

  • stress-ng 可以提供近200中测试,我们只使用其中的cpu测试
    • --io 产生多个处理sync()函数的磁盘I/O进程,sync()用于将内存上的内容写到硬盘上
    • eg:stress-ng --io 4
    • -t secs 指定执行秒数
    • -m | --vm forks 产生多个处理malloc()内存分配函数的进程
    • --vm-bytes bytes指定内存的Bytes数,默认值是1(与--vm-hang配合使用)
    • --vm-hang 指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器;例如,下面命令运行时就会配到并一直持有256M内存,直到进程被终止;
    • stress --vm 2 --vm-bytes 128M --vm-hang
    • -d --hadd n 产生n个执行write和unlink函数的进程
    • -c forks|--cpu forks 产生多个处理sqrt()函数的CPU进程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容