我有一個父進程,用它來產生一系列子進程,每個子進程都按順序運行自己的程序。這些程序中的每一個都隨時間變化一個文件,我想從這個文件中讀取數據並查看它在每個程序運行時如何變化。叉()在特定CPU集合上運行
我需要兩組數據才能正常工作,某些設定時間間隔(我還沒有確定間隔時間)文件的值,以及每個程序運行所需的時間,還有其他變量可以影響這些程序的執行時間,這也是我想看到的。
所以我想要得到更準確的子進程的時間,同時仍然從文件中讀取我可以在不同的核心上運行它們。我有8個內核,我想在0-3上運行父進程,然後讓孩子在4-7上運行。我不確定這是否可能通過C語言來實現,並且四處搜索還沒有得到任何答案,這使我認爲它不是。
在Linux中,除了程序之外,我可以使用taskset
來執行此操作。
我打算使用內核參數isolcpus()來留出4個內核。我在運行子程序時儘可能少地噪音。
你看過'sched_setaffinity()'函數嗎? (http://man7.org/linux/man-pages/man2/sched_setaffinity.2.html) – NiBZ
XY問題。一個典型的Linux系統有大約100到1000個進程來處理它們的線程。你的幾條線程不會有太大的改變,但可能會讓你的系統更加混亂。你真正的問題是什麼?這裏的「準確時間」是什麼意思? (並且不要只提供外部鏈接 - 一個問題必須是獨立的)。 – Olaf
爲什麼在如此無菌的條件下進行這項測試,以至於您獲得的任何結果不能用於預測現實世界中的任何事情? –