测试串行、并发、读、写 4类操作,每类操作又可以指定各种bs及count值,循环压测。每种场景一般执行3次,取平均值。

一、 串行写


  1. #!/bin/sh
  2. bs_list=(256k 1024k 10M 20M 50M 100M 1G)
  3. cnt_list=(40000 10000 1000 500 200 100 10)
  4. for i in {0..6}
  5. do
  6. for j in {0..2}
  7. do
  8. logfile=dd_${bs_list[$i]}_cnt${cnt_list[$i]}_${j}.txt
  9. echo -e "test ${j} started\n" > $logfile
  10. echo -e "started time `date`\n" >> $logfile
  11. dd if=/dev/zero of=testfile1 bs=${bs_list[$i]} count=${cnt_list[$i]} oflag=direct,nonblock 2>> $logfile
  12. echo -e "\nfinished time `date`" >> $logfile
  13. echo -e "\ntest ${j} finished" >> $logfile
  14. sleep 5
  15. done
  16. sleep 30
  17. done

二、 4并发写


  1. #!/bin/sh
  2. # ddtest_write_conc.sh
  3. bs_list=(256k 1024k 10M 20M 50M 100M 1G)
  4. cnt_list=(40000 10000 1000 500 200 100 10)
  5. for i in {0..6}
  6. do
  7. for j in {0..2}
  8. do
  9. logfile=dd_conc_${bs_list[$i]}_cnt${cnt_list[$i]}_${j}.txt
  10. echo -e "test ${j} started\n" > $logfile
  11. echo -e "started time `date`\n" >> $logfile
  12. for conc in {0..3}
  13. do
  14. {
  15. dd if=/dev/zero of=testfile1 bs=${bs_list[$i]} count=${cnt_list[$i]} oflag=direct,nonblock 2>> $logfile
  16. } &
  17. done
  18. wait
  19. echo -e "\nfinished time `date`" >> $logfile
  20. echo -e "\ntest ${j} finished" >> $logfile
  21. sleep 5
  22. done
  23. sleep 30
  24. done

三、 串行读


  1. #!/bin/sh
  2. # ddtest_read_serial.sh
  3. bs_list=(256k 1024k 10M 20M 50M 100M 1G)
  4. cnt_list=(40000 10000 1000 500 200 100 10)
  5. for i in {0..6}
  6. do
  7. for j in {0..2}
  8. do
  9. logfile=dd_${bs_list[$i]}_cnt${cnt_list[$i]}_${j}.txt
  10. echo -e "test ${j} started\n" > $logfile
  11. echo -e "started time `date`\n" >> $logfile
  12. dd if=testfile1 of=/dev/null bs=${bs_list[$i]} count=${cnt_list[$i]} iflag=direct,nonblock 2>> $logfile
  13. echo -e "\nfinished time `date`" >> $logfile
  14. echo -e "\ntest ${j} finished" >> $logfile
  15. sleep 5
  16. done
  17. sleep 30
  18. done

四、 4并发读


  1. #!/bin/sh
  2. bs_list=(256k 1024k 10M 20M 50M 100M 1G)
  3. cnt_list=(40000 10000 1000 500 200 100 10)
  4. for i in {0..6}
  5. do
  6. for j in {0..2}
  7. do
  8. logfile=dd_conc_${bs_list[$i]}_cnt${cnt_list[$i]}_${j}.txt
  9. echo -e "test ${j} started\n" > $logfile
  10. echo -e "started time `date`\n" >> $logfile
  11. for conc in {0..3}
  12. do
  13. {
  14. dd if=testfile1 of=/dev/null bs=${bs_list[$i]} count=${cnt_list[$i]} iflag=direct,nonblock 2>> $logfile
  15. } &
  16. done
  17. wait
  18. echo -e "\nfinished time `date`" >> $logfile
  19. echo -e "\ntest ${j} finished" >> $logfile
  20. sleep 5
  21. done
  22. sleep 30
  23. done

五、 输出解析

取执行时间

cat dd_* | grep -E 'MB/s|GB/s' | awk '{ print $6 }'

取吞吐量

cat dd_* | grep -E 'MB/s|GB/s' | awk '{ print $8 }'

[转帖]dd 自动压测与结果解析脚本的更多相关文章

  1. [转帖]dd命令详解

    dd命令详解 https://czmmiao.iteye.com/blog/1748748 之前一直对linux的命令很恐惧 现在发现 其实不是那么复杂 要仔细学习就可以了 比如 dd = disk ...

  2. [转帖] dd 命令图解

    dd命令-->dd是disk dump的缩写,指定大小的块拷贝一个文件,同时进行指定的转换,起到一个初始化磁盘的作用  https://blog.csdn.net/jerry_1126/arti ...

  3. 百度brpc 压测工具rpc_press解析

    1. 背景 昨天看到一段brpc中的压测代码rpc_press, 看着不错.整理一下. 发压工具的难点不是发送请求,而是要注意下面的2点: 保证能发出足够的qps,比如上万qps 控制发送合理的qps ...

  4. 实践作业2:黑盒测试实践——在被测系统上录制脚本 Day 5

    1.处理了学生信息管理系统运行的小细节 2.总结了katalon的使用流程如下 a.在Katalon Studio中创建一个自动化测试项目. b.创建一个测试案例,用来写入所有必要的测试步骤 c.编写 ...

  5. ab压测返回结果解析

    Server Software:        Apache/2.2.25 (服务器软件名称及版本信息)Server Hostname:        localhost (服务器主机名)Server ...

  6. SSM自测错题解析

    试题解析:spring 中bean的作用域有:singleton.session.prototype.request.global Session 试题解析:使用import导入子元素需要用prope ...

  7. [转帖]Marvell第二代ARM处理器ThunderX2解析

    Marvell第二代ARM处理器ThunderX2解析 https://www.cnbeta.com/articles/tech/853137.htm 长久以来,服务器数据中心市场一直被x86 CPU ...

  8. C语言深度剖析自测题8解析

    #include <stdio.h> int  main(void) {    int  a[5] = {1, 2, 3, 4, 5}; int* ptr1 = (int*)(&a ...

  9. Python Locust对指定网站“一键压测”

    [本文出自天外归云的博客园] 前篇 前篇:Python Locust性能测试框架实践 本篇 承上——归纳过程 在前篇的基础上,我们可以利用Locust性能测试框架编写python脚本对指定网站或者接口 ...

  10. 日新进用户200W+,解密《龙之谷》手游背后的压测故事

    2017年3月,腾讯正式于全平台上线了<龙之谷>手游,次日冲到了App Store畅销排行第二的位置,并维持到了现在.上线当日百度指数超过40万,微信游戏平台数据显示预约数780多万,而据 ...

随机推荐

  1. 提取 PE文件 / 目标程序 的各种信息

    前段时间项目需要实现对 Windows PE 文件版本信息的提取,如文件说明.文件版本.产品名称.版权.原始文件名等信息.获取这些信息在 Windows 下当然有一系列的 API 函数供调用,简单方便 ...

  2. 一文了解Vprix容器流媒体平台和传统云桌面的区别、优劣势

    在当今数字化时代,随着云计算和远程办公的兴起,云桌面项目成为了提升工作效率和灵活性的重要工具.云桌面项目通过将用户的桌面环境和应用程序虚拟化,为用户提供了随时随地访问个人工作环境的便利.本文将介绍Vp ...

  3. PyTorch项目源码学习(1)

    PyTorch PyTorch是一个开源的深度学习框架,项目地址 https://github.com/pytorch/pytorch 在学术工作中的使用频率较高.其主体由C++开发,PyTorch是 ...

  4. 【华为云技术分享】云容器引擎 CCE权限管理实践

    随着容器化的快速发展,大数据原有的分布式任务调度模式,正在被基于Kubernetes的技术架构所取代.CCE云容器引擎是华为云推出的支持Kubernetes社区原生应用和工具,应用级自动弹性伸缩,自动 ...

  5. 十分钟从入门到精通(下)——OBS权限配置

    上一篇我们介绍了OBS权限管理中统一身份认证和企业项目管理,本期我们继续介绍OBS权限管理中的高级桶策略和ACL应用.   您是否也遇到过类似的问题或者困扰? 1.隔壁的主账户给了子用户创建一个桶,但 ...

  6. WebKit三件套(3):WebKit之Port篇

    了解其有关Port方面的设计,从而了解究竟如何能移植WebKit到自己的应用中. WebKitPort方面的内容是可以很广的,例如可将不同的图形库.网络库与WebCore集成,提供不同的Port接口供 ...

  7. webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载

    webpack ensure相信大家都听过.有人称它为异步加载,也有人说做代码切割,那这个家伙到底是用来干嘛的?其实说白了,它就是把js模块给独立导出一个.js文件的,然后使用这个模块的时候,webp ...

  8. 再谈BOM和DOM(1):BOM与DOM概述

    JavaScript的实现包括以下3个部分: ECMAScript(核心):描述了JS的语法和基本对象. 浏览器对象模型(BOM):与浏览器交互的方法和接口 文档对象模型 (DOM):处理网页内容的方 ...

  9. Solon2 开发之IoC,三、注入或手动获取 Bean

    1.如何注入Bean? 先了解一下Bean生命周期的简化版: 运行构建函数 尝试字段注入(有时同步注入,没时订阅注入.不会有相互依赖而卡住的问题) @Init 函数(是在容器初始化完成后才执行) .. ...

  10. Intellij IDEA安装与配置教程(Windows版)

    Intellij IDEA(简称IDEA)是Java语言的集成开发环境,在业界公认为是一款优秀的Java开发工具.分为Community社区版(免费)和Untimate终极版(付费). IDEA是一款 ...