如果沒有對 Ubuntu 伺服器應用手動更改,如何分配 RAM 和 CPU
我們有一個執行 R-Studio Server 的 Ubuntu Server (16.04),我們在其中進行統計模擬。這些模擬有時在 RAM 和 CPU 上很重,所以我想知道如果兩個使用者登錄並且他們每個人都執行一個單獨的 R 會話,他們在其中“競爭”記憶體和 CPU 時核心是如何分配記憶體和 RAM 的。
由於我們都不是伺服器管理員,我們真的不想應用手動更改,但是我們感興趣的是 RAM 和 CPU 分配是否更不等於所有使用者。
注意:R-Studio Server Pro 版本允許以非常簡單的方式為單個使用者分配給定數量的記憶體,但由於我們沒有 Pro 版本,我們無法更改這些設置。
RAM 是先到先得的。如果 userA 執行 9 個程序,每個程序分配 10% 的記憶體,然後 userB 登錄,userB 將看到只剩下 10% 的記憶體。如果記憶體耗盡,Linux 將開始殺死程序。據我所知,OOM 殺手並未針對多使用者進行調整,因此在這種情況下可能不公平。
CPU 時間通常是按程序分配的,而不是按使用者分配的(見下文)。
任何準備好執行的程序(不休眠、等待 I/O 等)都被考慮進行調度。(未準備好執行的程序被忽略,因此“不計算在內”。(這有點過於簡單,但足夠接近。))
在最簡單的模型中,如果兩個使用者各自執行一個程序,他們每個人都會得到大約一半的可用 CPU 時間。但是如果 userA 正在執行 10 個程序,而 userB 正在執行 1 個程序,那麼 userA 將獲得 90% 的 CPU,而 userB 將獲得 10% 的 CPU(所有其他條件都相同)。
但是,Linux 調度程序可以通過將程序分組在一起,然後在這些分組之間分配 CPU 時間來改進這一點。
此外,Linux 能夠根據會話 ID(通常與終端、終端視窗和/或 X 登錄會話相關聯)自動對程序進行分組。這稱為“自動分組”。目標是單個使用者在一個視窗中執行繁重的後台任務,並在另一個視窗中執行互動式任務,仍將看到響應式互動性能。
據我所知,這兩種功能在 Ubuntu 上都是預設啟用的。
我找不到有關任務組和/或自動分組在多使用者工作負載中的行為方式的資訊。理論上,如果調度程序將每個使用者放在一個單獨的任務組中,那麼使用者將始終獲得對 CPU 的平衡訪問(兩個使用者為 50/50)。但是,我沒有發現任何說這會自動發生的事情。
進一步閱讀: