[問題] multi-jobs in single CPU

看板Linux作者時間9年前 (2016/08/10 00:12), 9年前編輯推噓7(706)
留言13則, 8人參與, 最新討論串1/2 (看更多)
想問一個應該是shell script的問題 平常都是在hpc上面丟job 但是因為人很多 很多job都要等很久才開始跑 但是有些計算其實也就十幾分鐘 但是這種的job量很大 所以想考慮直接在桌上型電腦上跑 如果直接全部丟的話 就是全部一起執行 幾乎同時全部結束 因為是普通桌上型 CPU只有四核 量小的時候 大約20~30內吧 就是慢而已 量多的時候 大約超過50 甚至會出錯 更不要說全部同時一起執行的時候 普通的使用都會受到影響 所以在想有沒有辦法讓他一個接著一個跑 同時可以控制同時在跑的job數量 例如說隨時在跑的最多兩個或三個jobs 這樣可以保留其他普通工作的空間 這樣的需求可以用寫script 來解決嗎? 還是只能自己裝一個小cluster 單一電腦用? 如果是script的話 現在還沒有什麼頭緒該從那邊下手 不知道有沒有人有類似經驗給點建議 謝謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 129.119.235.12 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1470759131.A.D96.html

08/10 00:43, , 1F
取決於你怎麼"丟"job 但你偏偏不寫這個
08/10 00:43, 1F

08/10 01:36, , 2F
如果是hpc上當然就是qsub ./exe
08/10 01:36, 2F

08/10 01:37, , 3F
我在自己電腦上平丟也只是用 nohup ./exe & 而已
08/10 01:37, 3F

08/10 01:37, , 4F
程式本身沒有做平行化所以可以看成很一般的執行
08/10 01:37, 4F
補充一下 剛剛有找到 如果是一串的 cmd的話 可以寫成 cmd && cmd && cmd && .... 但是這樣只能限制一次只run 一個job 想問的是 如果是限制同時只有 例如三個jobs 在跑的話該怎麼寫? 謝謝 ※ 編輯: noonee (129.119.235.12), 08/10/2016 06:05:51

08/10 06:04, , 5F
GNU parallel
08/10 06:04, 5F

08/10 11:57, , 6F
謝謝樓上 正在看是不是我要的
08/10 11:57, 6F

08/10 14:47, , 7F
大致上看懂意思了 應該不是我要的 還是謝謝
08/10 14:47, 7F

08/10 18:14, , 8F
明明gnu parallel 就是你要的
08/10 18:14, 8F

08/10 22:39, , 9F
樓主要找的是 taskset -c 0 some_heavy_command 吧?
08/10 22:39, 9F

08/10 22:44, , 10F
把所有的計算工作寫進一個job script裡面就可以了
08/10 22:44, 10F

08/11 16:13, , 11F
開三個 terminal, 每個各貼一次 cmd && cmd && cmd...
08/11 16:13, 11F

08/12 21:30, , 12F
同時只有3個job這種就是gnu parallel在玩的啊@@
08/12 21:30, 12F

08/18 11:27, , 13F
簡單的job control也可在bash做: https://git.io/v6KdZ
08/18 11:27, 13F
文章代碼(AID): #1NgW3RsM (Linux)
文章代碼(AID): #1NgW3RsM (Linux)