AWS R3.large 和 R4.large 實例上奇怪的 IOPS 性能
我在 Windows Server 2012R2 映像上使用了 4 個 10GB GP2 EBS 捲和 RAID0,如下所述:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/raid-config.html我使用的實例類型是 R3。大的
當突發池已滿時,我期望看到 4*3000 (12K IOPS),但我始終只能達到 7480 IOPS。沒關係。
之後,我將實例類型更改為 R4.large,它應該使用更新版本的 CPU(broadwell 而不是 Ivy Bridge),而且很可能更快。我保持其他一切相同,相同的磁碟、相同的作業系統、相同的測試:性能比 R3.large 差,大約為 6480 IOPS。
這裡有什麼問題?為什麼同一實例組(R-“Memory Intensive”)的較新一代的性能會比以前更差?
您的約束似乎來自實例類型的網路限制,而不是 EBS 本身。
需要在兩行之間進行一些閱讀,但EBS 優化實例 文件講述了一個有趣的故事——您的數字實際上比實例類型聲稱能夠支持的估計 IOPS 更好。
EBS 優化實例有兩個網路路徑,其中一個專用於 EBS 連接,而不是只有一個網路路徑由進出實例的所有 IP 流量共享……所以雖然文件沒有明確說明這一點,但速度無論實例是否經過 EBS 優化,似乎都是相同的——不同之處在於,對於優化的實例,EBS 流量不必共享相同的管道。實例的總頻寬翻了一番,一半分配給 EBS,一半分配給其他所有內容。
您提到使用 r3.large 實例,但表中未顯示…但如果我們從 r3.xlarge 向後推斷,則其中的數字非常小。
如文件中所述,IOPS 估計值是*“基於 100% 只讀工作負載的四捨五入近似值”*,並且由於所列速度的連接是全雙工的,因此混合讀取和寫入的數字可能會更大.
type network mbits/s mbytes/s estimated peak IOPS r4.large 400 50 3,000 r4.xlarge 800 100 6,000 r3.large 250 31.25 2,000 (ratio-based speculation) r3.xlarge 500 62.5 4,000
通過掃描 500 GiB gp2 卷的前 512 MiB 來測試我的一個 r3.large 似乎證實了這個網路速度。這台機器不是 EBS 優化的,在執行這個測試時沒有處理任何有意義的工作負載。這與我之前對 r3.large 的觀察一致。一段時間以來,我的設計假設是這些機器只有大約 0.25 Gbit/s 的連接速度,但測試似乎值得重複。當然,這是一個 Linux 系統,但基本原則都應該成立。
# sync; echo 1 > /proc/sys/vm/drop_caches; dd if=/dev/xvdh bs=1M count=512 | pv -a > /dev/null 512+0 records in 512+0 records out 536870912 bytes (537 MB) copied, 14.4457 s, 37.2 MB/s [35.4MB/s]
這看起來很像約 250 兆比特/秒的網路連接,當您需要儲存吞吐量時,它的頻寬並不多。與直覺相反,如果您的工作負載適合 t2 CPU 積分模型,您實際上會從 t2 獲得比從 r3 獲得的更好的性能。