Glenn Berry

AMD EPYC Processors in Azure Virtual Machines

April 8, 2019 by in Azure | 3 Comments
SentryOne eBooks

In these books, you will find useful, hand-picked articles that will help give insight into some of your most vexing performance problems. These articles were written by several of the SQL Server industry’s leading experts, including Paul White, Paul Randal, Jonathan Kehayias, Erin Stellato, Glenn Berry, Aaron Bertrand, and Joe Sack.

Free Download

Featured Author

Jonathan Kehayias is a Principal Consultant with SQLskills and the youngest MCM ever.

Jonathan’s Posts

Back on December 5, 2017, Microsoft announced that they were using AMD EPYC 7551 processors in their storage-optimized Lv2-Series virtual machines. Since then, Microsoft has changed the naming of this series to Lsv2. These VMs are not available in all regions, so you will want to check the availability in the Azure region that you are interested in using. The pricing details for the East US region are here, as an example. These AMD EPYC processors have a number of advantages for SQL Server workloads, as I will explain in this article.

AMD EPYC 7551 Details

This 14nm first-generation AMD EPYC 7551 processor has 32 cores and 64 threads, and it works in one or two-socket servers. This processor has a base clock speed of 2.0GHz, with an all-core boost speed of 2.55GHz, and a max boost clock speed of 3.0GHz. The L3 cache size is 64MB.

Like all AMD EPYC 7000 series processors, this particular SKU supports 128 PCIe 3.0 lanes for I/O connectivity. It also has eight memory channels which support DDR4-2666 memory, which have a peak memory bandwidth of 341 GB/second in a two-socket server. With this processor, you can have 2TB of RAM per socket with 64GB DIMMs. As 128GB DDR4 DIMMs become more widely available that total capacity will double.

The AMD EPYC 7551 processor has slightly lower single-threaded CPU performance when compared to the older 2.3 GHz Intel Xeon E5-2673 v4 (Broadwell) and the 2.4 GHz Intel Xeon E5-2673 v3 (Haswell) processors that Microsoft uses for many of their Azure VM series. Both of these Intel processors are special bespoke models that are not in the Intel ARK database. I wrote about using CPU-Z to benchmark the Intel Xeon E5-2673 v3 processor in an Azure VM in this article.

The older Intel Xeon E5-26xx v3 (Haswell) series which was introduced in Q3 of 2014, had a maximum memory bandwidth of 2133MHz. The slightly newer Intel Xeon E5-26xx v4 (Broadwell) series which was introduced in Q1 of 2016, increased that to 2400MHz. Both of these processor families only have four memory channels, with a maximum capacity of 768GB per socket with 32GB DDR4 DIMMs. They also only have 40 PCIe 3.0 lanes per processor.

The takeaway from all of this is that this AMD EPYC 7551 processor has good enough single-threaded CPU performance, along with better memory performance, memory density, and total I/O capacity compared to those two Intel processors. This makes it a good choice for many SQL Server workloads, especially DW workloads.

cid:part1.01000908.06050908@sqlskills.comFigure 1: CPU-Z Benchmark Results for LS16v2

Of course, if I were buying an AMD-based server for on-premises SQL Server use right now, I would try to get the newer, frequency-optimized AMD EPYC 7371 processor. The AMD EPYC 7371 processor has 32 cores and 64 threads, and it works in one or two-socket servers. This processor has a base clock speed of 3.1GHz, with an all-core boost speed of 3.6GHz, and a max boost clock speed of 3.8GHz. The L3 cache size is 64MB. ServeTheHome wrote about what an “insane value” this processor is here.

Azure Lsv2 Details

These Azure VM Lsv2 instances are using two-socket, Open Compute Platform (OCP) Microsoft Project Olympus servers, along with the standard AMD EPYC 7551 processors.

https://www.servethehome.com/wp-content/uploads/2017/06/AMD-EPYC-Microsoft-Project-Olympus-Inventec.jpgFigure 2: Microsoft Project Olympus

The key specifications for the Lsv2 series virtual machines are shown in Table 1. They feature low latency, local NVMe storage that can directly leverage the 128 PCIe 3.0 lanes per socket that is available in the host machine with the AMD EPYC 7551 processor.

VM Size vCPUs Memory (GiB) Local SSD
L8s v2 8 64 1 x 1.9TB NVMe SSD
L16s v2 16 128 2 x 1.9TB NVMe SSD
L32s v2 32 256 4 x 1.9TB NVMe SSD
L64s v2 64 512 8 x 1.9TB NVMe SSD
L80s v2 80 640 10 x 1.9TB NVMe SSD

Table 1: Lsv2 Series Azure VM Specifications

Azure VM Managed Disk Improvements

Azure Managed Disks are essentially logical disks that are actually virtual hard disks (VHD) that you can use with any Azure VM, regardless of the VM size. Microsoft handles the storage account management for you when you use Azure Managed Disks. This gives you the ability to add more capacity and storage performance without having to upgrade to a larger Azure VM.

On March 25, 2019, Microsoft announced the availability of higher performance, larger capacity managed disks for Azure VMs. With these new offerings, the maximum size of a single managed disk goes up to 32TB. Previously, you were limited to a 4TB size for a single managed disk. You can choose from Standard HDD managed disks, Standard SSD disks, and Premium SSD disks (with 64TB Ultra Disk managed disks being in a preview status).

With Premium SSD managed disks, the performance goes up from 7,500 IOPS to 20,000 IOPS and from 250MB/sec to 900 MB/sec for sequential performance. This level of performance compares pretty well to many typical on-premises systems, although it is still pretty easy to have much higher storage performance with a carefully designed on-premises storage subsystem. On the other hand, Azure VM CPU and storage performance has come a long way since I wrote about it back in 2014!

SQL Server Impact

These developments are a big deal for SQL Server usage on Azure VMs. Historically, a weakness of Azure VMs from a SQL Server perspective was the relatively low storage performance that you could achieve, especially with smaller VM sizes. SQL Server tasks that required good sequential I/O performance were often challenging on Azure VMs. I have also seen a number of clients who were practically forced to use the Delayed Durability feature on some databases to avoid high LOGWRITE waits.

Another issue was that many Azure VM series choices were not appropriately balanced for SQL Server usage, because they forced you to have very high core counts in order to get large memory capacity in your VM. This drove up both your SQL Server licensing costs and your per hour Azure VM costs.

Conclusion

Using a modern AMD EPYC processor in the storage-optimized Lsv2 Azure VM series gives you a high performance, balanced platform for SQL Server usage. What I mean by a balanced platform is from the Microsoft Data Warehouse Fast Track program, where a system could be designed and configured so that data flowed from the storage subsystem to the memory subsystem to be consumed by the processor cores where there were no unnecessary bottlenecks in the system.

In this case, you have good single-threaded CPU performance, combined with high memory bandwidth and very high storage bandwidth. Having multiple low latency local NVMe SSDs connected to those PCIe lanes will give you excellent storage performance. You can also add additional high-performance storage capacity with the newly enhanced Azure Managed Disks with Premium SSD disks, which will give you additional flexibility for storage capacity and performance.