題 有沒有辦法在Mac OS X中設置進程的優先級?


我在Mac OS X上運行100%CPU的後台進程。所有其他應用程序因此而非常慢。

我想將此過程設置為不超過50%,以便我的應用程序可以更好地運行。我怎樣才能做到這一點?


43
2017-09-17 18:03


起源




答案:


從命令行(Terminal.app 或者其他)使用 nice 和 renice,就像在其他unix上一樣。

使用 nice 啟動流程時:

nice -n <priority> <command> <arguments to command>

默認優先級為零,正值為“更好”(即優先級較低),負值為“不太好”(優先級較高)。看起來Mac OS從+10到-10運行。

使用 renice 更改已經運行的進程的優先級(來自 renice 10.5)上的手冊頁:

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  
renice -n increment [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

你在這裡感興趣的部分是 pid 位。這是作業的進程ID,您可以使用它找到它 ps -u <your username> 並尋找進程名稱,但我更喜歡 top -o 在這種情況下,因為您感興趣的過程將接近頂部。

注意: 沒有超級用戶權限,您永遠無法提高進程的優先級。對於普通用戶, nice 和 renice 是單行道。優先級的微小變化會對運行時間產生很大影響。所以,直到你理解它為止。


44
2017-09-17 18:06



我如何處理已經運行的流程?它運行了2個小時,我不想再次啟動它並且放鬆了我2小時的處理時間 - Daniel Cukier


您可以使用以下命令:

renice -n # PID

哪裡:

  •  是一個應該大於0的數字(否則你將把你的過程移到更高的優先級)
  • PID 是您可以通過鍵入查看的進程ID top 在終端應用程序(utilities / terminal.app)

如果是系統進程或其他用戶進程,則應鍵入:

sudo renice -n 10 PID

它會詢問您的密碼(如果您是sudoer)。至於數字我會推薦10或19(甚至更低的優先級)。

請注意,這將更改優先級而不是CPU使用率。如果您沒有運行其他需要CPU的進程,或者您的Mac(Core 2 Quad Core)上有多個CPU,則該進程仍可能使用100%的CPU。


14
2018-06-14 09:49





還有許多GUI實用程序,如免費的BeNicer和 流程嚮導 (我以前的最愛)和1.99美元的版本 冰箱,這是我的新寵。這些都適用於運行應用程序。


4
2017-09-20 08:13



BeNicer和Process Wizard都是PowerPC應用程序,不能在最新版本的OSX上運行 - arolson101
Freezer是否仍在開發更新的OS版本? - ylluminate
請檢查我的答案,另一個選擇,AppPolice - JacopKane


renice 20 $(pgrep ImageOptim)

或者使用程序的名稱而不是ImageOptim


3
2017-11-24 02:52



另外,使用 renice -20 為進程提供盡可能高的優先級,例如在編譯像octave這樣的大程序時。 renice 20 給予流程最低優先級。 - nyxee


  • 如果您的流程是應用程序或應用程序幫助程序實用程序而不是系統進程而您不想這樣做 nice 要么 renice 在每次系統啟動時,你都可以試一試 AppPolice。 它是開源的,免費的。你可以下載它 這裡

  • 另一個替代方案是調用一個非常好的命令行任務管理器GUI htop。你可以看到所有的過程並調整它們 nice 價值觀 F7 和 F8 快捷鍵。 (請注意,否定 nice 值更優先,正值相反)

要安裝它:

  • 安裝 自製 如果你還沒有。
  • 運行此命令 brew install htop在終端
  • 現在你可以做到 htop 查看和管理終端或 sudo htop 覆蓋所有系統。

0
2017-09-29 02:45