了解磁碟效能特性

已完成

應用程式效能通常取決於應用程式讀取和寫入資料的速度。 若要了解如何改善應用程式效能,您必須先了解如何測量效能,以及影響效能的設定和選擇。

碟碟效能特性

若要選擇正確的磁碟類型,您必須了解效能指標。 下列指標表示效能:

  • IOPS: IOPS 是指應用程式在一秒內傳送到磁碟的要求數。 IOPS 會直接影響您的應用程式效能。 某些應用程式 (例如零售網站) 需要高 IOPS 來管理所有小型和隨機的輸入/輸出 (I/O) 要求,這些要求必須快速處理,才能讓網站保持在可回應的狀態。 效能較高的磁碟具有較高的 IOPS 值。
  • 輸送量: 輸送量是指應用程式在指定間隔內傳送到磁碟的資料量。 輸送量也稱為資料傳輸速率,並以 MB/秒來測量。 如果您的應用程式正在執行大型資料區塊的 I/O,則需要高輸送量。 效能較高的磁碟具有較高的輸送量。
  • 延遲: 延遲表示應用程式將要求傳送到磁碟並收到回應所花費的時間。 延遲會對實際 IOPS 造成限制。 例如,(佇列深度為 1) 如果磁碟可以處理 5,000 IOPS,但每個作業需花費 10 毫秒來處理,則應用程式會因為處理時間而有每秒最多處理 100 個作業的限制。 如果您啟用 ReadOnly 主機快取,則會大幅改善延遲。

IOPS 和輸送量

輸送量和 IOPS 有直接的關聯性。 直接變更其中一個會影響另一個。 若要取得理論上的輸送量限制,您可以使用下列公式:IOPS × I/O 大小 = 輸送量。 規劃您的應用程式時,請務必考量這兩個值。

對於 Ultra 磁碟和進階 SSD v2 受控磁碟,其運作方式稍有不同,因為您可以獨立調整磁碟大小、IOPS 和輸送量。 您可以在執行時間調整 Ultra 磁碟和進階 SSD v2 受控磁碟的 IOPS 或輸送量,而不需中斷磁碟與 VM 的連線。

Ultra 磁碟 IOPS

Ultra 磁碟支援 300 IOPS/GiB 的 IOPS 限制,每個磁碟的 IOPS 最大值上限為 160,000。 若要達到磁碟的目標 IOPS,請確定選取的磁碟 IOPS 小於 VM IOPS 限制。

一般可用大小的單一 VM 目前的 IOPS 上限為 160,000。 具有更高 IOPS 的 Ultra 磁碟可作為共用磁碟,以支援多個 VM。

每個磁碟保證的最低 IOPS 為 1 IOPS/GiB,整體基準最小值為 100 IOPS。 例如,如果您佈建一個 4-GiB Ultra 磁碟,則該磁碟的最小 IOPS 為 100,而不是 4。

Ultra 磁碟輸送量

對於每個佈建的 IOPS,單一 Ultra 磁碟的輸送量上限為 256 KiB/秒,最多可達每個磁碟 4000 MB/秒 (其中,MB/秒 = 10 ^6 位元組/秒)。 針對每個佈建的 IOPS,每個磁碟的保證最小輸送量為 4KiB/s,整體基準最小為 1 MB/秒。

進階 SSD v2 IOPS

所有進階 SSD v2 磁碟都有免費的 3000 基準 IOPS。 6 GiB 之後,磁碟的最大 IOPS 可能會以每個 GiB 500 的速率增加,最多 80,000 IOPS。 因此,8 GiB 磁碟最多可以有 4,000 IOPS,而 10 GiB 最多可以有 5,000 IOPS。 若要能夠在磁碟上設定 80,000 個 IOPS,該磁碟必須至少有 160 GIB。 將 IOPS 增加到 3000 以上,會提高磁碟的價格。

進階 SSD v2 輸送量

所有進階 SSD v2 磁碟都有免費的 125 MB/秒基準輸送量。 6 GiB 之後,每個設定 IOPS 可設定的最大輸送量增加 0.25 MB/秒。 如果磁碟有 3,000 IOPS,其可設定的最大輸送量為 750 MB/秒。 若要提高此磁碟超過 750 MB/秒的輸送量,必須增加其 IOPS。 例如,如果您將 IOPS 增加到 4,000,則可以設定的最大輸送量為 1,000。 1,200 MB/秒是具有 5,000 IOPS 或更多的磁碟支援最大輸送量。 將輸送量增加到 125 MB/秒以上,會提高磁碟的價格。

虛擬機器 I/O 上限

既然您已知道哪些磁碟可在 Azure 中使用,您必須讓每個 VM 與正確的磁碟類型相配。 VM 有自己的儲存體 IOPS 限制,這會在合併磁碟 IOPS 時影響整體應用程式效能。

如果您並未正確地針對應用程式所需的儲存體效能調整 VM 大小,VM 本身就會變成瓶頸。

例如,假設應用程式提出的要求需要 15,000 IOPS。 您已佈建 Standard_D8s_v3 VM,其中包含一個 P30 OS 磁碟和兩個具有 P40 SKU 的進階 SSD 資料磁碟。 每個資料磁碟都可以處理 7,500 IOPS,最後可以滿足應用程式的需求,但 VM 本身具有 12,800 IOPS 的上限,也就是應用程式將取得的實際 IOPS。 下圖說明這個範例。

Diagram that depicts virtual machine input output capping.

上述範例中所述的案例稱為「VM I/O 上限」。 在此情節中,應用程式要求磁碟可以管理的輸送量和 IOPS 數量,但 VM 無法滿足這些需求。

您可以使用下列計量來診斷 VM I/O 上限所造成的效能問題:

  • VM 使用的快取 IOPS 百分比
  • VM 使用的快取頻寬百分比
  • VM 使用的取消快取 IOPS 百分比
  • VM 使用的取消快取頻寬百分比

磁碟 I/O 上限

您可能會遇到儲存體解決方案不符合應用程式需求的其他情況。 但是,如果您針對磁碟選取不正確的效能層級,可能就會造成瓶頸。

請考慮應用程式從 VM 要求 15,000 IOPS 的相同範例,而您已選擇下列設定:

  • 具有 25,600 IOPS 的標準 D16s_v4
  • 具有 2,300 IOPS 的 P20 OS 磁碟
  • 兩個 P30 資料磁碟,每個磁碟都支援 5,000 IOPS

在此情節中,應用程式的需求分成三個不同的要求:

  • 從 OS 磁碟要求 2,300 IOPS
  • 從每個資料磁碟要求 5,000 IOPS

VM 將傳回給應用程式的 IOPS 總數是 12,300,這是 OS 和資料磁碟所提供的每個 IOPS 的總和。

當磁碟本身不符合應用程式需求時,此案例稱為「磁碟 I/O 上限」

Diagram that depicts disk input output capping.

若要診斷磁碟 I/O 上限,請使用下列計量:

  • 已使用的資料磁碟 IOPS 百分比
  • 已使用的資料磁碟頻寬百分比
  • 已使用的 OS 磁碟 IOPS 百分比
  • 已使用的 OS 磁碟頻寬百分比

磁碟快取

快取是用來儲存資料的特製化元件,通常會儲存在記憶體中,讓應用程式可以更快速地存取資料。 快取中的資料通常是先前已讀取的資料,或是先前計算所產生的資料。 目標是讓應用程式從快取中存取資料的速度比從磁碟快。 Ultra 磁碟和進階 SSD v2 上無法使用磁碟快取。

快取使用特製化 (有時成本高昂) 的暫時儲存體,相較於永久儲存體,具有更快速的讀取和寫入效能。 由於快取儲存體通常是有限,您可能需要決定對哪些資料作業進行快取的效益最大。 但是,即使快取可供廣泛使用 (例如在 Azure 中),還是必須先知道每個磁碟的工作負載模式,才能決定要使用哪種快取類型。

讀取快取會嘗試加速資料「擷取」。 應用程式不是從永久儲存體中讀取資料,而是從更快速的快取中讀取資料。

請務必注意,當讀取佇列有一些可預測性時 (例如一組循序讀取),則十分適用讀取快取。 針對隨機 I/O,由於您要存取的資料散佈在儲存體中,因此使用快取的效益很小或根本沒有效益,甚至可能會降低磁碟效能。

寫入快取會嘗試加快「將資料寫入」永續性儲存體的速度。 透過使用寫入快取,應用程式可以考慮應儲存的資料。

事實上,使用寫入快取時,資料會在快取中排入佇列,等候寫入磁碟。 您可以想像,此機制可能是潛在的問題點,例如系統在快取資料寫入之前就關閉。 有些系統 (例如 SQL Server) 安排工作將快取資料寫入永續性磁碟儲存體。

VM 的快取和未快取限制

既然您已了解快取如何改善磁碟上資料的讀取或寫入效能,您應該注意快取如何影響 VM 效能。

VM 的效能取決於根據 VM 大小所加諸的 IOPS 和輸送量限制。 進階層中的所有 VM 都有不同的 IOPS 和輸送量限制 (以已快取和未快取的設定為基礎)。 您可以啟用 VM 主機快取來改善 VM 的效能,以符合 IOPS 和輸送量的較高需求。

下表列出範例來說明快取和未快取的磁碟輸送量和頻寬的效能差異。

VM 大小名稱 最大快取和暫存儲存體輸送量:IOPS/MB/秒 (快取大小,以 GiB 為單位) 最大未快取的磁碟輸送量 IOPS/MB/秒
Standard_D2s_v3 4,000/32 (50) 3,200/48
Standard_D4s_v3 8,000/64 (100) 6,400/96
Standard_D8s_v3 16,000/128 (200) 12,800/192
Standard_D64s_v3 128,000/1,024 (1,600) 80,000/1,200

主機快取可協助您避免發生 VM 瓶頸的情況。

在先前的 VM I/O 上限範例中,應用程式需要 15,000 IOPS。 這兩個資料磁碟都可以處理該需求,但 Standard_D8s_v3 VM 只能在未快取狀態下提供 12,800 IOPS。

如果您在 Standard_D8s_v3 VM 上設定主機快取,您可以取得16,000 快取的 IOPS,這比應用程式所要求的還多。