[英]IOPS vs Throughput. Which one to use while choosing AWS EBS
在選擇合適的 EBS 卷類型時,我需要確定IOPS 或吞吐量是更好的性能指標。
問題是我不完全理解在哪個實際場景中他們每個人都比另一個更好。
This doc 說“頻繁的讀/寫操作和小的 I/O 大小”非常適合 IOPS。
為什么吞吐量不是“小 I/O 大小的頻繁讀/寫操作”的完美衡量標准?
讓我們試着解釋什么是吞吐量和 I/O。
I/O 是訪問磁盤的次數。 每次需要讀取文件時,您都需要“至少”訪問該文件一次。 然而,內容是以“塊”讀取的,每次讀取“塊”時都會請求一個新的 I/O。 想象一下咬巧克力棒,您至少需要訪問一次巧克力棒,然后開始咬 (I/O) 直到結束。 每一口都是一個 I/O。 您需要多個 I/O 才能吞下整個酒吧。
IOPS 是每秒 I/O。 速度。 所以基本上我們可以多快地在巧克力棒中完成每一口。 IOPS EBS 是專門用於執行快速咬入的卷:Ñam-Ñam-Ñam vs Ñam------Ñam-----Ñam
吞吐量是您在每個 I/O 中讀取的信息量。 舉個例子,你可以用兩種不同的方式吃整個巧克力棒,小口(小吞吐)或大口(大吞吐),這取決於你的嘴巴大小。 吞吐量 EBS 卷專門用於執行大咬人:Ñam 與 Ñaaaaaaaam
I/O 和吞吐量是否相關? 當然。 如果您必須從 EBS 讀取一個大文件,並且您的吞吐量很小(也就是說,您的嘴巴很小,所以您的咬口很小),那么您需要更頻繁地訪問 (I/O),直到文件被完全讀取。 Ñam-Ñam-Ñam-Ñam
另一方面,如果你有一張大嘴(大吞吐量),那么你需要更少的咬和更少的 I/O。 Ñaaaam---Ñaaaam
所以他們可以以某種方式相互平衡,但是......有一些極端情況:
a) 想象一下,你有一個非常小的文件(或巧克力納米棒)。 --- 在這種情況下,即使是最小的嘴也足夠了。 無論是大嘴還是小嘴,您只需咬一口就可以吃掉整個納米棒。
b) 想象一下,你有一桶無數細小的文件(或巧克力納米棒)——在這種情況下,即使是最小的嘴也足以吞下每一塊。 大或小吞吐量不會給你更好的性能。 但是,擁有 IOPS(每秒 I/O)將提高您的性能。 吞吐量 EBS 卷的性能將比 IOPS 卷差得多。
c) 想象一下,你有一大堆大文件。 --- 所以你需要大文件的吞吐量,你需要 IOPS 來進行多次訪問。 那么也許你應該轉向 EBS 通用(它已經爆發了)
有了這個,你應該能夠制定一個答案,但對我來說:
但是對於高 I/O 大小的頻繁操作呢? --> EBS 通用。 這里的“高”和“頻繁”要求平衡的音量。
不頻繁的高 I/O 操作? --> EBS 吞吐量。 你需要最大的嘴巴。
小 I/O 大小的操作不頻繁?--> 警告! 什么是“小”尺寸? 如果它們真的很小,那么我可能會轉向 IOPS,因為大/小嘴(吞吐量)不會產生很大的不同。 如果那些“不頻繁”變成“頻繁”(更多用戶?更復雜?)將受益於 IOPS。 也許您也可以使用 EBS 通用型來生存。 但是,第二個警告,“不頻繁操作”是什么意思是這些文件不經常訪問?在這種情況下,您應該檢查冷硬盤
與往常一樣,建議只是建議……最好的(因為您可能會對自己的“小”感感到驚訝)是在您有疑問的情況下測試性能。
用例:
(只是為了補充 Victor 的出色回答)從AWS 基礎核心概念文檔中,不同存儲服務在延遲、吞吐量和 IOPS 方面的性能特征如下。
如果您使用的是塊存儲服務 (Amazon EBS):
如果您使用的是文件系統服務(Amazon EFS 和 Amazon FSx 系列)
如果您使用的是 object 商店 (Amazon S3)
如果您使用的是檔案商店
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.