深聊性能测试,从入门到放弃之:如何对IO进行性能调优(二)

简介: 深聊性能测试,从入门到放弃之:如何对IO进行性能调优(二)

4、IO调整


4.1 磁盘速度改进

改进方式,主要分两种:

①磁盘快取监控(disk cache controller)

②磁盘列阵技术


4.1.1 磁盘快取监控(disk cache controller)

定义


将从磁盘读取的数据存在快取内存(cache memory)中,以减少磁盘存储的次数。

数据的读取都在快取内存中进行,大幅增加存取的速度。

如果要读取的数据不在快取内存中,或要写数据到磁盘时,才做磁盘的存取动作。


注意点

这种方式在单工环境(single-tasking environment),如DOS之下,对大量数据的存储有很好的性能,

但是在多工环境(multi - tasking environment)或数据库(database)的存取,就不能显示其性能。

并且,这种方式,没有任何安全保障。


多工环境:要不停的做数据交换的动作

数据库:因为每一次记录都很小


4.1.2 磁盘列阵技术

定义


磁盘列阵是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段(striping)的方式存储在不同的磁盘中,存取数据时,列阵中的相关磁盘一起动作,大幅降低数据的存取时间,同时有更佳的空间利用率。

磁盘阵列所利用的不同的技术,称为RAID Level,不同的Level针对不同的系统及应用,以解决数据安全的问题。


RAID Level 等级分类


1. RAID 0


①定义

将数据条带化(striping),将连续的数据分散到多个磁盘上进行存取,系统发出的IO命令(不管读/写)就可以在磁盘上被并行执行。

由于每个磁盘单独执行自己的那部分请求,故,这大大增强整个存储的系统的性能。


②图解

image.png


优点:

速度快,容量大


缺点:

无备份,安全差


③举例

一个RAID0列阵有n(≥2)个磁盘,每个磁盘的随机读写的IO能力达到100,

那么,整个磁盘阵列的IO能力就是 :100 * n。

如果传输能力允许,RAID0的吞吐率也是单个磁盘的 n倍。


2. RAID 1


①定义

在容量上, 相当于把两个磁盘合起来一起使用。

互为镜像的两个磁盘里面保存的数据时完全一样的,

因此,在并行读取的速度上将是n个磁盘速度之和,

但是,在写入的速度,就慢的多,因为要同时写入两个磁盘,故,速度就是 n/2。


②图解


image.png

优点:

有备份,安全高


缺点:

写入慢


3. RAID 3


①图解

image.png


优点:

速度快,安全高,奇偶校验,一盘故障数据可重建


适用于:视频网站


缺点:

二盘同时故障,数据全部丢失

小数据读写不适用,随机读慢


4. RAID 3 + Spare


①图解

image.png


②解析


Spare:(磁盘数 - 2)*单盘容量


热备盘:备份故障盘上的内容


5. RAID 5


①定义


RAID5支持并行IO,而磁盘上的数据呈现条带状的分布在所有的磁盘上,

因此读IO的速度相当于所有磁盘速度之和;


前提条件:磁盘没有损坏


写入速度,是所有磁盘速度总和的 1/4;

所以RAID5是不适合用在大批量写入数据的系统上。


以下几种情况,建议采用RAID5:


要求较高的空间利用率;

安全性要求不高;

大文件存储系统.


②图解

image.png


③解析


是RAID3的加强版


Spare:(磁盘数 - 1)*单盘容量


热备盘:备份故障盘上的内容


6. RAID 6


①定义


RAID6与RAID5 很类似,差别在于RAID6比RAID5多了一个用于校验的磁盘。

读取IO速度,RAID6 和RAID5 是完全一样。

写入速度,区别RAID6将一个命令分成三次读、三次写,即6次IO命令来完成。


RAID6实际写入磁盘的速度是全部磁盘的1/6


②图解


image.png

③解析


Spare:(磁盘数 - 2)*单盘容量


7. RAID 10


①定义


先镜像后条带,称为RAID10;

先条带后镜像,称为RAID01。


不管是 RAID10还是RAID01,都是组合大于2块磁盘时候的RAID1。


从性能上看, RAID10和RAID01都是一样的,都是RAID1。

区别:


RAID10在重建故障磁盘的时候,性能比RAID01要快,安全性要高,不计成本


小数据量频繁写入的系统,推荐采用RAID10。


②图解


image.png

③解析


Spare:(磁盘数 *单盘容量)/2

目录
相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
527 4
|
10月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
469 13
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
306 11
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
316 10
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
1098 13
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
691 1
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
9月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
337 1