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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
性能测试 PTS,5000VUM额度
全局流量管理 GTM,标准版 1个月
简介: 深聊性能测试,从入门到放弃之:如何对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

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
4月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
130 2
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
3月前
|
存储 缓存 算法
如何优化阻塞IO的性能?
【10月更文挑战第6天】如何优化阻塞IO的性能?
58 5
|
4月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
123 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
2月前
|
存储 弹性计算 固态存储
阿里云服务器ESSD Entry系统盘测评IOPS、IO读写和时延性能参数
ESSD Entry云盘是阿里云推出的新一代云盘,具备高IOPS、低延迟和企业级数据保护能力。适用于开发与测试场景,支持按量付费和包年包月计费模式。99元和199元的ECS经济型e实例和通用算力型u1实例均采用ESSD Entry系统盘,性价比高。详细性能参数和价格请参考阿里云官方页面。
86 0
|
5月前
|
消息中间件 Kafka 测试技术
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
|
5月前
|
存储 Java 数据库连接
BIO阻塞IO流与数据存储大揭秘:性能与资源消耗,一文让你彻底解锁!
【8月更文挑战第25天】本文探讨了Java中BIO阻塞IO流与数据存储的概念及其实现。BIO作为一种传统IO模型,在处理每个客户端请求时需创建新线程并等待响应,这在并发量大时会导致性能下降和高资源消耗。示例代码展示了如何利用`ServerSocket`实现基于BIO的简单服务器。此外,文章还介绍了数据存储的基本方法,例如通过`BufferedWriter`向文件写入数据。两者对比显示,BIO适合连接数稳定的场景,而数据存储则适用于需要持久化保存信息的情况。通过这些分析和实例,希望能帮助读者更好地掌握这两种技术的应用场景及其优缺点。
56 0
|
5月前
|
监控 Java 测试技术
实战派必看!Python性能测试中,JMeter与Locust如何助力性能调优
【8月更文挑战第6天】性能优化是软件开发的关键。本文介绍JMeter与Locust两款流行性能测试工具,演示如何用于Python应用的性能调优。JMeter可模拟大量用户并发访问,支持多种协议;Locust用Python编写,易于定制用户行为并模拟高并发。根据场景选择合适工具,确保应用在高负载下的稳定运行。
148 4
|
5月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【8月更文挑战第6天】在数字化时代,确保软件在高并发下的稳定性至关重要。Python 提供了强大的性能测试工具,如 JMeter 和 Locust。JMeter 可配置复杂请求场景,而 Locust 则以 Python 脚本灵活模拟真实用户行为。两者结合,可全面评估系统性能。例如,对电商网站进行测试时,JMeter 模拟登录请求,Locust 定义浏览和购物行为,共同揭示系统瓶颈并指导优化,从而保证稳定高效的用户体验。
110 1
|
5月前
|
C# 开发者 设计模式
WPF开发者必读:命令模式应用秘籍,轻松简化UI与业务逻辑交互,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,命令模式是简化UI与业务逻辑交互的关键技术,通过将请求封装为对象,实现UI操作与业务逻辑分离,便于代码维护与扩展。本文介绍命令模式的概念及实现方法,包括使用`ICommand`接口、`RelayCommand`类及自定义命令等方式,并提供示例代码展示如何在项目中应用命令模式。
62 0