在GNU / Linux命令行中并行处理

一些GNU / Linux命令行程序(例如用ogg vorbis格式编码audio的“oggenc”)只使用CPU中所有内核中的一个。 问题是,在我的情况下,我有4个内核,程序只使用1个内核,使CPU工作在25%(只有一个内核工作在100%,而其他3个在0%那个任务)。

有可能强制使用更多的核心命令行程序?

这对于压缩,焦油,oggenc等任务是很棒的。

PS:我find了一个名为“并行”的程序,但是我没有实现如何使它正常工作…… 🙁

使用GNU Parallel,您可以执行以下操作:

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

GNU并行是一个通用的并行程序,可以很容易地在同一台机器或多台你有ssh访问的机器上并行运行作业。

如果你想在4个CPU上运行32个不同的作业,那么最简单的方法就是在每个CPU上运行8个作业:

简单的调度

当一个完成时,GNU并行会产生一个新的进程 – 保持CPU活动,从而节省时间:

GNU并行调度

安装

出于安全考虑,您应该在您的软件包管理器中安装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

浏览教程: http : //www.gnu.org/software/parallel/parallel_tutorial.html

注册邮件列表以获得支持: https : //lists.gnu.org/mailman/listinfo/parallel

在构建Linux内核时,可以使用-j参数来进行命令,然后可以看到使用了多核。

 make -j X 

make -j核心数+ 1