The storage world has had a major upgrade when Solid State Disks came to market just a few years ago. Quickly the market was overwhelmed with many sizes and types of these ultra fast drives. Different types of cells like multi level cells, single level cells, cell sizes, different interfaces such as PCI-e, SATA and SAS and a great variety in performance and endurance.
Many IT colleagues had amazing posts with graphs on the raw throughput in MB/Sec. And then what happens when we create a striped volume of a bunch! Wow!
But when do you "need" an SSD? And the next questions would be "which type do I need then?" and "SSD has a short lifespan doesn't it?". Often the pricing of an enterprise SSD can result in quite a shock to your manager or purchasing authority.
In this post I will try to explain high level differences between the four major SSD types as indicated by the hardware vendors such as Dell, HP, IBM and obviously the SSD manufacturers themselves. And when to choose which type of SSD for your application.
So let's kick off with the four major types of SSDs and the models I used for this article.
The table below shows which SSDs I compare in this article. Please note that the prices are derived from pricespy.
Type | Brand and Model | Capacity | Interface | Endurance | Warranty | Price |
---|---|---|---|---|---|---|
Consumer grade | Intel 730 Series | 480 GB | SATA 600 | 70GB/day | 5 years | € 269 |
Ent. Read intensive | Seagate 1200.2 Light Endurance | 480 GB | SAS 12Gbps | 3 DWDP | 5 years | € 1054 |
Ent. Mix use | Seagate 1200.2 Mainstream Endurance | 400 GB | SAS 12Gbps | 10 DWPD | 5 years | € 1286 |
Ent. Write intensive | Seagate 1200.2 High Endurance | 400 GB | SAS 12Gbps | 25 DWDP | 5 years | € 2000 |
As you may have noticed I did not split based on single level cell and multi level cell based SSDs because there isn't that much of a difference anymore, for 99% of the use cases. Additionally I have included the consumer grade SSD to the equation. The simple reason for this is to provide an answer to the question "Why don't we just drive by the local computer shop and by some cheap SSDs! They are much cheaper!"
SSD Endurance
In the table above it is also clear that different manufacturers have different notations for the endurance. It would be more easy to compare if they had the same notation. The warranty is usually limited and directly ties in to the endurance figures. For example Intel's 730 480GB drive is rated for 70GB per day written for a duration of 5 years (the warranty) and the Seagate 1200.2 High endurance is rated for 25 Drive Writes Per Day (DWDP). You can imagine that there is a great difference between the listed SSDs. Lets convert this number to Terra Bytes Written (TBW) and GB per day. TBW is the standard endurance metric proposed by JEDEC (JESD218). They also have created a standard for workload testing as well (JESD219).
Type | Brand and Model | Capacity | Endurance | Warranty | TBW | GB/day |
---|---|---|---|---|---|---|
Consumer grade | Intel 730 Series | 480 GB | 70GB/day | 5 years | 127,75 | 70 |
Ent. Read intensive | Seagate 1200.2 Light Endurance | 480 GB | 3 DWDP | 5 years | 2628 | 1440 |
Ent. Mix use | Seagate 1200.2 Mainstream Endurance | 400 GB | 10 DWPD | 5 years | 7300 | 4000 |
Ent. Write intensive | Seagate 1200.2 High Endurance | 400 GB | 25 DWDP | 5 years | 18250 | 10000 |
Quite significant isn't it? Let's Put it in a graph and divide the TBW over the 5 year warranty as well to show it visually:
So depending on the workload you are planning to put on an SSD you must profile how much data is going to be written to it. Don't forget that RAID also impacts the writes. Especially RAID5 or 6. Each write comes with parity but I will cover RAID levels and their characteristics in another post.
SSD Performance
Just to quickly touch upon the speeds of these drives I'll be very short here since the focus is on endurance. The random writes of the Intel consumer grade SDD are actually higher then the enterprise mix use SSD. This could be due to different controllers and/or a different type of cell like triple level, multi level and single level cells. Or perhaps even because I am comparing two different brands.Type | Brand and Model | Random 4KB read | Random 4KB write |
---|---|---|---|
Consumer grade | Intel 730 Series | 89000 | 74000 |
Ent. Read intensive | Seagate 1200.2 Light Endurance | 190000 | 35000 |
Ent. Mix use | Seagate 1200.2 Mainstream Endurance | 200000 | 67000 |
Ent. Write intensive | Seagate 1200.2 High Endurance | 200000 | 80000 |
When to use SSDs
This might be the most tricky question since there is not one clear answer.
For example, only looking at the price per GB then SSD is very expensive compared to traditional spinning platter hard drives. Obviously, if you need TB's of storage which is infrequently accessed then don't go for SSD.
If you database server is utilizing a lot of swap space, or page file if you like, then rather consider adding more RAM to your box. But if you system is waiting for the disk all the time then you could consider SSD. You can easily check this by monitoring the wa counter extracted from the Linux top command or the disk queue length in the Windows performance monitor. They should be zero. An increasing wa or queue length counter can point to other things as well. Among them is fragmentation.
Basically try to solve the problem first before thinking of just putting it an SSD. High IO applications could really benefit form SSD anyway.
For example, only looking at the price per GB then SSD is very expensive compared to traditional spinning platter hard drives. Obviously, if you need TB's of storage which is infrequently accessed then don't go for SSD.
If you database server is utilizing a lot of swap space, or page file if you like, then rather consider adding more RAM to your box. But if you system is waiting for the disk all the time then you could consider SSD. You can easily check this by monitoring the wa counter extracted from the Linux top command or the disk queue length in the Windows performance monitor. They should be zero. An increasing wa or queue length counter can point to other things as well. Among them is fragmentation.
Basically try to solve the problem first before thinking of just putting it an SSD. High IO applications could really benefit form SSD anyway.
I use them too
Just to give you an idea, I am managing +/- 300 physical servers and only 4 of them are equipped with SSDs. The applications we run on them are two NGINX reverse caching proxies, an SQL server and a Splunk instance.
NGINX reverse proxy
I chose to put SSDs in the NGINX servers since we wanted to be able to squeeze up to 10Gbit/s out of the cache which would be around 800GB in size, and since the requests are completely random for small and medium size files a lot of random IO was expected. We use two 800GB read intensive SSD's in RAID 1 since we estimated that not more then 1 write cycle per day would happen.
SQL Server
This SQL server is used for performance metrics which are inserted at an very high rate (+/- 10000 per second) . All this data is also queried often. We found that even after indexing was applied the IO queue length would increase a lot at every insert batch. We installed write intensive disks in this server since data stored in raw format and then aggregated every minute. A lot of writes would happen.
Splunk
We have a Splunk indexer running which is receiving +/- 4GB of data per day. We use to query (or search) data over longer periods of time. Even though a search itself is single threaded the wa counter would increase making other searches which were running simultaneous very slow by the rim we were still using a few spinning disks. In this server I installed 3 read intensive SSDs providing us 800GB of RAID5 protected capacity. Just like the SQL server, if the capacity is going to be exhausted I will add another read intensive SSD.
Great piece of writing!
ReplyDelete