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)
- sudo hdparm -tT /dev/sdb
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
- sudo hdparm -t --direct /dev/sdb
Timing O_DIRECT disk reads: 46 MB in 3.74 seconds = 12.29 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, 246.32 s, 6.7 MB/s
作为比较,我在 Rackspace 上的另一个虚拟机(4 个 vCPU,1GB 内存,Ubuntu 12.04 LTS) 具有以下结果:
- sudo hdparm -tT /dev/xvda
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
- sudo hdparm -t --direct /dev/xvda
Timing O_DIRECT disk reads: 162 MB in 3.12 seconds = 52.00 MB/sec
- sudo dd if=/dev/zero of=test bs=8k count=200000; sudo rm -f 测试
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 而设计,但覆盖了磁盘。
我正在评估 Azure,我创建的 Ubuntu VM 的磁盘性能似乎出乎意料地低。我注意到这一点是因为与我正在使用的另一个 Rackspace VM 相比,数据库导入花费的时间要长得多。而且我不确定我是否遗漏了任何重要的配置,或者只是我以错误的方式查看磁盘性能。这是我的测试和结果:
标准 A1 VM(1 核,1.75GB 内存,Ubuntu 12.04 LTS)
- sudo hdparm -tT /dev/sdb
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
- sudo hdparm -t --direct /dev/sdb
Timing O_DIRECT disk reads: 46 MB in 3.74 seconds = 12.29 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, 246.32 s, 6.7 MB/s
作为比较,我在 Rackspace 上的另一个虚拟机(4 个 vCPU,1GB 内存,Ubuntu 12.04 LTS) 具有以下结果:
- sudo hdparm -tT /dev/xvda
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
- sudo hdparm -t --direct /dev/xvda
Timing O_DIRECT disk reads: 162 MB in 3.12 seconds = 52.00 MB/sec
- sudo dd if=/dev/zero of=test bs=8k count=200000; sudo rm -f 测试
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 而设计,但覆盖了磁盘。