markrubens - Fotolia
Moving to the Microsoft Azure public cloud, admins and developers can select from an array of instance types. A series of services -- storage, scaling, caching, databases and more -- support and optimize workload performance. Start with the right VM, and the workload can achieve high performance without wasted money.
Microsoft lists about 80 unique Azure instance types from which users can select. The list of available instances grows and changes regularly.
Learn the difference between Azure instance types, such as memory-optimized and GPU-optimized VMs, to know how to map workloads to the appropriate instance type. This article breaks down categories of VMs that Azure offers.
General-purpose VMs: B- and D-series instances
Organizations need general-purpose computing VMs for web servers, software development and testing, database instances or a range of other kinds of application deployments. General-purpose VMs such as Azure's D-series aren't optimized for specific use cases. Users can opt for instances with various virtual CPU (vCPU), memory and storage setups for a wide range of workload goals.
Compute-optimized VMs: F-series instances
Some compute-intensive workloads require high processor capability relative to the amount of memory available. When the emphasis is on processing, cloud customers often opt for VMs that are built with a higher processor-to-memory ratio. This means that there is a higher vCPU-to-memory ratio than in other instance types.
Use this setup for machine learning and analytics applications, heavy-traffic web servers or network-centric workloads. Azure provides several classes of compute-optimized VMs to choose from, such as the F-series.
Memory-optimized VMs: E-, G- and M-series instances
Some workloads place a greater premium on memory over processor capability. Such workloads may require substantial content caching, support for relational databases and in-memory analytics.
When a high memory-to-processor ratio is a workload requirement, Azure users can select from a variety of memory-optimized VMs, such as the M-series. The Mv2-series instances offer enormous memory capacity, up to 12 TB. Other memory-optimized instance types include the G-series, which boosts both memory and SSD storage, and the E-series instances.
Storage-optimized VMs: Ls- and G-series instances
Big data projects, as well as SQL and NoSQL database and data warehousing deployments, can be storage intensive. Workloads with high disk throughput or I/O requirements benefit from cloud VMs optimized for storage activity. On Azure, these include the Ls-series and the G-series, which falls into both memory- and storage-optimized categories.
GPU-optimized VMs: N-series instances
Graphics tasks can be extremely demanding on CPUs. Graphics processing units offload much of the processing work related to underlying math and rendering tasks. GPUs are increasingly called upon for visualization, heavy analytics and gaming or graphics workloads.
Azure's N-series instance types feature several GPUs including the Nvidia Tesla P40, M60 and V100 GPUs. GPU-optimized instances also offer high-bandwidth InfiniBand interconnections to further enhance performance.
High-performance compute VMs: H-series instances
High-performance compute (HPC) workloads place enormous demands on processor and memory bandwidth. Examples of these workloads include fluid dynamics, finite element analysis and weather modeling.
Several Azure H-series instance types are tailored to handle HPC workloads. The emphasis is not so much on the quantity of resources, but rather the selection and architecture of those resources for HPC needs. H-series instances are denoted for a mix of large vCPU counts and ample memory. Other characteristics include high memory bandwidth, high vCPU clock speeds, large vCPU cache per core and high-performance SSD storage bandwidth.
Azure has retired the A8, A9, A10 and A11 instance types from the A-series that originally targeted compute-intensive tasks.
What makes Azure's compute-intensive instances different is the cloud provider's hardware. The servers are optimized for high-end processor and network operations. For example, Azure's H-series provides 8- and 16-core VMs using Intel Haswell E5-2667 v3 processors and fast DDR4 memory. Local storage is handled with SSD devices.
The advantages of compute-intensive instances are not limited to single iterations. Admins can deploy a group of Azure instances to create high-performance computing clusters for Hadoop or other big data projects, for example.
Other VMs: A-, Bs- and E-series instances
Azure provides several other instance types. The economy A-series instances have basic processor and memory configurations. Similar to the heavier-duty general-purpose VMs, A-series instances suit tasks such as software development and testing, low-traffic web servers or small databases.
The Bs-series offers a line of economy VMs tailored to burst demands. Bs-series instances should work in situations where uneven or unpredictable processor utilization might adversely impact other VM types.
Finally, the E-series is optimized for in-memory hyperthreaded applications such as complex or demanding databases. The E-series uses a high memory-to-processor ratio to optimize it for memory-intensive tasks, and high-performance cache and storage.
Which Azure instance types should you use?
Azure instance types such as the Dav4-series or Dv3-series provide good performance at a reasonable cost for most enterprise workloads. Low-priority workloads can run on less expensive A-series or B-series instances, as long as performance demands are low. Unless the workload will significantly benefit from the investment, it is not worth the cost for high-performance instances such as H-series for HPC or N-series with GPUs. But a workload designed specifically to perform visualization using Nvidia Tesla V100 GPUs should benefit from an instance such as the NCsv3.
To map the right Azure instance types to workloads, start with the native computing requirements and translate those to cloud capacity demands. What kind of server do you need to run the application? Think in terms of processor cores, memory, disk storage, disk I/O and network bandwidth. If possible, evaluate the application in a local environment, such as the on-premises data center, and monitor workload performance to detect possible bottlenecks. Start with an instance size that is a close match to local server instances in terms of network interface card (NIC) count, disk size and other metrics.
Next, conduct an Azure instance type comparison using the information above, and select an Azure instance that meets -- and slightly exceeds -- the workload's estimated requirements. The instance type should also support any special requirements. These can include cache oversizing, GPU needs, compute-intensive processing, or high memory or storage bandwidth.
Mapping workloads to a cloud instance isn't always a 1:1 relationship. Each instance has limits for disk size, I/O and NIC count. An instance size limits the number of virtual disks available. If an application needs a larger number of virtual disks, the admin might be forced to select a larger Azure instance even if other resources in that instance will go underutilized.
Use a tool like Azure Diagnostics, an agent in Azure Monitor, to measure the application's performance within the instance. This testing also verifies that key metrics are acceptable. If not, try the workload in another instance size or type. If you are migrating a workload to Azure, collect performance metrics prior to and following the migration. This enables the team to identify bottlenecks and adjust the deployment.
Azure deployments in production
A single instance is fine for temporary, low-priority test and development workloads, or low-priority business applications. It is not appropriate for mission-critical production workloads. If the application, network or underlying hardware fails, the workload becomes unavailable. Production workload deployments in Azure require multiple VMs arranged in an availability set, known as a cluster. Azure does not support a service-level agreement for single VMs.
Azure instances can scale both vertically and horizontally. Vertical scaling means changing the VM size, usually to a larger one. This is best when a workload needs more resources. Horizontal scaling means adding instances to a cluster. This is helpful when single instances won't provide the needed compute power or handle the traffic, or when more availability and resilience is needed.
When possible, provision and manage resources together. Use Azure resource groups to simplify and organize billing. Then, monitor and manage those resources as a collected set. Take advantage of Azure diagnostics, such as basic health metrics, boot diagnostics and infrastructure diagnostic logs. Logging and diagnostics can be vital to troubleshoot workload problems and improve deployments.
When provisioning disk storage for latency-sensitive workloads, consider SSD options, storage capacity and throughput. While a single storage account can support up to 20 VMs, I/O limits can impair performance when multiple VMs try to access storage at the same time. Group disks and apply striping to the group to boost capacity and IOPS for more demanding applications.
Provision an instance, storage and other resources, in an Azure region or location that is closest to the workload's users. This minimizes latency and improves performance. Some instance types may not be available in all regions everywhere. Also, some instances are promotional, such as the H-series Promo instances for HPC, and may only be available for a limited time. Review Microsoft's catalog of available instance types for the most up-to-date availability and pricing.