Google计算引擎虚拟机磁盘很慢



我们刚刚切换到谷歌计算引擎,遇到磁盘速度的大问题。大约是Linode的5%甚至更糟。写入从未超过20M/s,读取从未超过10M/s。大多数情况下,写是15M/s,读是5M/s。

我们当前运行的是n1-highmem-4 (4 vCPU, 26 GB内存)机器。CPU和;内存不是瓶颈。只需运行一个脚本,从PostgreSQL数据库读取行,处理它们,然后写回PostgreSQL。它只是用于批量更新数据库行的通用作业。尝试运行20个进程来利用多核,但总体进度仍然很慢。

我们认为磁盘可能是瓶颈,因为流量异常低。

最后我们决定做基准测试。我们发现它不仅很慢,而且似乎有一个可重复的大错误:

  1. 创建,连接实例
  2. 运行基准测试至少三次:

    dd if=/dev/zero bs=1024 count=5000000 of=~/5Gb.file
    

我们发现它变得非常慢,根本无法完成基准测试。

持久磁盘的性能与磁盘本身和所绑定的虚拟机的大小成正比。磁盘(或虚拟机)越大,性能越高,所以从本质上讲,您为磁盘或虚拟机支付的价格不仅是磁盘/CPU/RAM,还包括IOPS和吞吐量。

引用持久磁盘文档:

持久磁盘的性能取决于卷的大小和您选择的磁盘类型。更大的卷可以实现更高的I/O级别比更小的体积。没有单独的I/O费用作为成本I/O能力包含在持久磁盘的价格中。

持久性硬盘性能描述如下:

  • IOPS性能限制随持久磁盘卷的大小线性增长。
  • 吞吐量限制也线性增长,直到持久性磁盘所连接的虚拟机的最大带宽。
  • 较大的虚拟机比较小的虚拟机具有更高的带宽限制。

页面上还有一个更详细的定价图表,显示了您购买的每GB空间的价格(以下数据是截至2014年8月的最新数据):

                                  Standard disks     SSD persistent disks
Price (USD/GB per month)                $0.04               $0.025
Maximum Sustained IOPS
  Read IOPS/GB                           0.3                  30
  Write IOPS/GB                          1.5                  30
Read IOPS/volume per VM                 3,000               10,000
Write IOPS/volume per VM               15,000               15,000
Maximum Sustained Throughput
  Read throughput/GB (MB/s)              0.12                 0.48
  Write throughput/GB (MB/s)             0.09                 0.48
Read throughput/volume per VM (MB/s)     180                  240
Write throughput/volume per VM (MB/s)    120                  240

和页面上的一个具体示例,说明特定大小的磁盘将给您带来什么:

作为如何使用性能图表来确定的示例您想要的磁盘卷,考虑500GB的标准持久性磁盘将给你:

  • (0.3 × 500) = 150个小随机读取
  • (1.5 × 500) = 750个小的随机写入
  • (0.12 × 500) = 60 MB/s的大顺序读取
  • (0.09 × 500) = 45 MB/s的大顺序写

最新更新