IDC资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回IDC资讯列表

怎么利用多核CPU来加速你的Linux命令

发布时间:2022-05-31

本文主要介绍如何使用多核CPU来加速你的Linux命令。本文非常详细,具有一定的参考价值。有兴趣的朋友一定要看!

你有过需要计算非常大的数据量(几百GB)的经历吗?或者内部搜索,或者其他操作——,一些不能并行的操作。数据专家,我在和你说话。你可能有一个4核以上的CPU,但是我们合适的工具,比如grep,bzip2,wc,awk,sed等。是单线程的,只能使用一个CPU内核。

借用漫画人物卡曼的话“这些内核我怎么用”?

为了让Linux命令使用所有的CPU内核,我们需要使用GNU Parallel命令,这使得我们所有的CPU内核在一台机器上做神奇的减图操作。当然,这也依赖于很少使用的- pipes参数(也称为- spread stdin)。这样你的负载就会平均分配到每个CPU上,真的。

BZIP2

Bzip2是比gzip更好的压缩工具,但是非常慢!不用麻烦了,我们有办法解决这个问题。

以前的做法:

catbigfile . bin | bzip2-bestcompensedfile . bz2现在是这样的:

catbigfile . bin | parallel-pipe-recent ' '-kbzip2-bestcompensedfile . bz2特别是对于bzip2,GNU并行在多核CPU上超级快。不小心就完了。

GREP

如果您有一个非常大的文本文件,您可能以前是这样的:

现在你可以这样做了:

catbigfile . txt | parallel-pipe grep ' pattern '或类似的内容:

catbigfile . txt | parallel-block 10M-pipe grep ' pattern ',第二种用法使用block 10M参数,这意味着每个内核处理1000万行,——。您可以使用此参数来调整每个CPU内核处理多少行数据。

AWK

下面是一个使用awk命令计算非常大的数据文件的例子。

一般用法:

catrand20m . txt | awk ' { s=$ 1 } end { prints } '现在是这样的:

catrand20m . txt | parallel-pipe awk \ ' { s=\ $ 1 } end { prints } \ ' | awk ' { s=$ 1 } end { prints } '有点复杂:parallel命令中的pipe参数将cat输出分成几个块,分派给awk call,形成许多子计算操作,这些子计算通过第二个管道输入同一个awk命令,从而输出最终结果。第一个awk有三个反斜杠,这是GNU parallel调用awk所必需的。

WC

想尽快算出一个文件的行数?

传统做法:

现在你应该这样做:

catbigfile . txt | parallel-pipe WC-l | awk ' { s=$ 1 } end { prints } '非常聪明。首先使用并行命令“mapping”进行大量的wc -l调用形成子计算,最后通过管道发送到awk进行汇总。

SED

你想用sed命令在一个巨大的文件中做大量的替换操作吗?

一般惯例:

Seds^old^new^gbigfile.txt现在你可以:

catbigfile . txt | parallel-pipes eds old new g…然后您可以使用pipes将输出存储在指定的文件中。

文章“如何使用多核CPU加速你的Linux命令”的内容就这么多了。谢谢大家看!希望分享的内容对大家有帮助,更多相关知识。欢迎关注桂哥网络!


TikTok千粉号购买平台:https://tiktokusername.com/