Storage Performance – IO characteristics

70 篇文章 8 订阅 ¥9.90 ¥99.00
本文深入探讨了影响存储性能的IO特性,包括IO大小、访问模式、线程数和读写比例。了解这些特性对于分析和优化性能至关重要。IO大小对吞吐量有直接影响,而IO访问模式分为随机和顺序读写。线程数决定了同一时间的不同活动数量,读写比例中,写操作通常比读操作成本更高。文章还讨论了不同RAID类型的性能特点,如RAID 1/0适合小规模随机写密集型工作负载,RAID 5适用于30%以下随机写的工作负载,而RAID 6提供了更高的保护但有更高的RAID惩罚。
摘要由CSDN通过智能技术生成

What is IO

When it comes to performance issues the term you hear really often is IO. IO is a shortcut for input/output and it is basically communication between storage array and the host. Inputs are the data received by the array, and outputs are the data sent from it. To analyze and tune performance, you must understand the workload that an application and/or host is generating. Application workloads have IO characteristics. Those characteristics may be described in terms of:

  • IO size
  • IO access pattern
  • thread count
  • read/write ratio

In this post I would like to shortly go through those characteristics, because many people understands IO only as a “number of operations”,  without the awareness of what this number actually means and how to understand it. Very often when people are talking about IO, what they  might mean is IOPS – which is basically number of IOs per second. But to talk about IOPS and understand the number – you first have to understand and consider IO characteristics.

 IO size

IO request size has an affect on performance throughput – in general, the larger the IO size, the higher the storage bandwidth. What is very often overlooked is that in most cases tools are showing the average IO size. Bare in mind that most production workloads have a mix of IO sizes.

IO access pattern

In terms of access patterns we very often use terms:

  • random read/write – there is no sequential activity at all (near zero), the read and writes are purely random, almost impossible to boost performance with cache.
  • sequential read/write – the exact opposite – purely sequential access, with no randomness at all. In such environments using storaga cache can really boost the performance.

In the real word you will almost never find 100% random or 100% sequential data access.  Even in sequential environment there might be number of different sequential activities at the same time, which actually build randomness when switching between them.

IO access pattern may relate to IO size, with larger IO size (like 64kB etc) you most often deal with more sequential data access, whereas with small IO size (8kB for example) the access is most often random

 

Thread count

How many different activities are going on in the same time. If you have a single threaded IO access patterns, it means that host sends a write to a storage system, and waits for the acknowledge from the storage system that the write has completed. And once its completed it will send next write and so on. In real word most applications will produce multiple threads at the same time. They don’t have to wait for single response to send another request. If we go deeper here – one disk can do only one operation at a time. If multiple IO are targeted to the same disk we have a queue. Using queues storage system can optimize the way it works. The worst type of performance is when the tread count is 1 – how can you optimize single thread?

Read/write ratio

Writes are most expensive (performance wise) then reads. Mostly because the system has to determine where to put new chunk of data. Once it decides where to place the data the write itself is time consuming due to RAID write penalty (Of course it depends on the RAID level placed underneath).  With enterprise storage system it actually changes – very often writes are faster, because they are placed into cache, and then the acknowledge to the host is send (later on writes from cache to actual hard drives are send in optimized way by storage system). Whereas reads – especially random reads, are very often un-cached and have to be fetched from hard drives.

Read/Write ratio is really important in terms of replication. Obviously only writes are being replicated, reads are not.

Workload IO and (some of the most popular) RAID Types

RAID 1/0

  • Best for small random write-intensive workloads.  The RAID penalty with RAID 1/0 is only 2. That’s the lowest of all the RAID types (that actually give you some kind of failure protection)

RAID 5

  • Good mix of performance and protection. But the RAID penalty is 4, so  the performance is much worst with small random writes.
  • Best with client write IO size of 64 KB or lager – full stripe writes can really boost the performance, you can write the entire stripe without a need of reading the parity information – which of course lower the RAID penalty.
  • Best practice is to use RAID 5 for workloads that have random writes of 30% or less.

RAID 6

  • More protection due to two parity disks, but at the same time higher RAID penalty – which is 6.
  • Very often used with NL-SAS drives (or SATA drives) which are the cheapest in terms of TB/$, but are the slowest.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值