Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

計算佇列深度總覽

貢獻者

您可能需要調整主機上的FC佇列深度、以達到每個節點和FC連接埠Fan-in的ITN最大值。LUN的最大數目和可連線至FC連接埠的HBA數目、會受到FC目標連接埠上可用佇列深度的限制。

關於這項工作

佇列深度是指一次可在儲存控制器上排入佇列的I/O要求數(SCSI命令)。從主機啟動器HBA到儲存控制器目標介面卡的每個I/O要求都會使用佇列項目。一般而言、較高的佇列深度等於較佳的效能。但是、如果儲存控制器達到最大佇列深度、則儲存控制器會傳回QFULL回應來拒絕傳入命令。如果有大量主機正在存取儲存控制器、您應該謹慎規劃、避免QFULL情況、這會大幅降低系統效能、並可能導致某些系統發生錯誤。

在具有多個啟動器(主機)的組態中、所有主機的佇列深度都應該相似。由於透過相同目標連接埠連接至儲存控制器的主機之間佇列深度不均、因此佇列深度較小的主機無法存取佇列深度較大的主機所提供的資源。

以下是「t調整」佇列深度的一般建議:

  • 對於中小型系統、請使用32個HBA佇列深度。

  • 對於大型系統、請使用128個HBA佇列深度。

  • 對於例外情況或效能測試、請使用佇列深度256以避免可能的佇列問題。

  • 所有主機都應將佇列深度設定為類似值、以提供對所有主機的同等存取權。

  • 為了避免效能損失或錯誤、儲存控制器的目標FC連接埠佇列深度不可超過。

步驟
  1. 計算連接到一個FC目標連接埠之所有主機中的FC啟動器總數。

  2. 乘以128。

    • 如果結果小於2、048、請將所有啟動器的佇列深度設為128。 您有15台主機、其中一台啟動器連接至儲存控制器上的兩個目標連接埠。15 x 128 = 1、920。由於1、920低於總佇列深度限制2、048、因此您可以將所有啟動器的佇列深度設定為128。

    • 如果結果大於2、048、請前往步驟3。 您有 30 部主機、其中一個啟動器連接至儲存控制器上的兩個目標連接埠。30 x 128 = 3、840。因為3、840大於佇列深度總限制2、048、所以您應該在步驟3下選擇其中一個選項進行補救。

  3. 請選擇下列其中一個選項、將更多主機新增至儲存控制器。

    • 選項1:

      1. 新增更多FC目標連接埠。

      2. 重新分配FC啟動器。

      3. 重複步驟 1 和 2 。
        所需的佇列深度3、840超過每個連接埠的可用佇列深度。若要解決此問題、您可以將雙埠FC目標介面卡新增至每個控制器、然後重新分區FC交換器、讓30部主機中的15部連接至一組連接埠、其餘15部主機則連接至第二組連接埠。接著、每個連接埠的佇列深度減至15 x 128 = 1、920。

    • 選項 2 :

      1. 根據預期的I/O需求、將每個主機指定為「大型」或「大型」。

      2. 將大型啟動器的數量乘以128。

      3. 將小型啟動器的數量乘以32。

      4. 將兩個結果一起新增。

      5. 如果結果小於2、048、請將大型主機的佇列深度設為128、而小型主機的佇列深度設為32。

      6. 如果結果仍大於每個連接埠2、048、請減少每個啟動器的佇列深度、直到佇列總深度小於或等於2、048為止。

        註

        若要預估達到特定每秒I/O處理量所需的佇列深度、請使用下列公式:

        所需佇列深度=(每秒I/O數)x(回應時間)

        例如、如果回應時間為3毫秒、每秒需要40、000 I/O、則所需佇列深度= 40、000 x(.003)= 120。

如果您決定將佇列深度限制為基本建議32、則可連線至目標連接埠的主機數量上限為64。不過、如果您決定佇列深度為128、則最多可將16台主機連接至一個目標連接埠。佇列深度越大、單一目標連接埠可支援的主機就越少。如果您的需求無法影響佇列深度、則應該有更多目標連接埠。

所需的佇列深度3、840超過每個連接埠的可用佇列深度。您有10台「大型」主機具有高儲存I/O需求、20台「大型」主機的I/O需求較低。將大型主機上的啟動器佇列深度設為128、並將小型主機上的啟動器佇列深度設為32。

您產生的佇列總深度為(10 x 128)+(20 x 32)= 1、920。

您可以在每個啟動器之間平均分配可用的佇列深度。

每個啟動器產生的佇列深度為2、048÷30 = 68。