Scripting

如何延遲 bash 腳本,直到有足夠的空閒核心來執行它?

  • September 7, 2017

我是一名想要對 NGS 管道進行基準測試的學生,根據分配給它的核心數量和輸入文件的大小來監控性能。出於這個原因,我編寫了一個 bash 腳本,用不同的 nr_of_cores 參數和輸入文件多次呼叫它,記下完成時間和其他統計資訊。整個過程大約需要一天的時間來完成各種場景。(當然,大部分時間都花在用單核執行最大的文件上,所以我不會在這段時間內阻塞整個伺服器)

我可以訪問共享的 64 核伺服器來執行它。然而,共享伺服器的空閒核心數量因一天中的時間和試圖完成項目的人而異。(我要測試的最高 nr_of_cores 是 36,帶有一個小文件。)

**我的問題:**有沒有一種簡單的方法可以讓我的 bash 腳本等到它知道

$$ X $$在執行命令之前核心可用?我想這樣,我會得到更可靠的數據,我不會減慢有更緊急任務要執行的人的速度,而且我可以隨時啟動腳本,而不是等到我碰巧用 htop 看到這是一個緩慢的一天. 謝謝!

假設您有能力告訴系統稍後執行它,並且系統管理員是明智的並且已經at安裝,您可以使用以下命令在負載級別足夠低時執行它(預設情況下為零,但係統管理員可以為門檻值設置任意值):

batch << EOF
<command>
EOF

除此之外,我知道的唯一方法是自己輪詢負載平均值並在低於某個門檻值時觸發命令。如果您決定走那條路線,您要查看的是 中的第一個欄位/proc/loadavg,它給出了 1 分鐘的平均值。

引用自:https://unix.stackexchange.com/questions/390727