Freebsd

執行良好 +20 的程序仍然使系統執行緩慢

  • May 21, 2019

如果我有一個希望在所有核心的後台執行的程序,它會使系統非常緩慢,甚至執行在不錯的 +20 時。記憶體不足或 io 不是問題。是否有任何簡單的方法可以將 cpu 優先級降低到低於此值,或者我是否必須求助於使用少於核心數量的工作執行緒啟動後台程序,或者程序內部的某種其他類型的 cpu 管理。

您可能想查看idprio(1)和/或cpuset(1)

例如:

idprio 31 commandhere

將限制commandhere為空閒優先級。和

cpuset -l 0-3 commandhere

將其限制為僅 cpu 核心 0-3。組合它們:

cpuset -l 0 idprio 31 commandhere

(訂單可以切換到idprio 31 cpuset -l 0-3 commandhere,我認為這不重要)。哪個命令或命令參數組合(優先級或 cpu 列表)當然取決於您的工作量,YMMV 等。

第一個解決方案

使用限制命令。如手冊頁中所述:

limit, ulimit, unlimit - 設置或獲取對目前 shell 及其後代可用的系統資源的限制

這是聯機幫助頁的連結

第二種解決方案

使用監獄,它可以用來將程序與系統的其餘部分隔離,也可以限制 CPU 和記憶體的使用。

如此處所述:

FreeBSD 為管理員提供了幾種方法來限制個人可以使用的系統資源量。磁碟配額限制使用者可用的磁碟空間量。第 17.11 節“磁碟配額”中討論了配額。

可以使用平面文件或配置資源限制數據庫的命令來設置對其他資源(例如 CPU 和記憶體)的限制。傳統方法通過編輯 /etc/login.conf 來定義登錄類。雖然仍支持此方法,但任何更改都需要編輯此文件、重建資源數據庫、對 /etc/master.passwd 進行必要更改以及重建密碼數據庫的多步驟過程。這可能會變得很耗時,具體取決於要配置的使用者數量。

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