multi-jobs in single CPU - Linux

Table of Contents

想問一個應該是shell script的問題

平常都是在hpc上面丟job 但是因為人很多 很多job都要等很久才開始跑
但是有些計算其實也就十幾分鐘 但是這種的job量很大
所以想考慮直接在桌上型電腦上跑

如果直接全部丟的話 就是全部一起執行 幾乎同時全部結束
因為是普通桌上型 CPU只有四核
量小的時候 大約20~30內吧 就是慢而已
量多的時候 大約超過50 甚至會出錯
更不要說全部同時一起執行的時候 普通的使用都會受到影響
所以在想有沒有辦法讓他一個接著一個跑
同時可以控制同時在跑的job數量 例如說隨時在跑的最多兩個或三個jobs
這樣可以保留其他普通工作的空間

這樣的需求可以用寫script 來解決嗎?
還是只能自己裝一個小cluster 單一電腦用?
如果是script的話 現在還沒有什麼頭緒該從那邊下手
不知道有沒有人有類似經驗給點建議

謝謝

--

--

All Comments

William avatarWilliam2016-08-10
取決於你怎麼"丟"job 但你偏偏不寫這個
Noah avatarNoah2016-08-12
如果是hpc上當然就是qsub ./exe
Caitlin avatarCaitlin2016-08-16
我在自己電腦上平丟也只是用 nohup ./exe & 而已
程式本身沒有做平行化所以可以看成很一般的執行
Noah avatarNoah2016-08-20
GNU parallel
David avatarDavid2016-08-21
謝謝樓上 正在看是不是我要的
Olga avatarOlga2016-08-22
大致上看懂意思了 應該不是我要的 還是謝謝
Megan avatarMegan2016-08-24
明明gnu parallel 就是你要的
Tracy avatarTracy2016-08-26
樓主要找的是 taskset -c 0 some_heavy_command 吧?
Elma avatarElma2016-08-31
把所有的計算工作寫進一個job script裡面就可以了
Oscar avatarOscar2016-09-04
開三個 terminal, 每個各貼一次 cmd && cmd && cmd...
Barb Cronin avatarBarb Cronin2016-09-09
同時只有3個job這種就是gnu parallel在玩的啊@@
Odelette avatarOdelette2016-09-09
簡單的job control也可在bash做: https://git.io/v6KdZ