2011-04-26 63 views
3

如何使用全部16個內核而不是1個命令(例如使用cut和awk在一個HUGE文件中使用單線程)?這不是一個程序,我可以使用-j並指定要使用的CPU數量...如何使unix命令使用多個CPU

回答

1

一種可能的方法是將輸入文件拆分爲多個部分,然後爲每個部分啓動單獨的shell管道。多個進程將需要多個核心。

+0

但所有的CPU不會同時使用對嗎?會不會有某些CPU沒有使用的時刻? – Nick 2011-04-26 20:45:48

+0

多個進程應該使用單獨的CPU,但我不完全確定。 – 2011-04-26 21:01:06

0

如果使用cutawk在相同的流水線,他們可能會在不同的CPU上運行,所以你會使用其中的兩種。沒有一種簡單的方式來設置一個像這樣的短管道,以便使用比管道中的步驟數多的CPU。

+1

我有一個很長的命令,比如說(cut -f 5 HUGEFILE.txt | awk'{print $ 1 + $ 2}')。我正在使用的計算機上說,它使用1個CPU的100%,其餘的都是無效的。 – Nick 2011-04-26 20:47:22

3

您是否嘗試過並行化GNU並行作業?請參閱http://www.gnu.org/software/parallel/

+0

+1。有趣的工具。我從來沒有聽說過它。 – 2011-04-26 21:01:25

+0

另請參閱:http://lwn.net/Articles/395090/ – ninjalj 2011-04-26 21:13:19

+0

對於您的任務,您應該查看此處演示的 - 管道選項:http://www.youtube.com/watch?v = 1ntxT-47VPA – 2011-04-26 22:41:34