2017-06-13 39 views
2

某些GNU/Linux命令行程序(例如用於以ogg vorbis格式編碼音頻的「oggenc」)僅使用CPU中所有內核中的一個。 問題是,在我的情況下,我有4個內核,並且程序只使用1個內核,使CPU工作在25%(只有一個內核工作在100%,但其他3個在0%爲那個任務)。GNU/Linux命令行中的並行處理

有可能強制爲命令行程序使用更多內核?

這將是偉大的某種像拉鍊,焦油,任務oggenc的的等

PS:我發現了一個名爲「平行」的計劃,但我沒有實現如何使其正常工作... :(

+0

如果程序沒有用多線程或者多處理功能寫的,你不能讓它在多個CPUs.You可以運行在同一時間運行此命令的2個實例,然後他們可能會使用2個CPU。 – Tamar

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。如果您覺得它在其他地方的話題,然後[請求遷移](http://meta.stackoverflow.com/q/254851) – jww

回答

2

隨着GNU並行,你可以這樣做:

parallel gzip ::: * 
parallel opusenc {} {.}.opus ::: *.wav 

GNU並行是一個普遍的並行化,使容易在同一臺機器上或在多臺機器,你必須ssh訪問運行並行作業。

如果你想在4個CPU上運行32個不同的工作崗位,並行化直接的方式是在每個CPU上運行8個作業:

Simple scheduling

GNU並行,而不是產生一個新的進程時,一個完成 - 保持CPU的活躍,從而節省了時間:

GNU Parallel scheduling

安裝

出於安全考慮,您應該在您的軟件包管理器中安裝GNU Parallel,但是如果您的發行版沒有打包GNU Parallel,則可以進行個人安裝,而不需要root權限。它可以在10秒內通過這樣來完成:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash 

對於其他安裝選項見http://git.savannah.gnu.org/cgit/parallel.git/tree/README

瞭解更多

查看更多的例子:http://www.gnu.org/software/parallel/man.html

觀看介紹視頻: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

走過t他教程:http://www.gnu.org/software/parallel/parallel_tutorial.html

訂閱郵件列表,以獲得支持:https://lists.gnu.org/mailman/listinfo/parallel

+0

聽起來不錯,但是...如果命令是,例如,「oggenc -q 8 * .flac「,它將如何使用並行? – Ommadawn

+0

'parallel oggenc -q 8 {} ::: * .flac'在問下一個問題之前,請通讀本教程。 http://www.gnu.org/software/parallel/parallel_tutorial.html –

0

當你建立Linux內核可以使用-j參數,使command.Then你可以看到使用過的多個核心。

make -j X 

化妝-j核心數+ 1