A good queue length figure for premium ssd?

아롬 황 236 Reputation points
2020-08-20T01:57:19.407+00:00

How much do you know the risky numbers?

For example, I know that AWS is guiding 1 per 1000 provisioned IOPS.

Azure Disk Storage
Azure Disk Storage
A high-performance, durable block storage designed to be used with Azure Virtual Machines and Azure VMware Solution.
575 questions
0 comments No comments
{count} votes

Accepted answer
  1. Sumarigo-MSFT 43,806 Reputation points Microsoft Employee
    2020-09-01T12:28:27.503+00:00

    @아롬 황 Apologies for delay in responding here!

    After the disk accepts certain No. of IOs for a Second, pending IOs which were more than what the disk can accept, gets stored in Queue depth for next "second" to be processed. Hence, if your disk is able to accept all the IOs written by your application, then Queue depth won't be even utilized. Example: If your application writes 300 IOs per second and disk is capable of accepting 500+ IOPS, then queue wont be used. However, if your application sends IOs more than Disk's IOPS limit, then queue space will be used.

    Considering the above example, you need not replace disk based on Queue depth. If you are seeing IOs are getting throttled then you may think of changing the disk to higher size.

    And regarding your last concern, there is no defined value for good queue depth. You may also check the below article wherein Microsoft has used queue depth of 128 to check throughput.

    https://learn.microsoft.com/en-us/azure/virtual-machines/windows/disks-benchmarks

    Hope this helps!

    Kindly let us know if the above helps or you need further assistance on this issue.

    -----------------------------------------------------------------------------------------------------

    Please don’t forget to "Accept the answer” and “up-vote” wherever the information provided helps you, this can be beneficial to other community members.

    1 person found this answer helpful.

1 additional answer

Sort by: Most helpful
  1. Sumarigo-MSFT 43,806 Reputation points Microsoft Employee
    2020-08-20T08:42:41.677+00:00

    @아롬 황 As I assume you are referring to Are you referring to Azure premium storage: design for high performance, If not please correct me?

    Note: The below information is based on the different Premium SSD sizes

    Disk Queue length: Avg. Disk Queue Length is the average number of (read and write) requests that are queued for the disk operations during the sample interval. Current Disk Queue Length is the number of IO requests pending on the disk at that point in time. Higher value of this counter results in high disk latency. Azure provides Disk QD (Queue Depth) to measure the average disk queue length.

    Number of outstanding I/O requests waiting to be read from or written to the storage disk. PerfMon: Current Disk Queue Length Iostat: avgqu-sz

    The queue depth or queue length or queue size is the number of pending IO requests in the system. The value of queue depth determines how many IO operations your application can line up, which the storage disks will be processing. It affects all the three application performance indicators that we discussed in this article viz., IOPS, throughput, and latency.

    Queue Depth and multi-threading are closely related. The Queue Depth value indicates how much multi-threading can be achieved by the application. If the Queue Depth is large, application can execute more operations concurrently, in other words, more multi-threading. If the Queue Depth is small, even though application is multi-threaded, it will not have enough requests lined up for concurrent execution.

    Typically, off the shelf applications do not allow you to change the queue depth, because if set incorrectly it will do more harm than good. Applications will set the right value of queue depth to get the optimal performance. However, it is important to understand this concept so that you can troubleshoot performance issues with your application. You can also observe the effects of queue depth by running benchmarking tools on your system.

    Some applications provide settings to influence the Queue Depth. For example, the MAXDOP (maximum degree of parallelism) setting in SQL Server explained in previous section. MAXDOP is a way to influence Queue Depth and multi-threading, although it does not directly change the Queue Depth value of SQL Server.

    High queue depth
    A high queue depth lines up more operations on the disk. The disk knows the next request in its queue ahead of time. Consequently, the disk can schedule operations ahead of time and process them in an optimal sequence. Since the application is sending more requests to the disk, the disk can process more parallel IOs. Ultimately, the application will be able to achieve higher IOPS. Since application is processing more requests, the total Throughput of the application also increases.

    Typically, an application can achieve maximum Throughput with 8-16+ outstanding IOs per attached disk. If a queue depth is one, application is not pushing enough IOs to the system, and it will process less amount of in a given period. In other words, less Throughput.

    For example, in SQL Server, setting the MAXDOP value for a query to "4" informs SQL Server that it can use up to four cores to execute the query. SQL Server will determine what is best queue depth value and the number of cores for the query execution.

    19082-capture.jpg

    For more information you may refer to this article: https://learn.microsoft.com/en-us/azure/virtual-machines/windows/premium-storage-performance

    IOPS
    IOPS, or Input/output Operations Per Second, is the number of requests that your application is sending to the storage disks in one second. An input/output operation could be read or write, sequential, or random. Online Transaction Processing (OLTP) applications like an online retail website need to process many concurrent user requests immediately. The user requests are insert and update intensive database transactions, which the application must process quickly. Therefore, OLTP applications require very high IOPS. Such applications handle millions of small and random IO requests. If you have such an application, you must design the application infrastructure to optimize for IOPS. In the later section, Optimizing Application Performance, we discuss in detail all the factors that you must consider to get high IOPS.

    When you attach a premium storage disk to your high scale VM, Azure provisions for you a guaranteed number of IOPS as per the disk specification. For example, a P50 disk provisions 7500 IOPS. Each high scale VM size also has a specific IOPS limit that it can sustain. For example, a Standard GS5 VM has 80,000 IOPS limit.

    Hope this helps!

    Kindly let us know if the above helps or you need further assistance on this issue.

    --------------------------------------------------------------------------------------------------------------------------------------------------------------

    Please don’t forget to "Accept the answer” and “up-vote” wherever the information provided helps you, this can be beneficial to other community members.