Hi,
I am seeing poor performance from SQL server on an Azure IaaS VM I have recently deployed. Below I have detailed as much as possible about the setup, as anyone else seeing poor disk performance?
Overview:
First thing I did was to configure an affinity group in the North Europe region.
I then created a storage account to hold the Azure VM operating system and its associated data disks. The storage account is configured as locally redundant.
Then I deployed an Azure VM from the Windows Server 2008 R2 template and installed SQL Server 2012 standard SP1 CU9. The specification of the Azure
VM is a A6 (4 cores and 28GB RAM).
Following the best practice article (would love to share the link but this forum won't let me!!) from Microsoft I have configured the disks as follows:
- System databases, error and trace logs are on a dedicated data disk with host caching set to none and 64KB cluster size.
- User databases are on a dedicated disk with host caching set to none and 64KB cluster size.
- User database log are on a dedicated disk with hosting caching set to none and 64KB cluster size.
- I have configure 4 tempDB data files and placed them on a dedicated disk with host caching set to none and 64KB cluster size. The tempDB files have been pre-sized to 1GB a piece.
- The tempDB log file is on a dedicated disk too with host caching set to none and 64KB cluster size.
- The SQL server account is configured to lock pages in memory too.
Memory utilisation of the sqlservr.exe process never exceeds ~297,000KB not sure if this is a red herring though?
I have created a test SQL script which creates the Adventure Works database and inserts a number of records, this takes 39 seconds to complete whereas our on-premises SQL server takes 14 seconds; the Azure IaaS VM is of a higher specification than the on-premises SQL VM.
Performance monitor output from test runs shows the following:
- Read latency – on the disk which holds the SQL data files I’m seeing an average of 60ms and a maximum of 165ms when the database is dropped and created.
- Write latency – on the log disk which holds the SQL log files I’m seeing an average of 8ms and a maximum of 11ms and the tempDB log file is showing 11ms average and a maximum of 28ms.
- No. of IOPs
- Read – maximum IOPs observed were 105 on the SQL data disk
- Write – maximum IOPs observed were 132 on the SQL log disk
- No. of bytes written to disk per second – 1.7MB written to the SQL data disk
- No. of bytes read from disk per second – 900KB read from the SQL data disk
Any help or guidance on this would be appreciated.
Thanks
Dom