八、性能测试之磁盘分析

news2024/10/2 22:16:57

性能测试之磁盘分析

      • 一、磁盘简介
        • 1、存储数据之前,要先进行格式化
        • 2、读写数据时,数据与磁盘间有个磁盘缓存(内存的一部分)
        • 3、磁盘:持久化的存储设备
        • 4、磁盘读写操作流
        • 5、磁盘组成
        • 6、磁盘分区
        • 7、磁盘阵列RAID(独立磁盘构成具有冗余能力的阵列)
        • 8、虚拟文件系统
        • 9、文件IO
        • 10、查看数据存储常用命令
          • 1、`iostat -dx 2 10` 每隔2s收集一次数据,共收集10次
          • 2、`df -h` 查看磁盘大小
          • 3、`du -sh` 查看当前目录所在位置的文件大小
          • 4、`vmstat 1` 监控磁盘io(bi,bo)
        • 11、磁盘性能指标
      • 二、磁盘实战
        • 1、清理缓存:`echo 3 > /proc/sys/vm/drop_caches`
        • 2、测试磁盘写能力:`dd if=/dev/zero of=$PWD/outfile bs=20MB count=100`
        • 3、测试磁盘读能力:`dd if=/dev/sda of=/dev/null bs=20MB count=100`
        • 4、测试内存能力:`dd if=/dev/zero of=/dev/null bs=10MB count=1000`
        • 结论:

一、磁盘简介

在这里插入图片描述

  • 磁盘,是系统中容量最大的存储设备,相对cpu核内存来说速度比较慢

  • 1、存储数据之前,要先进行格式化

    • linux:ext4
    • windows:FAT32、NTFS
    • 磁盘就像一个笔记本,格式化,就像对每一页纸画书写格子,没有格子,写的字可能就不整齐
  • 2、读写数据时,数据与磁盘间有个磁盘缓存(内存的一部分)

    • 就像写字前,先打个草稿,然后再正式写一份
  • 3、磁盘:持久化的存储设备

    • 机械磁盘:HDD,由盘片、磁头组成,数据存在盘片的唤醒磁道上,读写时,磁头移动,定位到数据的磁道,进行数据读写
    • 固态磁盘:SSD,由固态电子元器件组成,不需要磁头寻址,所以,不管理连续IO,还是随机IO,都比机械盘快
  • 4、磁盘读写操作流

在这里插入图片描述 我们做性能测试的主要关注第二层(操作系统层)

  • linux中,一切皆文件
    • 磁盘文件系统:ext4、xfs、nfs
    • 内存文件系统:基于内存的文件系统、/proc /sys
    • 网络文件系统,用来访问其他计算机数据的文件系统,nfs、smb
  • 5、磁盘组成

    • 扇区sector:磁盘组成的最小单元(512b),磁盘磁道中的一个弧段
    • 块block:操作系统与磁盘数据交换的最小单位,块=2的n次方 * 扇区 (可以读取更多的数据,命中率更高,减少再次读磁盘的次数,提升性能)
      • linux:类似Ext4文件系统,就是磁盘分块
      • windows:类似NTFS文件系统,也是块,只是被叫做“簇”
    • 页page:操作系统与内存数据交换的最小单位(多个块组成一个页,一页的大小一般是4k)
    • 缓冲区:buffer内存与磁盘速度不匹配,在数据与磁盘进行IO时,数据先进入缓冲区
    • 页缓存:linux内存中对磁盘部分数据的副本,加快程序读取磁盘的速度和进程间数据共享
  • 6、磁盘分区

    • 磁盘分为基本分区(primary partion)和扩展分区(extension partion)
      • 基本分区:不能再分区
      • 扩展分区:必须进行二次分区才能使用,再次分区就是逻辑分区
    • linux中IDE设备分区为hd开头
      • hd=hard disk 表示硬盘是IDE(或ATA)并行接口
      • hd表示是固态硬盘,sda:第一个(hda1:第一个分区,hda2:第二个分区…),hdb:第二个,hdc:第三个…
    • linux中SCSI设备分区符为sd
      • sd=serial ATA Disk 表示硬盘是scsi,SATA串行接口,u判也是scsi,所以u盘也是sda
      • sd是机械硬盘,sda:第一个(sda1:第一个分区,sda2:第二个分区…),sdb:第二个,sdc:第三个…
      • vmware中把磁盘做成scsi设备,所以硬盘名称是sda
    • fdisk -l 查看系统分区详细信息
      在这里插入图片描述
    • 里面的命令不建议乱用,可能会造成分区,然后磁盘被格式化问题
      在这里插入图片描述
  • 7、磁盘阵列RAID(独立磁盘构成具有冗余能力的阵列)

    • 可以提升磁盘的性能。一般用在数据库或者需要大量存储的企业(比如音频视频这种)。一般中小微企业一般做不到(硬件没有这么多,技术也实现不了),基本操作就是把单个硬盘加大,或者是多加几个盘。
    • 由多块独立的磁盘组合成一个容量巨大的磁盘组,利用磁盘提供数据所产生的加成效果提升整个磁盘系统的效能。利用这个技术,把数据切割成多段,分别存在不同磁盘上(面试时候一般问0和5
    • RAID0:数据分片存在2块磁盘,读写速度提升2倍,主要用于SWAP/TMP,但是数据不冗余,数据恢复难(比如插入30个字段,会把30个字段进行分片,分成2片存到2块磁盘,速度会快一些。但是数据存入出错了就很难恢复)-> 2份数据分为2半
    • RAID1:相同数据冗余存入2块磁盘,写速度不变,读速度提升2倍,数据冗余1分,主要用于数据备份,但磁盘利用率低 -> 2份数据存入2块磁盘
    • RAID5:数据分片和校验码混合存储3份,读写速度提升2倍,主要在要求高速时用,可以用于数据还原。数据没有冗余,但是有校验,数据恢复时比较容易。(成本比较高)
    • RAID10:2块磁盘1组先做RAID1,多组RAID1,在做RAID0。读写速度N倍 n为组数
  • 8、虚拟文件系统

    • 虚拟文件系统(Virtual File System,简称VFS)是linux内核的子系统之一,它为用户程序提供文件和文件系统操作的统一接口,屏蔽不同文件系统的差异和操作细节。借助VFS可以直接使用open()、read()、write()这样的系统调用操作文件,而无需考虑具体的文件系统和实际的存储介质。
    • 通过VFS系统,linux提供了通用的系统调用,可以跨越不同文件系统和介质之间的执行,极大简化了用户访问不同文件系统的过程。(跨平台)另一方面,新的文件系统,新类型的存储介质。可以无需编译的情况下,动态加载到linux中
  • 9、文件IO

    • 文件操作:先open、再read()\write()、最后close关闭文件
    • 读写的不同,IO不同:
      • 是否利用标准库缓存:缓存io和非缓存io
      • 是否利用页缓存:直接io和非直接io
        • 直接io:跳过操作系统的页缓存,直接与文件系统交互来访问文件
        • 非直接io:文件读写时,先给页缓存,再由内核调用,写入磁盘
      • 是否阻塞自身运行:阻塞io和非阻塞io
        • 阻塞io:如果没有获得响应,就阻塞当前进程
        • 非阻塞io:不阻塞当前线程
      • 是否等待响应结果:同步io和异步io
        • 同步io:要一直等待整个io完成,才能获得io响应
        • 异步io:不等待io完成,可以执行另外的
  • 10、查看数据存储常用命令

在这里插入图片描述

  • 1、iostat -dx 2 10 每隔2s收集一次数据,共收集10次
    • rrqm/s:每秒进行merge的读操作数目,即delta(rmerge)/s
    • wrqm/s:每秒进行merge的写操作数目,即delta(wmerge)/s
    • r/s:每秒完成的读IO设备次数 即delta(rio)/s
    • w/s:每秒完成的写Io设备次数
    • resc/s:每秒写扇区数
    • rkB/s:每秒读k字节数
    • wkB/s:每秒写k字节数
    • avgrq-sz:平均每次设备IO操作的数据大小(扇区)delta(rsect+wsect)/delta(rio+wio)
    • avgqu-sz:平均IO队列长度,delta(aveq)/s/1000
    • await:平均每次设备IO操作的等待时间(毫秒)delta(ruse+wuse)/delta(rio+wio)
    • svctm:平均每次设备IO操作的服务时间(毫秒)delta(use)/delta(rio+wio)
    • r_await:读请求等待时间
    • w_await:写请求等待时间
    • %util:一秒钟有百分之多少的时间用于IO操作,或一秒钟有多少IO队列是非空
  • 2、df -h 查看磁盘大小
    • dh -h /dev/shm
      在这里插入图片描述
  • 3、du -sh 查看当前目录所在位置的文件大小

在这里插入图片描述
- du -h 展示当前目录所在位置每个文件的大小
在这里插入图片描述

  • 4、vmstat 1 监控磁盘io(bi,bo)

在这里插入图片描述

  • 11、磁盘性能指标

    • 使用率:指磁盘处理IO的时间百分比
    • 饱和度:磁盘处理IO的繁忙程度
    • IOPS:input/output per second 每秒的IO请求
    • 吞吐量:每秒的IO请求大小
    • 响应时间:指IO请求从发出到收到响应的时间间隔

二、磁盘实战

  • 1、清理缓存:echo 3 > /proc/sys/vm/drop_caches

    • 做下面3个测试之前都需要清空缓存

    • 执行上面那句以后,如图所示,可以看到缓存被清了,free变大了在这里插入图片描述

    • echo 1 > /proc/sys/vm/drop_caches 释放页缓存

    • echo 2 > /proc/sys/vm/drop_caches 释放目录项

    • echo 3 > /proc/sys/vm/drop_caches 释放页缓存,目录项、节点

    • 执行完后,buff会为0,cache会减少,free增大

  • 2、测试磁盘写能力:dd if=/dev/zero of=$PWD/outfile bs=20MB count=100

    • if 输入文件(input file),of输出文件(output file)
    • /dev/zero 一个伪设备,只产生字符流,不会有IO
    • of=$PWD/outfile 输出到当前目录下的outfile文件中
    • bs=20MB count=100 块文件20MB,执行100次
  • 2.1、time dd if=/dev/zero of=$PWD/outfile bs=20MB count=100
    • 带有时间统计
      在这里插入图片描述
      • 监控
        • 使用vmstat 1 :buff 有明显的数据,cache有数据变化,但是不明显, bi有明显的数据
        • 使用iostat -dx 1 rKB/s有明显的数据,await有,但是不是很大
  • 3、测试磁盘读能力:dd if=/dev/sda of=/dev/null bs=20MB count=100

在这里插入图片描述

  • if 输入文件(input file),of输出文件(output file)
    • /dev/sda 磁盘第一个物理分区,读取这个磁盘文件,会有IO
    • /dev/null 一个伪设置,回收站,是个无底洞,可以无限放数据
    • bs=20MB count=100 块文件20MB,执行100次
  • 3.1、time dd if=/dev/sda of=/dev/null bs=20MB count=100 带有时间统计
    • 监控
      • 3、vmstat 1 buff 有明显的数据,cache有数据变化,但是不明显, bi有明显的数据
      • 4、iostat -dx 1 rKB/s有明显的数据,await有,但是不是很大
  • 4、测试内存能力:dd if=/dev/zero of=/dev/null bs=10MB count=1000

在这里插入图片描述

  • 结论:

  • 磁盘的读写速度,几百MB/s 内存 几GB/s 内存速度比磁盘快很多

  • 操作时,cache增大, bo有明显数据,

  • 数据时,buff增大, bi有明显数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/983125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录Echarts双Y轴左右刻度不一致问题

根据项目需要,echarts实现双Y轴图表。因为两边数据不同,所以会出现左右Y轴刻度不一致。 增长率暂时是0,在X轴上,懒得改了。 修改之前: 修改之后: 根据数据找出最大值,分为6份向上取整,得到的每份就是间隔。 // dataAr…

直播预告 | CAR-T疗法红海赛道如何胜出?CAR-T工艺开发及商业化新思考

直播背景 随着整个细胞治疗行业的快速发展,CGT产业链上下游不断完善,从上游原材料及设备供应商到CXO再到创新药企,各个环节的联系更加紧密,竞争与合作关系愈加凸显。细胞药物研发过程中,对生物试剂、耗材、仪器设备有…

基于springboot的图片文字识别,支持中英文识别

概述 基于springboot的图片文字识别,支持中英文识别. 页面上传图片即可转换为中文或者英文. 详细 1.需求(要做什么) 识别图片文字, 实现页面上传图片即可转换为中文或者英文. 2.理论概述 OCR,即Optical Character Recognition&#xff…

机器学习-k-近邻算法

k-近邻算法 一、k-近邻算法概述1.1 使用python导入数据1.2 从文本文件中解析数据 二、使用k-近邻算法改进约会网站的配对效果2.1 准备数据2.2 数据预处理2.3 分析数据2.4 测试算法2.5使用算法 三、手写体识别系统 一、k-近邻算法概述 k-近邻算法是一种常用的监督学习算法&…

百度智能云千帆大模型平台2.0来了!从大模型到生产力落地的怪兽级平台!!

目录 前言 最佳算力效能为企业降低门槛 最多大模型,最多数据集为企业保驾护航 企业级安全对于企业来说是硬性要求 前言 普通人或许感知不明显,但是对于企业而言,身处AI时代,是否选择投资大模型,是否拥抱人工智能…

既然有 HTTP 协议,为什么还要有 RPC

HTTP和RPC 什么是HTTP HTTP协议(Hyper Text Transfer Protocol),又叫做超文本传输协议。平时上网在浏览器上敲个网址就能访问网页,这里用到的就是HTTP协议。 什么是RPC RPC(Remote Procedure Call)&…

详解Vision Transformer中的Encoder

一.Transformer架构 左半边是Encoder,右半边是Decoder。 二.Vision Transformer Vision Transformer取了Transformer的左半边。包含 Input EmbeddingPositional Encoding多头注意力机制 Add & Norm(前馈网络)Feed Forward Add & Norm 2.1 Input Embe…

Python 完美解决 Import “模块” could not be resolved ...

首先扩展安装Python插件 Ctrl Shift P,在打开的输入框中输入 Python: Select Interpreter 搜索,选择 Python 解析器。 选好解析器后,就可以直接在 VS Code 里运行(快捷键 Ctrl F5)或调试(快捷键 F5&…

打造高效等级查询系统

在现代教育体系中,考试等级查询系统是学生、家长和校园必不可少的工具。易查分是一款功能强大、易于使用的在线成绩查询平台,可以帮助学生和家长方便查询学生的考试成绩和等级,了解学习情况,从而更好的制定学习计划和提供必要的支…

leetcode(力扣):203移除链表元素 leetcode(力扣):206反转链表 leetcode(力扣):876.链表的中间结点多种解法

目录 203.移除链表元素 解法一:将目标元素前一个元素存放地址改为下一元素地址 解法二:遍历原链表,把不是val的节点拿出来进行尾插到新链表​编辑 解法三:有哨兵位解法->头节点不存储有效数据​编辑 206.反转链表 方法一…

一次说清楚BCD编码

背景 在银行报文中,有很多用到BCD编码的地方,BCD编码和常见的二进制编码或者ASCII编码又有区别,所以很容易搞错,弄错概念,下面笔者就一次把BCD编码讲清楚。 一,概念 1,BCD编码,…

vue开发调试

1、调试方式 1.1 为什么调试 当遇到应用逻辑出现错误,但又无法准确定位的时候,同后台项目开发一样,可以在JS实现的应用逻辑中设置断点,并进行单步、进入方法内、跳出方法等调试,从而准确定位问题根源。 1.2 调试方法…

NC 添加IRule 后置前置规则

1、在保存后触发后置规则,找到保存的规则,在里面进行添加后置规则。 编写自己的规则,通过 CompareAroundProcesser 《AggCLMasterVo》 processor 的processor.addAfterRule(rule); 方法进行后置规则添加 Cl_SAVE_IRule : 实现 IR…

【API 管理】什么是 API 管理,为什么它很重要?

当今复杂的数字生态系统由许多相互关联的部分组成。API 作为看门人和连接器在其中发挥着关键作用——提供了许多最终用户甚至没有注意到的自动化机会和效率。 企业密切关注 API。它们对于应用程序、数据和各种客户交互的功能至关重要。 这使得 API 管理成为几乎每个部门的组织…

[计算机入门] 搜索文件

3.7 搜索文件 随着计算机的使用,里面存放的资料会越来越多,有些文件我们可能不记得存放在哪里了,这个时候就可以通过计算机自带的搜索功能进行搜索。 1、点击任务栏中的放大镜图标: 2、在弹出的窗口下方输入要查询的文件名&…

华为云云服务器评测|详解 Nacos 安装部署

环境配置 服务器云耀云服务器L操作系统CentOS 7.9 64bit | 公共镜像JDK64 bit JDK 1.8MavenMaven 3.2.xnacos-server2.2.3 下载地址 官方githubRelease 2.2.3 (May 25th, 2023) alibaba/nacos GitHub百度网盘链接:https://pan.baidu.com/s/1K8UE6iJL2ZnosUY83b…

案例聚焦:F5怎么样提升游戏玩家体验?

对手机游戏市场有过了解的小伙伴,定然对Deltatech Gaming Limited这个公司不会陌生。作为印度在线游戏和娱乐行业的领跑者,两个最受欢迎的多人游戏应用分别为多人游戏的 “Addagames” 和扑克类游戏 “Adda52” ,它们会定期举办在线联赛。而这…

【Apollo】Apollo的入门介绍

阿波罗是百度发布的名为“Apollo(阿波罗)”的向汽车行业及自动驾驶领域的合作伙伴提供的软件平台。 帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 百度开放此项计划旨在建立一个以合作为中…

c语言 3.0

💂 个人主页: 程序员爱摸鱼🤟 版权: 本文由【程序员爱摸鱼】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注点赞收藏(一键三连)哦💅 想寻找共同成长的小伙伴,可以互粉哦 💬文章目录…

某堡垒机SQL注入漏洞

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、概述 中远麒麟堡垒机能够提供细粒度的访问控制,最大限度保护用户资…