如何知道進程正在空閒?如何確定進程是否處於空閒狀態C
讓我說我的程序會產生n個進程,我想知道他們中的任何一個是否處於空閒狀態,以便我可以要求他們做額外的工作,但問題是如何確定進程是否在其分配的時間片。
我可以在整個系統中找到cpu利用率((總時間 - 空閒時間)/總時間),但不知道如何才能獲得某個進程的CPU利用率。
因爲(糾正我,如果我錯了)一個進程,如果在一個時間片空閒,會自動放棄剩餘的CPU時間,所以讓這個進程的CPU時間是不好的。
一個可能的解決辦法是,看是否自願上下文切換次數增加(可以說超過閾值),但我有比內核2.6.23所以讀的/ proc/PID /爲voluntary_context_switches狀態下工作& nonvoluntary_context_switches不我的選擇...
任何建議...
注: ,我給上面的是一個過於簡單化的例子。 IPC不是一種選擇。特定通話過程應該能夠確定它是否處於空閒狀態。在流程花費時間的所有地方跟蹤這一點並不可行。底線,我想看看一些內核統計,以確定這個特定的過程是否坐着,並根據這些信息做一些東西。
工作進程應該告訴管理進程完成之前的任務。 – Barmar 2014-09-13 01:02:42
或者您可以只有一個隊列,所有工作進程都從中執行任務。當工作人員完成最後一項任務時,它只是讀取隊列中的下一個任務。 – Barmar 2014-09-13 01:03:39
這就像[XY問題]的字典定義(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – Barmar 2014-09-13 01:05:44