Azure 上 Ubuntu VM 的磁盘性能低下

Low disk performance in Ubuntu VM on Azure

我正在评估 Azure,我创建的 Ubuntu VM 的磁盘性能似乎出乎意料地低。我注意到这一点是因为与我正在使用的另一个 Rackspace VM 相比,数据库导入花费的时间要长得多。而且我不确定我是否遗漏了任何重要的配置,或者只是我以错误的方式查看磁盘性能。这是我的测试和结果:

标准 A1 VM(1 核,1.75GB 内存,Ubuntu 12.04 LTS)

Timing cached reads: 6892 MB in 2.00 seconds = 3451.31 MB/sec

Timing buffered disk reads: 40 MB in 3.37 seconds = 11.88 MB/sec

Timing O_DIRECT disk reads: 46 MB in 3.74 seconds = 12.29 MB/sec

1638400000 bytes (1.6 GB) copied, 246.32 s, 6.7 MB/s

作为比较,我在 Rackspace 上的另一个虚拟机(4 个 vCPU,1GB 内存,Ubuntu 12.04 LTS) 具有以下结果:

Timing cached reads: 5960 MB in 1.99 seconds = 2990.32 MB/sec

Timing buffered disk reads: 200 MB in 3.05 seconds = 65.66 MB/sec

Timing O_DIRECT disk reads: 162 MB in 3.12 seconds = 52.00 MB/sec

1638400000 bytes (1.6 GB) copied, 13.7139 s, 119 MB/s

虽然 Azure VM 具有更好的缓存读取性能,但它的磁盘读取(缓冲和直接)非常慢,而磁盘写入(或复制)则更差。由于 Azure 上的 Linux 虚拟机没有默认配置交换文件,我手动创建了一个 5GB 的交换文件(在 /dev/sdb 上),但它似乎没有帮助。

然后我使用 标准 D3 VM(4 核,14GB 内存,Ubuntu 12.04 LTS) 在 Azure 上进行了更多测试。在 /dev/sdb 上执行上述命令时,性能非常惊人,我猜是因为本地 SSD?但是,当我将额外的磁盘附加到该 D3 VM 并在新创建的 /dev/sdc 分区 (ext4) 上运行相同的命令时,结果与 A1 实例一样糟糕。

不确定这是否是在 Linux 中测试磁盘性能的最佳方式。但值得注意的是,Azure VM 在恢复数据库备份时要慢得多。 Microsoft Azure 支持页面建议我们可以在这里使用“azure”标签提问,所以...欢迎任何评论。

我删除了之前附加到标准 D3 VM 的磁盘,然后按照相同的过程附加了一个新磁盘。不知何故,新连接的磁盘具有更好的性能,如下所示 标准 D3 VM(4 核,14GB 内存,Ubuntu 12.04 LTS)

  • sudo hdparm -tT /dev/sdc

Timing cached reads: 13054 MB in 1.99 seconds = 6546.15 MB/sec

Timing buffered disk reads: 68 MB in 3.01 seconds = 22.57 MB/sec

  • sudo hdparm -t --direct /dev/sdc

Timing O_DIRECT disk reads: 98 MB in 3.03 seconds = 32.35 MB/sec

  • sudo dd if=/dev/zero of=/mnt/test bs=8k count=200000; sudo rm -f /mnt/test

1638400000 bytes (1.6 GB) copied, 1.5689 s, 1.0 GB/s

不太清楚为什么。但是我的问题不存在了。因此关闭这个问题。

D系列是基于SSD的。 A 上的 /mnt 或 /mnt/resource 也将基于 SSD 并且在服务器本地,但不是持久的。云供应商有关于设置条带化或 RAID0(或 10)以增加 IOPS 的指南。对于 Azure,我建议看一下 this guide,它专为 MySQL 而设计,但覆盖了磁盘。