在調查存儲性能問題和瓶頸的時候,你應該調查從應用程序和客戶操作系統到存儲陣列的各個級別的存儲堆棧的排隊情況。在這篇文章中,我將只討論在vSphere存儲堆棧中的隊列。

對于大多數用戶,默認的三個主要隊列的隊列大小在vSphere是普遍合適的,不需要任何調整。但是,對于那些在他們的環境中具有一個高層次整合或非常密集的存儲工作負載的客戶,一些在vSphere中的隊列可能需要進行調整,以獲得最佳性能。下圖顯示了在vSphere的三個主要隊列,其典型的默認隊列大小。正如你可以看到,I/O請求流入每個虛擬機隊列中,然后流入每個HBA隊列,最后適配器隊列中的I/O流入每個LUN隊列。從默認的尺寸,你可以看到每個虛擬機能夠發出32個并發I/O請求,而下方的適配器隊列是相當大的,通??梢越邮芩械腎/O請求,但在它下面的LU??N隊列通常本身只有大小為32。這意味著,如果多個虛擬機共享一個LUN,LUN隊列可能不夠大,不足以支持所有的共享LUN的虛擬機所發送的并發I/O請求。

為什么虛擬機隊列和LUN隊列的設置只有32?設置限制的原因是為了防止一個虛擬機或vSphere主機,竊取所有的存儲性能,用它自己的 I/O請求占據了存儲,所謂的“吵鬧的鄰居”問題。例如,一個存儲陣列LUN可以由多個vSphere主機共享,通過限制每個vSphere主機在這個 LUN上只有32個并發I/O,一個vSphere主機會飽和整個LUN而其他主機卻挨餓的風險大大減少了。

然而,任意設置硬盤的限制是上世紀的處事方式。今天使用的功能,如存儲I/O控制(SIOC),vSphere通過??一個更優雅的和公平的機制也可以減輕虛擬機和vSphere主機遇到吵鬧的鄰居的風險。因此,今天,如果你都注意到,您的設備隊列,不斷提高他們的最高限額,我們建議增加設備/ LUN的深度和使用SIOC,以幫助減輕任何潛在的吵鬧的鄰居問題。一個快速的小紙條,SIOC通過修改設備/ LUN隊列的深度來控制存儲工作負載,但SIOC不可以增加設備隊列的深度以超出設定了的最大值。所以,在工作負荷需要更大的隊列的時候,你需要自己調節隊列的最大值,然后讓SIOC在需要的時候減少它。

為什么要增加設備隊列?增加了設備隊列的原因是存儲陣列通常是更有效的,如果它可以一次看到多個I/O請求。存儲陣列知道越多的I/O,它更有效維護它們。這是因為存儲陣列可以重新排列所要求的I/O塊和利用I/O塊的接近。例如,如果虛擬機要求在存儲主軸上彼此非常接近的2塊,存儲陣列可獲得第一個塊,然后迅速收集第二個塊,當主軸上的存儲頭正好“在附近” 。如果隊列深度設置為1和存儲陣列只能看到一個I/O請求,當磁盤頭是“在附近”時,它不能有效地收集其他的I/O塊,因為存儲陣列不知道下一個你會想要什么塊。

您可以監視,并檢查當前的各種隊列的隊列深度,以及他們如何積極被使用。

要確定存儲適配器的隊列深度:

1. 在ESX主機或ESXi shell(技術支持模式)中的服務控制臺運行esxtop命令。

2. 按D。

3. 按F,然后選擇隊列統計F.

4. AQLEN列的值是存儲適配器的隊列深度。這是適配器驅動程序配置為支持的ESX VMkernel活動命令的最大數量。

要確定存儲設備隊列深度:

1.在ESX主機或ESXi shell(技術支持模式)中的服務控制臺運行esxtop命令。

2.按U。

3.按F,然后選擇隊列統計F.

4. DQLEN列的值是存儲設備的隊列深度。這是適配器驅動程序配置為支持的ESX VMkernel活動命令的最大數量。

如果你不斷地發現,您的設備/LUN隊列報告100%“主動/滿”的,則它可能是一個指示,你的設備上的隊列,或底層的存儲有瓶頸。

另一個有趣的內容是在VMware ESX / ESXi中控制LUN隊列深度的限制。

你在每個設備設置QFullSampleSize和QFullThreshold。

運行以下ESXCLI命令。

esxcli storage core device set –device device_name –queue-full-threshold Q –queue-full-sample-size S

在重新啟動后設置是持久性的。

您可以通過使用相應的列表命令檢索設備的值。

esxcli storage core device list

該命令支持可選的 – 設備參數。

esxcli storage core device list –device device

在早期版本中的推薦值是相同的。

QFullSampleSize:

• 對于3PAR,NetApp和IBM XIV存儲陣列,QFullSampleSize值設置為32。

• 對于其他存儲陣列,請聯系您的存儲供應商。

QFullThreshold:

• 對于3PAR存儲陣列中,設置QFullThreshold值4。

• 對于NetApp和IBM XIV存儲陣列,設置QFullThreshold值設置為8。

• 對于其他存儲陣列,請聯系您的存儲供應商。

vSphere的一個功能,從存儲陣列和設備/ LUN隊列中來檢測隊列滿的警告,這樣vSphere發出的I/O請求的數量減少了。此功能默認情況下是關閉的,但根據您的存儲供應商的最佳實踐,應該啟用。

總之,有很多虛擬化存儲堆棧和隊列,這些隊列有各種不同的默認大小。對于大多數環境中,你并不需要調整隊列。然而,對于I/O密集??型工作負載,產生了大量的并發I/O請求或高度整合的環境中,它可能是有益的調整,使存儲陣列可以更有效地處理傳入的I/O請求。使用SIOC和其他隊列調節功能,可以減輕一些潛在的風險增加了vSphere的隊列,但它始終是最好的做法進行測試和評估他們在生產中實施前后的變化,避免過度或不必要的修改,如果你沒有注意到的隊列隊列滿的瓶頸。

未經允許不得轉載:存儲在線-存儲專業媒體 » 解決vSphere的存儲性能問題之存儲隊列
分享到

huanghui

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走