Unsolved

This post is more than 5 years old

2336

February 6th, 2018 03:00

SSD Disk Question

We have VNXe3200 with 2 Storage Pools. The reseller sold us this with a lot of disks, but unfortunally we have a poor performance on our SSD pool. The affected pool is quite simple. 6 x 200GB SSD RAID 5 ( 4+1 ) one Hot Spare.The other pool is has 10 x 900 GB 10 k and 2 x 200 GB Flash.  I searched a lot on forums and docs and found out that there are 2 different Flash Disk types. SAS Flash and SAS Flash VP.

We wanted a fast SSD pool for our Database but the performance is nearly the same as the normal pool with the 10k disks. So could it be possible that disk of type Flash VP cound`t be used for this ?

24 Posts

February 7th, 2018 08:00

Hi!

The performance expectation for a workload has a lot of factors wrapped around it. Let's break them down for you as it relates to your pools configuration.

First, as far as the different Flash disk types listed, there's not a notable difference here. Usually an all flash pool will contain a different type vs a hybrid (Flash + non-Flash). The hybrid pool will term the disks as Flash VP but again it's not indicating performance differences for the most part.

From a raw performance numbers perspective (IOPS), a single Flash disk can conservatively deliver 3,500 IOPS of performance. Likewise, a 10k SAS disk can generate between 140-150 IOPS. So using 5 Flash disks together (Pool 1) could generate 17,500 backend IOPS. These backend numbers are very different from what your frontend host will see but we'll cover that later.

Your config for Pool2 is somewhat non-optimal regarding the Flash disks. A normal configuration for Flash tier in a hybrid pool would have disks in increments of 5 in a RAID 5 (4+1) configuration (just like your all Flash pool). Having only 2 disks doesn't make sense and is unclear regarding the configuration of that tier (maybe RAID 10?). This primarily affects usable space in the tier though, not the speed. As it is, the pool could deliver 8,400 IOPS (2 SSD @ 3500 + 10 SAS @ 140). For the rest of this post, I'll assume the Flash disks are RAID 10 with a write penalty of 2.

So on the surface, it would appear Pool 1 should smoke Pool 2 in performance for a workload, right? Well...it's not quite so clean. Since you mentioned your workload is a database, let's assume it's standard MSSQL on Windows 2012. If you followed MS best practices for formatting the disks where SQL stores the DB, it should be NTFS with a 64k block size. Note that unless you specify, Windows will format NTFS with a 4k block size. This is significant as the SQL application attempts to write data to disk in 64k chunks. If formatted optimally, That allows one SQL I/O write to equal one disk I/O write (aka 1 IOP). However, if instead it's formatted at a 4k block size, then that 64k SQL I/O write will require 16 disk I/Os to complete the write operation.

We also have to factor in the write overhead for the disk array (it is RAID 5 after all). Let's assume a DB read/write ratio of 70/30. The formula for Functional IOPS (performance after write overhead) is

Functional IOPS =((Total Raw IOPS × Write %) / RAID Penalty) + (Total Raw IOPS × Read %)

So that's ((17,500 x .3) / 4 ) + (17,500 x .7) = 13562.5 IOPS possible from Pool 1 for the SQL DB workload. This does not factor in the disk formatting though. If the NTFS volume is formatted at 64k, then we have a 1:1 and you could get a maximum of 11,812 IOPS in SQL as well. But if it's formatted at 4k, then we would only achieve (13562.5 / 16) = 847.65 IOPS. This is the number SQL performance monitor would report to you. How frustrating to be told the pool can do 17,500 IOPS and you're only seeing 847 IOPS in your application?! As with most things...the devil's in the details. For reference, Pool 2 could deliver a max of 7,140 IOPS and at a 4k block size, SQL would get 446.25 IOPS.

All of this excludes any variance introduced by latency or average seek time on the disks themselves.

Lastly, if you happen to have a database size less than 100GB it could possibly fit entirely into the Flash tier of your hybrid pool (very unlikely but possible). If that were the case, the functional write performance of Pool 1 vs Pool 2 is 1,312.5  vs 1,050. Now suddenly it looks very very close. Complicate this with the 4k block size and it's now 82 IOPS vs 65 IOPS for write performance in SQL.

Hopefully this doesn't have your head spinning. The factors around performance are extensive and a system must be well designed from top to bottom for proper support of a workload at a required or expected performance level.

Hope this helps!

4.5K Posts

February 7th, 2018 12:00

Performance on a flash pool can be affected by the type of IO you're using. Some types of IO are not that good on flash.

The difference between the SSD used in FAST cache and FAST VP are different in that the FAST Cache ssd's are a bit faster but have a longer long span (SLC) then the ssd for FAST VP  (MLC).

I would look at the IO types used for each Pool, that may be where the issue is.

With DB's there are different IO types used for each part (Log, Temp, DB). Raid 10 works best for Log and Temp (on spinning disks and Raid 5 is better for DB files.

You might want to separate the different files in the two Pools.

There's a KB for the VNX that talks about the best practices for using Flash. THe second KB has some more basic information about the workloads not suited to Flash

https://support.emc.com/kb/000442856

https://support.emc.com/kb/000324124

glen

No Events found!

Top