Linux

如何選擇nfsd執行緒數

  • February 18, 2013

我有一個 8 核的基於 linux 的伺服器,專門為 80 個執行批處理作業的 linux 客戶端提供 NFS。客戶端總共有 400 個核心,因此通常同時執行 400 個單核批處理作業。

偶爾會有很多批處理作業嘗試同時進行 I/O,並且耗盡了伺服器上的 nfsd 執行緒數,目前有 80 個。批處理作業收到 I/O 錯誤(例如 Permission Denied)並保釋。

我想增加 nfsd 執行緒的數量,但想知道:

  • 在這種情況下設置執行緒數有什麼經驗法則?
  • 設置得太高有什麼缺點?

參考

  • 這個來自 Sun 的 NFS 調整指南建議了一些 Solaris 的經驗法則,但沒有給出這些特定數字的理由,所以我不確定它們如何應用於我的 Linux 伺服器。
  • 這另一個提供了一種調整這種類型的方法,但非常主觀。

在理想情況下,您的批處理作業會有一些退避邏輯,並且您會堅持使用 80 個執行緒。

我絕不是 NFSd 方面的專家,但適用於所有 Linux 應用程序的 linux 執行緒規則都應該適用。這裡的規則是每個執行緒在記憶體中佔用一定數量的空間,實際上,這個記憶體量在普通生產伺服器(具有兩位數的 RAM)上是如此之小,以至於它幾乎無關緊要,更緊迫的問題是在 NFSd - 信號量等應用程序中實現執行緒的方式。計數信號量是確保線上程情況下不發生鎖定條件的絕佳方法,問題是信號量跟踪執行緒並增加和減少計數器以反映“空閒”與“鎖定”執行緒,為了做到這一點,他們必須索引可用執行緒並檢查鎖定執行緒以適當地提供執行時間,

太長了;未閱讀總和 - 如果我是您,我會將執行緒數限制為您預期的最大並發主機數,但我也會進行一些測試以確保執行時間與您的預期值一致。我知道這可能對您沒有太大幫助,但是如果沒有預期的使用場景,很難分析適當的配置。

另外,順便說一句,如果你推斷 Sun 的數字,2.2 GHZ 處理器應該能夠在 800 個執行緒的領域中毫無問題地執行,即使這些數字本質上是任意的,它給我的感覺是你會我之前的建議很好

引用自:https://serverfault.com/questions/181926