一、如何查看当前磁盘的IO使用情况

使用命令:iotop

Total DISK READ: 3.89 K/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
14060 be/2 root 3.89 K/s 0.00 B/s 0.00 % 0.09 % AliYunDun
14695 be/4 www 0.00 B/s 89.42 K/s 0.00 % 0.00 % nginx: worker process
14697 be/4 www 0.00 B/s 256.61 K/s 0.00 % 0.00 % nginx: worker process
14698 be/4 www 0.00 B/s 38.88 K/s 0.00 % 0.00 % nginx: worker process
14699 be/4 www 0.00 B/s 66.10 K/s 0.00 % 0.00 % nginx: worker process
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [stopper/0]
6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]
8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [stopper/1]
9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1]
10 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1]
11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/2]
12 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [stopper/2]
13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/2]
14 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/2]
15 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/3]
16 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [stopper/3]
17 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/3]
18 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/3]
19 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/4]
20 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [stopper/4]

使用命令sar

[root@test ~]# sar -b 1 10
Linux 2.6.32-573.22.1.el6.x86_64 (test) 01/08/2019 _x86_64_ (8 CPU) 06:10:37 PM tps rtps wtps bread/s bwrtn/s
06:10:38 PM 273.47 4.08 269.39 32.65 10195.92
06:10:39 PM 4.08 2.04 2.04 16.33 16.33
06:10:40 PM 4.12 2.06 2.06 16.49 16.49
06:10:41 PM 3.09 3.09 0.00 24.74 0.00
06:10:42 PM 12.00 4.00 8.00 32.00 560.00
06:10:43 PM 263.92 2.06 261.86 16.49 10169.07
06:10:44 PM 4.17 4.17 0.00 125.00 0.00
06:10:45 PM 3.09 3.09 0.00 49.48 0.00
06:10:46 PM 2.08 2.08 0.00 16.67 0.00
06:10:47 PM 3.09 2.06 1.03 16.49 404.12
Average: 57.45 2.88 54.57 34.53 2141.83

说明:

  • tps: 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。

  • rtps: 每秒向磁盘设备的读请求次数

  • wtps: 每秒向磁盘设备的写请求次数

  • bread: 每秒从磁盘读的bytes数量

  • bwrtn: 每秒向磁盘写的bytes数量

二、磁盘读写速率测试

1、获取blocksize

[root@test ~]# blockdev --getbsz /dev/vda1
4096

blocksize是4KB大小

[root@iZ23e3f2jdcZ ~]# time dd if=/dev/zero  of=test.dbf bs=4K  count=50000  oflag=direct
50000+0 records in
50000+0 records out
204800000 bytes (205 MB) copied, 35.9065 s, 5.7 MB/s real 0m35.908s
user 0m0.099s
sys 0m1.797s [root@iZ23e3f2jdcZ ~]# time dd if=/dev/zero of=test.dbf bs=4K count=50000
50000+0 records in
50000+0 records out
204800000 bytes (205 MB) copied, 1.09874 s, 186 MB/s real 0m1.103s
user 0m0.025s
sys 0m0.254s [root@iZ23e3f2jdcZ ~]# time dd if=/dev/vda1 of=/dev/null bs=4K count=50000
50000+0 records in
50000+0 records out
204800000 bytes (205 MB) copied, 1.49831 s, 137 MB/s real 0m1.500s
user 0m0.021s
sys 0m0.180s [root@test ~]# hdparm -Tt /dev/vda1
/dev/vda1:
Timing cached reads: 19468 MB in 1.99 seconds = 9766.52 MB/sec
Timing buffered disk reads: 384 MB in 3.00 seconds = 127.88 MB/sec

  

2、工具介绍

使用hdparm命令

这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been written by Mark Lord <mlord@pobox.com>, the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的

使用方法很简单

hdparm -Tt /dev/vda1

可以看到,2秒钟读取了19468MB的缓存,约合9766.52MB/sec,在3.11秒中读取了384MB磁盘(物理读),读取速度约合127.88 MB/sec

使用dd命令

这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估,另外由于这是一个免费软件,基本上×NIX系统上都有安装,对于Oracle裸设备的复制迁移,dd工具一般都是首选.

首先了解两个特殊设备

  • /dev/null 伪设备,回收站.写该文件不会产生IO

  • /dev/zero 伪设备,会产生空字符流,对它不会产生IO

测试方法:

a.测试磁盘的IO写速度

 time dd if=/dev/zero of=test.dbf bs=4k count=300000   # 如果要测试实际速度 还要在末尾加上 oflag=direct测到的才是真实的IO速度

b.测试磁盘的IO读速度

dd if=test.dbf bs=4k count=300000 of=/dev/null  #表示 每次写入/读取8k的数据,执行300000次

dd语法

功能说明:读取,转换并输出数据。

语法:dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version]

补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。

参数:

  • bs=<字节数> 将ibs( 输入)与obs(输出)设成指定的字节数。

  • cbs=<字节数> 转换时,每次只转换指定的字节数。

  • conv=<关键字> 指定文件转换的方式。

  • count=<区块数> 仅读取指定的区块数。

  • ibs=<字节数> 每次读取的字节数。

  • if=<文件> 从文件读取。

  • obs=<字节数> 每次输出的字节数。

  • of=<文件> 输出到文件。

  • seek=<区块数> 一开始输出时,跳过指定的区块数。

  • skip=<区块数> 一开始读取时,跳过指定的区块数。

  • --help 帮助。

  • --version 显示版本信息。

dd常用参数详解

  • if=xxx 从xxx读取,如if=/dev/zero,该设备无穷尽地提供0,(不产生读磁盘IO)

  • of=xxx 向xxx写出,可以写文件,可以写裸设备。如of=/dev/null,"黑洞",它等价于一个只写文件. 所有写入它的内容都会永远丢失. (不产生写磁盘IO)

  • bs=8k 每次读或写的大小,即一个块的大小。

  • count=xxx 读写块的总数量。

避免操作系统“写缓存”干扰测试成绩,使用sync、fsync、fdatasync

【Linux】磁盘读写 测试的更多相关文章

  1. linux 磁盘IO测试工具:FIO (同时简要介绍dd工具测试)

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证.磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类. 目前主流的第三方IO测试工具有fio.iomete ...

  2. Linux dd工具磁盘读写测试分析

    话说,Linux 自带的dd工具测试硬盘读写速度只能提供一个大概的测试结果,而且是连续IO 而不是随机IO ,理论上文件规模越大,测试结果越准确.理论上bs越大,所测得性能越高. 上句来自网上,是不是 ...

  3. linux磁盘读写性能优化

    在LINUX系统中,如果有大量读请求,默认的请求队列或许应付不过来,我们可以 动态调整请求队列数来提高效率,默认的请求队列数存放在/sys/block/xvda/queue/nr_requests 文 ...

  4. linux 磁盘读写性能测试

    1. 测试读取速度 haparm -Tt /dev/xxx 1.1 获取硬盘设备名称: fdisk -l Disk /dev/xvdf: 365.0 GB, 365041287168 bytes 25 ...

  5. [skill] mmap / fwrite / write linux磁盘读写的分层结构

    转自:http://www.cnblogs.com/zhaoyl/p/5901680.html 看完此文,题目不言自明.转自 http://blog.chinaunix.net/uid-2710571 ...

  6. linux使用FIO测试磁盘的iops 【转载】

     linux使用FIO测试磁盘的iops 2013-09-23 10:59:21 分类: LINUX FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括 ...

  7. Linux查看磁盘读写

    ---------- 查看磁盘读写---------iostat -k 1 SQL> ho iostatLinux 2.6.32-279.el6.x86_64 (server-92)  08/1 ...

  8. 鸟哥的LINUX私房菜基础篇第三版 阅读笔记 三 Linux磁盘与文件系统管理

    一.认识EXT2文件系统:     a.硬盘的组成:转动小马达+存储的磁盘+读写的机械臂     b.磁盘的一些概念              扇区为最小的物理储存单位,每个扇区为512B       ...

  9. linux磁盘管理系列-软RAID的实现

    1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. R ...

随机推荐

  1. themeleaf引入公共页面

    <div th:include="/top :: html"></div>//引用公共页面 <div th:replace="head&qu ...

  2. Kafka的接口回调 +自定义分区、拦截器

    一.接口回调+自定义分区 1.接口回调:在使用消费者的send方法时添加Callback回调 producer.send(new ProducerRecord<String, String> ...

  3. gitment Error:validation failed错误解决办法

    点击Initialize comments 突然跳转出一个错误Error:validation failed 经查阅之后发现 issue的标签label有长度限制!labels的最大长度限制是50个字 ...

  4. javascript基础的查缺补漏

    对象转基本类型 let a = { valueOf() { return 0; }, toString() { return '1'; }, [Symbol.toPrimitive]() { retu ...

  5. GIL锁、进程池与线程池

    1.什么是GIL? 官方解释: ''' In CPython, the global interpreter lock, or GIL, is a mutex that prevents multip ...

  6. 关于ugc的一点思考

    ugc会使互联网繁荣,但依赖大众用户创造的内容质量上会存在参差不齐,这是ugc本身存在的问题. 就拿技术论坛或社区来说,好的内容不少,但质量不好的内容也很多.社区在引导用户发言的同时,也应 对用户创造 ...

  7. 在Android中调用USB摄像头

    在网上找了很长时间,网上的资料基本都是说用外国人写的库,但实际上这个库的案例都是不能直接用的(因为权限问题),并不适合学习. 之后偶然发现有国人把这个库重新封装了,并且有源代码以及中文教程: http ...

  8. BZOJ.4820.[SDOI2017]硬币游戏(思路 高斯消元 哈希/AC自动机/KMP)

    BZOJ 洛谷 建出AC自动机,每个点向两个儿子连边,可以得到一张有向图.参照 [SDOI2012]走迷宫 可以得到一个\(Tarjan\)+高斯消元的\(O((nm)^3)\)的做法.(理论有\(6 ...

  9. BZOJ.5339.[TJOI2018]教科书般的亵渎(拉格朗日插值) & 拉格朗日插值学习笔记

    BZOJ 洛谷 题意的一点说明: \(k\)次方这个\(k\)是固定的,也就是最初需要多少张亵渎,每次不会改变: 因某个怪物死亡引发的亵渎不会计分. 不难发现当前所需的张数是空格数+1,即\(m+1\ ...

  10. ThreeJS笔记(一)

    ThreeJS笔记(一) ThreeJS的本质是WebGL,但是webGL使用起来不是很方便,threeJS则提供了比较上层的封装,开发起来更加轻便. 环境配置 首先从github下载源码 把Thre ...