Solid-State Drive Performance Factors
In this video, I will look at Solid-State performance factors. Understanding what these are will help you when looking at the specifications of Solid-State Drives. This will assist you in getting the best performance for your needs.
Data Transfer
The first performance factor that I will consider is data transfer. This is essentially the speed data is transferred at. To understand this, consider that you are copying a file in Windows. When looking at the specifications for a Solid-State Drive, there are a lot of specifications that will give you an indication of how fast the Solid-State Drive is; however, the real question that you should be asking is, how long will it take to transfer data?
When looking at this, the measurement that is normally used is Megabytes per second. You will notice that the transfer rate starts high and as time goes on the transfer rate slows down. This is for a number of different reasons; the main reason is the buffers on the Solid-State Drive fill up, thus it starts out transferring quickly and then will slow down. Depending on a number of different factors, the performance of your Solid-State Drive will differ in different situations. I will have a look at the different performance factors so you can get an idea of what to look for when purchasing a Solid-State Drive.
Read/Write
The first consideration is how fast the Solid-State Drive will read and write. In the performance specifications for the Solid-State Drive, it will list a number of specifications giving an indication of performance. It is important to understand what each of these performance specifications are in relation to.
The first one to consider is sequential access. Sequential access is when the data is read in order; that is, the data is read in the same order it is laid out. The next one to consider is random access. This is accessing data that is not laid out in sequential order, so can be located anywhere, thus the name random.
When looking at the specifications for a Solid-State Drive, sequential and random-access specifications will be provided; however, these will not give you a true indication of how well the Solid-State Drive will perform.
To understand why, consider that in many devices, when you first access the device, you will have a sudden burst of speed which will quickly reduce. This is often referred to as burst speed. Burst speed is an initial short-term maximum speed that is not maintained for very long.
When you access a storage device, the initial burst of speed may be much higher than normal because of features like buffering. Often, when looking at the specifications of Solid-State Drives, they will list this speed; however, this does not give you an indication of how fast it will run when under load for a period of time.
To get an understanding of how fast the storage device will operate, look for specifications that give an indication of how the storage will perform under load. This may be referred to as sustained. Sustained is the performance a storage device can maintain when put under constant load. Manufacturers like to quote the burst speed to give the fastest speed the Solid-State Drive can achieve. However, if the system is under load for a period of time, this speed will quickly drop. Let’s have a look at some manufacturers’ specifications to get an idea of what to look for.
Example Specifications
To start with, I will look at a Western Digital 500 Gigabyte Solid-State Drive. The manufacturer is free to release any specifications they like, so the specifications you are given for your device may be different. Be careful when reading them; some specifications like a burst specification will only give you an idea of how the Solid-State Drive will initially perform and not when it is under load.
For this Solid-State Drive, I will look at four of the performance specifications. In this case, these specifications were calculated using some free software called Crystal Disk Mark. This software essentially performs some tests on the Solid-State Drive giving you an indication of how fast the Solid-State Drive will run. Make sure, before you run the test, you don’t have any other software running or using the Solid-State Drive as this will affect the results.
To start with, first select which drive you want to run the tests on. In this case, the Solid-State Drive is almost full, so the results we get may be lower than the manufacturer’s specification. Generally, when the manufacturer runs these tests, they will do it on a Solid-State Drive that is empty.
The default test size is 1 Gigabyte of data. You are free to change this if you wish. Keep this in mind when looking at specifications, as the manufacturer may change this setting to get better looking results. In this case, 1 Gigabyte was the test size that that was used by Western Digital when they tested this drive using this software. To run all the tests, press the ‘All’ button on the left-hand side. If you want to run a particular test, you can also press an individual test button. To run all the tests takes a few minutes, so I will pause the video and return once the tests have completed.
The first test will write one megabyte sequences, writing data in sequence on the drive, that is, writing the data one bit after another. The queue length is set to eight. So essentially, this means that the Solid-State Drive is asked to perform eight requests at once. Normally desktop activity is around four requests at once whereas for heavily used servers this can be around 16. Thus, eight gives you a pretty good indication of how the Solid-State Drive will work under a decent load.
The read gave a result of 537 Megabytes per second as compared with 545 Megabytes per second quoted by the manufacturer. The results may vary. For example, I ran it once and got a result of 548 Megabytes per second which is higher than that quoted by the manufacturer. Getting a result higher than the manufacturers specification is rare. Results can vary between different runs of the software and also depends on what hardware you are using, such as the motherboard that is being used.
The write result is 514 Megabytes per second, which is a little down from the 525 Megabytes per second quoted by the manufacturer. Don’t expect the results to be the same; however, they should be pretty close if you are running the tests correctly.
The next test down is a sequential test; however, this time the data is 128 kilobyte data blocks with 32 queues. You will notice that the results are very similar. Since data is being written in sequence, this essentially means the Solid-State Drive can write one block at a time that contains all new data. If you have watched our previous video on Solid-State Drives, you will understand that Solid-State Drives are divided up into blocks which contain pages. If you don’t remember, here is a quick refresher.
You can see a block on a Solid-State Drive. In this example, the block contains eight pages. A page is the smallest unit on the Solid-State Drive, but in order to update a single page, the whole block needs to be updated. This means, the whole block needs to be read into memory, updated and then written back.
When you are doing sequential reading or writing, this process is very efficient. Consider you have a completely empty block, and since the data is sequential, the whole block could be written at once. The same goes for sequential reading. If the data is all contained in the same block, the whole block can be read at once and all the data is used, none of the data that is read needs to be discarded and, thus, is more efficient.
Sequential access is highly efficient; however, random access is not. Random access is not as efficient because, when a block is accessed, not all the data in the block is useful. In the case of random reading, the whole block is read and then only the relevant pages are kept, and the rest are discarded. In the case of writing, all the data in the block must be read, the changes applied to the block, then the block is re-written with all the changes. You can see in either case, since the whole block must be accessed at once, when only part of the block requires updating, there is a lot of inefficiency in the process. You can understand why random access is slower than sequential access, because the pages containing the data may be spread all over the Solid-State Drive, in different blocks.
The next test down is random access using four kilobyte blocks of data. Notice that the queue size is 32. This is important because, essentially, this means that 32 different requests are being sent at once. When the Solid-State Drive has a high number of requests, it is able to optimize these requests to get the best results. For example, with write requests, the Solid-State Drive can group a number of requests together, so they fill up a single block. If there are a lot of free blocks, the speed will be quite fast. If there are no free blocks, the Solid-State Drive will need to move data around to complete the request. This is why a Solid-State Drive that is nearly full will not perform as well as a Solid-State Drive that has free space. Once you start getting below 25% free space on a Solid-Sate Drive you may start noticing lower performance and there will be increased wear of the Solid-State Drive and, thus, a reduced lifespan.
In this case, you will notice that read and write performance will be less than for sequential access. Given that the queue length is high, the Solid-State Drive can optimize the requests to get the best results, thus the results should not be that much worse than for sequential access. However, keep in mind this is using four kilobyte data blocks and the Solid-State Drive is almost full.
The last test really puts the Solid-State Drive through its paces. This test will once again use four kilobyte blocks, but now the queue length is only one. Even with a queue length of one, the testing software will do its best to make sure the Solid-State Drive is always under load. What has changed, however, is, since there is only one request, it won’t be able to combine multiple requests together in order to produce better results. Notice the read result is about 32 Megabytes per second and write is about 97 Megabytes per second.
It may seem strange that read speed is slower than write speed, because it takes longer to write to a Solid-State cell than to read from one. In this case, the Solid-State Drive has put the write requests into cache. So even though the queue length is one, it is essentially buffering some of the requests and writing them all at once. Thus, the write speed is higher than the read speed, which is normally not the case.
Compared to the other speeds, these results don’t look very impressive. So, you can see why the manufacturer is careful about what specifications they release. You will notice in this case, the specifications from the manufacturer for random read and write speed is given in IOPS rather than Megabytes. In a moment I will have a look at IOPS in more detail.
To see IOPS, I can select IOPS from the menu on the far right. I can also select the latency option. Latency is the delay before a command is processed. More on that later in the video. The next specification I will look at is IOPS.
You will notice the specification for read from the manufacturer is up to 100,000. In this case, read is shown as 78,000. The manufacturer’s specification for write is up to 80,000. In this case, the write is 23,000. What result you get when you run the tool can vary, so don’t be too concerned if the results you get are a little lower than what is advertised. Sometimes, you may get a result higher than advertised, but that is rare. If the result is very low, this is something to be concerned about.
It is nice to have specifications like these to give you an idea of how the Solid-State Drive will perform. Megabytes per second is pretty straightforward to understand what is being measured; however, IOPS is not. Let’s have a closer look at IOPS and what this specification is really telling us.
Input/Output Operations Per Second (IOPS)
IOPS are essentially the number of instructions per second that can be processed by the device. Manufacturers like to give these specifications from a marketing point of view, as a high number makes it look like the device performs very quickly. The important point to understand is that IOPS by themselves mean very little.
To understand how IOPS affects performance, consider it is like a tachometer in a car. A tachometer will show you the number of revolutions that the engine in the vehicle is currently doing. Now consider that the vehicle is not in gear, so effectively these revolutions are not being converted into anything useful. In the case of a Solid-State Drive, utilizing the IOPS of the device will result in transferring data to and from the device.
Now let’s consider that load is applied to the Solid-State Drive. In this example, the load is of different sizes. That is, the data requested is of different sizes. Each request is essentially one input/output command. When the load is applied, the IOPS available on the device will drop.
To understand this better, consider that Solid-State Drive performance is subject to response time and workload type. So, essentially, the IOPS need to be high enough so a lack of IOPS is not causing a bottleneck. If the Solid-State Drive has a lot of requests, such as requests for small amounts of data, the maximum IOPS the device supports will need to be high enough to process the requests, otherwise a bottleneck will occur. That is, the Solid-State Drive is capable of transferring more data but can’t because it is waiting for a request to be processed. On the other hand, having too many IOPS will be a waste, since the device can’t utilize them effectively.
For this reason, high-performance Solid-State Drives will have much higher IOPS than other Solid-State Drives. This is because applications like high-performance databases will generate a lot of IOPS and, thus, you need a device that can handle this.
To put it simply, to understand what effects IOPS will have, you need to also consider it with other metrics such as latency and load type. IOPS by themselves do not tell you a lot, but the marketing departments like to make you think they mean a lot more than they do. This is because they can put very high numbers on the product to make you think the device will perform very fast, which may or may not be true.
In the case of a hard-disk drive, since there is only one drive head which needs to move on the platter to read or write data, a hard-disk drive’s IOPS will be very low compared to that of a Solid-State Drive. For example, it may be as low as 100 IOPS. This is very different from the IOPS for a Solid-State Drive that is measured in the thousands. But, in the case of a hard-disk drive, the IOPS don’t need to be very high to get good performance. Thus, you can understand why they do not et hard disks using IOPS. In summary, IOPS don’t mean a lot in isolation. I personally would look at the transfer rate first rather than IOPS. This will give you a good indication of how the device will perform under real-world conditions. To put it simply, IOPS need to be high enough to support the workload and extra IOPS won’t make performance better, but if there are not enough IOPS available this will affect performance.
Now that I have explained IOPS, let’s go back to our previous example so we can better understand what IOPS are.
IOPS Results Explained
With our example Solid-State Drive, the manufacturer gave us some specifications and we also obtained specifications by running Crystal Disk. To understand these specifications, consider that, to obtain them, data was read and written to the Solid-State Drive randomly. When this occurred, the manufacturer indicated that IOPS for reading will reach about 100,000. Our results were 78,000. For write, the manufacturer gave 80,000. Our results were 55,000. Since the manufacturer gives an upper limit, it is unlikely that in your testing you will get higher than what the manufacturer has given. The next question is, what do these results actually mean?
The point to consider here is, the specification gives no indication of how much data was actually transferred. Essentially, what the results are telling you is that, given some random reading or writing of different sized blocks, you can achieve up to this many IOPS. You can see that reading this specification does not really give you an indication of how much or how fast a Solid-State Drive can transfer data. Higher IOPS tend to indicate better performance, but when you compare one Solid-State Drive to another, you need to consider how the manufacturer came up with the specification. If they used different testing software or changed the testing settings, this can affect the results. When looking at Solid-State Drive specification, make sure you understand exactly what was being measured. Also keep this in mind when you are comparing two different Solid-State Drives with each other.
Now that we have had a look at some of the specifications you may come across, let’s now look at another Solid-State Drive to see what other specifications you may see.
Example Specifications 2
In this example, we have a similar Solid-State Drive from the same manufacturer; however, this time the Solid-State Drive is in the M.2 form factor. The specifications given by the manufacturer are pretty similar to the other example that I looked at.
Notice that the interface for the Solid-State Drive is SATA III. SATA III has a maximum transfer speed of 600 Megabytes per second. You will notice that the maximum read and write performance of the Solid-State Drive is getting close to this 600 Megabyte per second limit.
Keep this in mind when purchasing a Solid-State Drive. If the Solid-State Drive uses the SATA III interface, regardless of what technology is used, the Solid-State Drive will be limited to 600 Megabytes per second transfer rate. Given that Solid-State Drives have come a long way and can outperform this limit, a new standard was required.
Example Specifications 3
To increase the performance of Solid-State Drives, the M.2 form factor was designed so it could use PCI Express rather than the SATA III interface. The speed of the Solid-State Drive is now limited to the speed of PCI Express and the number of lanes it can utilize.
In this example, I am looking at a high-performance Solid-State Drive that is designed to be used in high-performance systems. You will notice in this case the interface is PCI Express version 3 with four lanes.
You will notice that the sequential writes are 1400 Megabytes per second. This is twice as high as the 600 Megabytes limit of SATA III. Keep in mind that Solid-State Drives will often use caching, so you won’t get this speed consistently if the Solid-State Drive is under load for long periods of time.
When installing Solid-State Drives that use PCI Express, check your motherboard specifications for how many lanes are supported for that slot and the version of PCI Express. In some cases, some motherboards have multiple M.2 slots each having different specifications, which will affect the speed the Solid-State Drive will run at.
Notice also that the version number of NVMe is v1.3. Keep in mind that NVMe, in this case, refers to the protocol used. Thus, the slot does not change between versions, just the protocol. Newer protocols support new features and generally perform faster. The hardware used makes more of a difference then the protocol. The protocol should be backwards compatible, so different version numbers should work with each other. Many manufacturers will provide list of Solid-State Drives that will work with their hardware. Before you buy, you may want to check this list, particularly if you are paying a lot for the Solid-State Drive.
Except in rare cases, as long as the motherboard supports the protocol the M.2 Solid-State Drive uses, you should be good – that is, either SATA III or PCI Express. In some cases, a M.2 PCI express connector will also support SATA, but best to check because they don’t always. The high-performance M.2 connectors generally won’t.
This covers the basic specifications that you will come across when looking at Solid-State Drives. To end this video, I will look at one more specification, which is latency.
Latency
Latency is essentially the delay from when a request is sent to when it starts. So, let’s consider that a request is made to a device. The latency is essentially lost time when nothing useful is happening. That is, the time it takes the request to get to the device, process the request and start doing something useful; so basically, when the request is starting to be actioned.
Note that the request may take a while to complete, but in this case, we are only measuring when the request is starting to be actioned by the device. In the case of the hard disk, the latency would be from when the request is sent, to when the hard-disk head has moved to the correct place and starts reading or writing data.
In the case of a Solid-State Drive, the latency is when the reading or writing starts on the device. Solid-State Drives generally have a latency under one millisecond. Hard disks generally have a latency under 20 milliseconds.
You will find that with hard disks, the latency time is commonly provided by the manufacturer. However, with Solid-State Drives, the latency time is rarely given. This is because, in Solid-State Drives the latency is not as important. In the case of hard-disk drives, since the drive head can only access one part of the platter at once, moving the head across the platter faster can significantly increase the speed data is transferred to and from the hard disk.
With Solid-State Drives, latency is already very low to start with and, unlike hard disks, a number of requests can be actioned at the same time. Since multiple requests can be done at the same time, the latency can be a little misleading. For example, if you have a Solid-State Drive with a one millisecond response time but can do 20 requests at once, this will perform faster than a Solid-State Drive that has a latency of half a millisecond but can only perform five actions at once.
When it comes down to it, as we have seen, there are a number of different characteristics that need to be considered to determine how fast a Solid-State Drive will perform. Nowadays, the latency statistics by themselves won’t give you any idea of how well the Solid-State Drive will perform, since multiple requests can be completed at the same time. Thus, you can see why manufacturers don’t include this statistic anymore. By itself, it does not really give you any idea of how the Solid-State Drive will perform. To do this, you need to consider a lot of other factors along with it. Thus, manufacturers provide other more meaningful specifications to give you an idea of what performance you may get.
End Screen
That concludes this video on Solid-State Performance factors. I hope you have found this video useful. Until the next video from us, I would like to thank you for watching.
References
“The Official CompTIA A+ Core Study Guide (Exam 220-1001)” Chapter 4 Paragraph 140-143
“CompTIA A+ Certification exam guide. Tenth edition” Pages 294 – 295
“WD SSD sn720” https://www.westerndigital.com/products/data-center-drives/cl-sn720-ssd
“Picture: Jumping cat” https://pixabay.com/photos/cat-mieze-siam-siamese-siamese-cat-1504233/
“Video: Tachometer” https://www.videvo.net/video/car-tachometer-/2072/
Credits
Trainer: Austin Mason http://ITFreeTraining.com
Voice Talent: HP Lewis http://hplewis.com
Quality Assurance: Brett Batson http://www.pbb-proofreading.uk