首页 硬盘知识

性能测试之磁盘内存读写性能分析

1002024-11-18 08:40:29

磁盘

linux:类似Ext4文件系统,就是磁盘分块

windows: 类似NTFS文件系统,也是块,只是被叫做簇


在linux系统中,一切都是文件。它把一切资源都看作是文件, 像是硬件设备等,我们对硬件的访问,可以通过读写文件的方式来进行。

磁盘文件系统 :ext4,xfs,nfs

内存文件系统:/proc,/sys 基于内存的文件系统

网络文件系统:用于访问其他设备数据的文件系统,nfs,smb

读写文件的操作流程 :

fdisk -l 查看磁盘信息



磁盘阵列RAID (Redundant Array of Independent Disks)

-- 独立磁盘构成具有冗余能力的阵列

由多块独立的磁盘组合成一个容量巨大的磁盘组,利用磁盘提供数据所产生的加成效果提升整个磁盘系统的效能。利用这个技术,把数据切割成多段,分别存在不同磁盘上


磁盘监听命令

iostat 需要通过 yum install systat -y 安装

iostat -dx 2


查看具体磁盘使用空间使用 df-h

df -h 跟上详细系统名

du -sh 查看当前文件夹的磁盘大小

磁盘的性能指标

磁盘写性能分析

先清除缓存 使用命令 echo 3 > /proc/sys/vm/drop_caches

执行完该命令后 buffer会清空为0,cache会减少空间,free 会增大

清除后的磁盘信息

再模拟写操作: dd if=/dev/sda of=$PWD/outfile bs=25MB count=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

/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(读)有明显数据