如何利用多核CPU来加速你的Linux命令(GNU Parallel)
作者:佚名 发布时间:2023-08-29 09:19:05
你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作。数据专家们,我是在对你们说。你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed 等等,都是单线程的,只能使用一个CPU内核。
借用卡通人物Cartman的话,“如何我能使用这些内核”?
要想让Linux命令使用所有的CPU内核,我们需要用到GNU Parallel命令,它让我们所有的CPU内核在单机内做神奇的map-reduce操作,当然,这还要借助很少用到的–pipes 参数(也叫做–spreadstdin)。这样,你的负载就会平均分配到各CPU上,真的。
BZIP2
bzip2是比gzip更好的压缩工具,但它很慢!别折腾了,我们有办法解决这问题。
以前的做法:
cat bigfile.bin | bzip2 --best > compressedfile.bz2
现在这样:
cat bigfile.bin | parallel --pipe --recend '' -k bzip2 --best > compressedfile.bz2
尤其是针对bzip2,GNU parallel在多核CPU上是超级的快。你一不留神,它就执行完成了。
GREP
如果你有一个非常大的文本文件,以前你可能会这样:
grep pattern bigfile.txt
现在你可以这样:
cat bigfile.txt | parallel --pipe grep 'pattern'
或者这样:
cat bigfile.txt | parallel --block 10M --pipe grep 'pattern'
这第二种用法使用了 –block 10M参数,这是说每个内核处理1千万行——你可以用这个参数来调整每个CUP内核处理多少行数据。
AWK
下面是一个用awk命令计算一个非常大的数据文件的例子。
常规用法:
cat rands20M.txt | awk '{s+=$1} END {print s}'
现在这样:
cat rands20M.txt | parallel --pipe awk \'{s+=\$1} END {print s}\' | awk '{s+=$1} END {print s}'
这个有点复杂:parallel命令中的–pipe参数将cat输出分成多个块分派给awk调用,形成了很多子计算操作。这些子计算经过第二个管道进入了同一个awk命令,从而输出最终结果。第一个awk有三个反斜杠,这是GNU parallel调用awk的需要。
WC
想要最快的速度计算一个文件的行数吗?
传统做法:
wc -l bigfile.txt
现在你应该这样:
cat bigfile.txt | parallel --pipe wc -l | awk '{s+=$1} END {print s}'
非常的巧妙,先使用parallel命令‘mapping'出大量的wc -l调用,形成子计算,最后通过管道发送给awk进行汇总。
SED
想在一个巨大的文件里使用sed命令做大量的替换操作吗?
常规做法:
sed s^old^new^g bigfile.txt
现在你可以:
cat bigfile.txt | parallel --pipe sed s^old^new^g
…然后你可以使用管道把输出存储到指定的文件里。
来源:http://os.51cto.com/art/201310/414303.htm
猜你喜欢
- 整理出来和大家交流一下,希望大家能从中得到启发。据不完全统计,QQ注册用户有3亿多,msn的注册有5.3亿,但是qq一天平均在线人数超过15
- 一.分析选择关键词了解客户目标受众人群、受众率,推测有效的行业买家年龄段常用搜索习惯及搜索行为;选择精准产品关键词并骤一剖析筛选,确定最终预
- 网络“黑客”张子伟入侵计算机服务器,以删除数据为要挟,索要钱财5000元人民币。12月11日,上海市静安区法院对这起“‘黑客’敲诈案”作出一
- 网络编辑,是网站内容的设计师和建设者,通过网络对信息进行收集、分类、编辑、审核,然后通过网络向世界范围的网民进行发布,并且通过网络从网民那里
- Linux命令搜索命令whereis与which的区别一 whereis1、语法whereis 命令名搜索命令所在的路径以及帮助文档所在的位
- 北京时间11月5日消息,据国外媒体报道,因谷歌试图构建其在互联网搜索领域的主导地位,并希望向其它领域扩展,其第三季度游说费用首次超过100万
- HostNine 成立于2006年,至今仅仅发展了2年的时间,是一家十分年轻的虚拟主机服务商,HostNine是一个充满活力的年轻公司。作为
- 打开:js/float.js查找:popup.style.zIndex = 3000;将此行下面的三行内容替换为:pop
- 首先登录你的Godaddy 帐户,然后点击Godaddy 首页上方的Hosting 菜单,如下图所示: 然后选择下拉菜单里的Web site
- 一:GSA是什么?Google Search Appliance(简称:GSA)是由Google公司出品的一种机架设备。 Search Ap
- 圣诞节的脚步可是越来越近了,最近福布斯网站就盘点了一下2008年度最受欢迎的十大圣诞礼物。而夺冠者并不让我们感到意外,那就是任天堂的Wii游
- 全球最大的域名交易平台Sedo,今天透露chinese.com的成交价为110万美元。位居该平台2007年最贵的几个域名之一。chinese
- diskperf.exe > Starts physical Disk Performance counters 磁盘性能计数器dll
- 1、基于ip地址的虚拟主机Listen 80<VirtualHost 172.20.30.40> &nbs
- 我们学校最近将MAC和IP进行了捆绑,又在服务器(Win2K)上进行了上网时间的限制,真是烦死人了,我想我可是一个从不受限制的人啊,怎么可以
- DNS 是域名系统 (Domain Name System) 的缩写。大家在上网时输入的网址,是通过域名解析系解析找到相对应的IP地址才能访
- 在刚装完mysql,就建立了数据库abc,然后新建一个abc表,插入英文没有问题,但是插入中文就有问题,会报错:ERROR 1366 (HY
- 前几天接到一个装潢公司的网络推广客户,所以就去百度搜索“装潢公司”、“合肥装潢公
- 在linux上以服务的方式启动java程序1.安装jsvc在tomcat的bin目录下有一个jsvc.tar.gz的文件,进入tomcat的
- 启用并配置文件服务Windows Server 2003的管理工具中有一项功能叫做“管理您的服务器”,启动该工具之后,可以看到当前服务器上启