对 Azure 的高级存储 P30 磁盘进行基准测试

Nar*_*man 10 azure

我们正在高级存储支持的两个新标准 DS13(8 核,56 GB)虚拟机(均使用最新/默认 Windows 2012 R2 映像)上运行性能测试,并且在测试本地 SSD 性能时遇到了第 1 步。

我们了解到这些 VM 的 400GB 本地 SSD 中有 25% 可用作临时存储,另外 75% 用于高级存储缓存:http : //azure.microsoft.com/blog/2014/12/11/new-高级存储支持的虚拟机/

在剩下的 25% 中,我们希望看到以下方面的表现: http://www.brentozar.com/archive/2014/09/azure-really-60-faster/ http://azure.microsoft.com/blog /2014/10/06/d-系列-性能-预期/

...但 Crystal Disk Mark 显示它在爬行

               Sequential Read :     4.097 MB/s
              Sequential Write :     4.096 MB/s
             Random Read 512KB :     4.112 MB/s
            Random Write 512KB :     4.112 MB/s
        Random Read 4KB (QD=1) :     2.057 MB/s [   502.3 IOPS]
       Random Write 4KB (QD=1) :     2.057 MB/s [   502.2 IOPS]
       Random Read 4KB (QD=32) :     2.048 MB/s [   500.0 IOPS]
      Random Write 4KB (QD=32) :     2.047 MB/s [   499.7 IOPS]

  Test : 50 MB [D: 7.2% (8.1/112.0 GB)] (x5)
  Date : 2015/02/14 15:35:41
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)
Run Code Online (Sandbox Code Playgroud)

OS 磁盘的性能更好,但远不及 P20 磁盘所期望的 150 MB/s(假设这是为默认的 127GB OS 磁盘分配的)。

期待:

http://azure.microsoft.com/en-us/documentation/articles/storage-premium-storage-preview-portal/

看到:

           Sequential Read :    66.031 MB/s
          Sequential Write :    63.034 MB/s
         Random Read 512KB :    65.861 MB/s
        Random Write 512KB :    63.580 MB/s
    Random Read 4KB (QD=1) :     2.097 MB/s [   511.9 IOPS]
   Random Write 4KB (QD=1) :     2.047 MB/s [   499.7 IOPS]
   Random Read 4KB (QD=32) :     2.086 MB/s [   509.3 IOPS]
  Random Write 4KB (QD=32) :     2.078 MB/s [   507.4 IOPS]

  Test : 50 MB [C: 12.9% (16.4/127.0 GB)] (x5)
  Date : 2015/02/14 15:46:35
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)
Run Code Online (Sandbox Code Playgroud)

P30磁盘(带有只读缓存)的性能也好不到哪里去

           Sequential Read :   204.567 MB/s
          Sequential Write :    39.677 MB/s
         Random Read 512KB :   204.549 MB/s
        Random Write 512KB :    34.865 MB/s
    Random Read 4KB (QD=1) :    20.951 MB/s [  5114.9 IOPS]
   Random Write 4KB (QD=1) :     1.666 MB/s [   406.7 IOPS]
   Random Read 4KB (QD=32) :    20.893 MB/s [  5100.9 IOPS]
  Random Write 4KB (QD=32) :    20.944 MB/s [  5113.4 IOPS]

  Test : 50 MB [E: 0.0% (0.2/1023.0 GB)] (x5)
  Date : 2015/02/14 15:22:59
    OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)
Run Code Online (Sandbox Code Playgroud)

与我们当前在D13s上部署主机缓存的 CloudDrive 相比(注意 4KB 随机读取的性能):

           Sequential Read :   136.711 MB/s
          Sequential Write :    10.210 MB/s
         Random Read 512KB :   190.744 MB/s
        Random Write 512KB :     9.063 MB/s
    Random Read 4KB (QD=1) :    10.813 MB/s [  2639.8 IOPS]
   Random Write 4KB (QD=1) :     0.508 MB/s [   107.5 IOPS]
   Random Read 4KB (QD=32) :   106.533 MB/s [ 26009.1 IOPS]
  Random Write 4KB (QD=32) :     9.363 MB/s [  2286.0 IOPS]

  Test : 50 MB [F: 4.1% (24.9/600.0 GB)] (x5)
  Date : 2015/02/14 20:25:01
  OS : Windows Server 2012 Datacenter (Full installation) [6.2 Build 9200] (x64)
Run Code Online (Sandbox Code Playgroud)

这是 SQLIO 为本地 SSD 报告的内容:

C:\Program Files (x86)\SQLIO>sqlio -dD
sqlio v1.5.SG
1 thread reading for 30 secs from file D:testfile.dat
        using 2KB IOs over 128KB stripes with 64 IOs per run
size of file D:testfile.dat needs to be: 8388608 bytes
current file size:      0 bytes
need to expand by:      8388608 bytes
expanding D:testfile.dat ... done.
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:   499.38
MBs/sec:     0.97
Run Code Online (Sandbox Code Playgroud)

对于 P30:

C:\Program Files (x86)\SQLIO>sqlio -dE
sqlio v1.5.SG
1 thread reading for 30 secs from file E:testfile.dat
        using 2KB IOs over 128KB stripes with 64 IOs per run
size of file E:testfile.dat needs to be: 8388608 bytes
current file size:      0 bytes
need to expand by:      8388608 bytes
expanding E:testfile.dat ... done.
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:  5103.03
MBs/sec:     9.96
Run Code Online (Sandbox Code Playgroud)

为 P30 所宣传的 5000 IOPS 能够维持下去,但是每个磁盘 200 MB/s 的吞吐量呢?

注意:尝试使用 ReadWrite 缓存策略创建 P30 数据磁盘会导致:

Update-AzureVm:BadRequest:DataVirtualHardDisk 不支持磁盘缓存设置 ReadWrite。

任何指导将不胜感激:

  • 为什么本地 SSD 存储被限制在 500 IOPS 和 1-4 MB/s 吞吐量?
  • 我们如何在 P30 上看到读取时达到 200MB/s 的写入速度,要运行的测试是什么?
  • MS:您能否发布我们可以运行以验证最大限制的 I/O 基准测试?

小智 8

回答您的问题:

  1. 本地存储限制为 500 IOPS @8KB。这些限制是一个错误,很快就会大幅提高。
  2. 要在写入时达到 200 MB/秒,您需要 (a) 使用至少 40KB 的块大小(否则您首先会遇到 5,000 IOPS 限制),以及 (b) 使用至少 25 的队列深度(对于 40KB块,随着块大小的增加,您可以使用较小的队列深度)。
  3. 我们同意,如果我们发布您可以用来验证限制的基准,那就太好了。如果我们这样做,它可能不会直到我们退出预览。

David Berg - Microsoft Azure 性能团队