性能测试之磁盘内存读写性能分析
1002024-11-18 08:40:29
磁盘
- 扇区sector: 是磁盘中最小的物理存储单元,单位 512字节(byte)
- 块Block:在linux文件系统中多个连续的扇区,被称为block,块的概念,也是系统中认为最小的存储单元
linux:类似Ext4文件系统,就是磁盘分块
windows: 类似NTFS文件系统,也是块,只是被叫做簇
- 页page:操作系统与内存数据交换的最小单位
- 缓冲区: buffer 内存与磁盘速度不匹配,在数据与磁盘进行10时,数据先进入缓冲区
- 页缓存: linux内存中对磁盘部分数据的副本,加快程序读取磁盘的速度和进程间数据共享
在linux系统中,一切都是文件。它把一切资源都看作是文件, 像是硬件设备等,我们对硬件的访问,可以通过读写文件的方式来进行。
磁盘文件系统 :ext4,xfs,nfs
内存文件系统:/proc,/sys 基于内存的文件系统
网络文件系统:用于访问其他设备数据的文件系统,nfs,smb
读写文件的操作流程 :
fdisk -l 查看磁盘信息
磁盘阵列RAID (Redundant Array of Independent Disks)
-- 独立磁盘构成具有冗余能力的阵列
由多块独立的磁盘组合成一个容量巨大的磁盘组,利用磁盘提供数据所产生的加成效果提升整个磁盘系统的效能。利用这个技术,把数据切割成多段,分别存在不同磁盘上
- RAID0:数据分片存在2块磁盘,读写速度提升2倍,主要用于SWAPITMP,但是数据不几余,数据恢复难 ---提速
- RAID1:相同数据几余存入2块磁盘,写速度不变,读速度提升2倍,数据几余1份,主要用于数据备份,但磁盘利用率低 ---备份
- RAID5:数据分片和校验码混合存储3份,读写速度提升2倍,主要在要求高速时用,可以用于数据还原
- RAID10:2块磁盘1组先做RAID1,多组RAID1,再做RAIDO。读写速度N倍 兼顾RAID 0 和1 的优点
磁盘监听命令
iostat 需要通过 yum install systat -y 安装
iostat -dx 2
- rrqm/s: 每秒进行merge的读操作数目,即delta(rmerge)/s
- wrqm/s:每秒进行merge的写操作数目 即 delta(wmerge)/s
- r/s: 每秒完成的读I/0设备次数 即delta(rio)/s
- w/s:每秒完成的写I/0设备次数
- rsec/s: 每秒读扇区数
- wsec/s: 每秒写扇区数
- rkB/s: 每秒读k字节数
- wkB/s:每秒写k字节数
查看具体磁盘使用空间使用 df-h
df -h 跟上详细系统名
du -sh 查看当前文件夹的磁盘大小
磁盘的性能指标
- 使用率: 指磁盘处理I/O的时间百分比
- 饱和度: 磁盘处理I/0的繁忙程度
- IOPS: inputloutput per second 每秒的I/0请求
- 吞吐量: 每秒的I/O请求大小
- 响应时间: 指I/O请求从发出到手到响应的时间间隔
磁盘写性能分析
先清除缓存 使用命令 echo 3 > /proc/sys/vm/drop_caches
- echo 1 > /proc/sys/vm/drop_caches 释放页缓存
- echo 2 > /proc/sys/vm/drop_caches 释放目录项
- echo 3 > /proc/sys/vm/drop_caches 释放目录项加页缓存和 节点
执行完该命令后 buffer会清空为0,cache会减少空间,free 会增大
再模拟写操作: dd if=/dev/sda of=$PWD/outfile bs=25MB count=99
- if :输入文件(input file), of 输出文件 (out file)
- /dev/sda 读取设备的第一个磁盘会有IO产生
- of=$PWD/outfile 输出到当前目录的下的outfile文件
- bs=25mb count=99块文件25mb ,执行99次
vmstat 1 指标得出:cache增大,bo(写)变大,in (每秒中断)也有明显数据变化 ,free数据开始变小 ,buff数据不变
iostat -dx 1 指标得出:wkB/s (每秒写k字节数)有大量数据 await也有数据 w/s (每秒完成的写I/0设备次数)数据变大
写文件的速度大概是72MB/s
磁盘读性能分析
先清除缓存 使用命令 echo 3 > /proc/sys/vm/drop_caches
再模拟读操作:time dd if=/dev/sda of=/dev/null bs=25MB count=99
- if :输入文件(input file), of 输出文件 (out file)
- /dev/sda 表示一个伪设备只产生字符流不会产生IO
- of= dev/null 伪设备,回收站可以无限放数据
- bs=25mb count=99块文件25mb ,执行99次
/dev/null设备
是个黑洞设备,它丢弃一切写入其中数据,空设备通常被用于丢弃不需要的输出流。记得当年用windows时候,有个类似的设备:NUL ,跟这个功能一样。任何写入该设备数据都会被丢弃掉。从这个里面读取数据返回是空。将一些不用内容经常发送给这个设备,丢弃不需要的数据。
vmstat 1 指标得出:cache部分减少,bi(读)变大,in (每秒中断)也有明显数据变化 ,free数据开始变小 ,buff大幅增大
iostat -dx 1 指标得出:rKB/s/s (每秒读k字节数)有大量数据 await也有数据 w/s (每秒完成的写I/0设备次数)数据有但是比较小
读取文件的速度大概是228MB/s
内存读写性能分析
/dev/zero设备 使用内存生成字符流
在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。
先清空缓存 echo 3 >/proc/sys/vm/drop_caches
再模拟操作:time dd if=/dev/zero of=/dev/null bs=25MB count=999 (产生数据丢到回收站 所以没有磁盘的操作只会有内存的操作)
磁盘的读写速度,几百MB/s 内存 几GB/s
总结:写操作时 ,cache增大, bo(写)有明显数据,
读数据时,buff增大,bi(读)有明显数据
- 本文分类:硬盘知识
- 本文标签:无
- 浏览次数:100 次浏览
- 发布日期:2024-11-18 08:40:29
- 本文链接:https://m.yingpan.xyz/zhishi/5eZkGoZkwr.html
- 上一篇 > 固态硬盘寿命低?笑话,但不建议用做长期存储介质
- 下一篇 > 主流硬盘接口