[問題] multi-jobs in single CPU

作者: noonee (我和烤肉間只差一撮孜然)   2016-08-10 00:12:08
想問一個應該是shell script的問題
平常都是在hpc上面丟job 但是因為人很多 很多job都要等很久才開始跑
但是有些計算其實也就十幾分鐘 但是這種的job量很大
所以想考慮直接在桌上型電腦上跑
如果直接全部丟的話 就是全部一起執行 幾乎同時全部結束
因為是普通桌上型 CPU只有四核
量小的時候 大約20~30內吧 就是慢而已
量多的時候 大約超過50 甚至會出錯
更不要說全部同時一起執行的時候 普通的使用都會受到影響
所以在想有沒有辦法讓他一個接著一個跑
同時可以控制同時在跑的job數量 例如說隨時在跑的最多兩個或三個jobs
這樣可以保留其他普通工作的空間
這樣的需求可以用寫script 來解決嗎?
還是只能自己裝一個小cluster 單一電腦用?
如果是script的話 現在還沒有什麼頭緒該從那邊下手
不知道有沒有人有類似經驗給點建議
謝謝
作者: CaptainH (Cannon)   2016-08-10 00:43:00
取決於你怎麼"丟"job 但你偏偏不寫這個
作者: noonee (我和烤肉間只差一撮孜然)   2016-08-10 01:36:00
如果是hpc上當然就是qsub ./exe我在自己電腦上平丟也只是用 nohup ./exe & 而已程式本身沒有做平行化所以可以看成很一般的執行
作者: Hevak (Arthow Eshes)   2016-08-10 06:04:00
GNU parallel
作者: noonee (我和烤肉間只差一撮孜然)   2016-08-10 11:57:00
謝謝樓上 正在看是不是我要的大致上看懂意思了 應該不是我要的 還是謝謝
作者: bibo9901 (function(){})()   2016-08-10 18:14:00
明明gnu parallel 就是你要的
作者: fourdollars (四元)   2016-08-10 22:39:00
樓主要找的是 taskset -c 0 some_heavy_command 吧?
作者: lspci (awk sed echo)   2016-08-10 22:44:00
把所有的計算工作寫進一個job script裡面就可以了
作者: m8403051 (大吉嶺紅茶)   2016-08-11 16:13:00
開三個 terminal, 每個各貼一次 cmd && cmd && cmd...
作者: Hevak (Arthow Eshes)   2016-08-12 21:30:00
同時只有3個job這種就是gnu parallel在玩的啊@@
作者: jokester (蠻王科科)   2016-08-18 11:27:00
簡單的job control也可在bash做: https://git.io/v6KdZ

Links booklink

Contact Us: admin [ a t ] ucptt.com