你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作。数据专家们,我是在对你们说。你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核。

借用卡通人物Cartman的话,“如何我能使用这些内核”?

要想让Linux命令使用所有的CPU内核,我们需要用到命令,它让我们所有的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

…然后你可以使用管道把输出存储到指定的文件里。

linux多核操作命令,利用多核CPU加速你的Linux命令相关推荐

  1. mysql如何使用多核cpu_利用多核 CPU 实现并行计算

    利用多核 CPU 实现并行计算 由 学院君 创建于1年前, 最后更新于 3个月前 版本号 #2 5814 views 2 likes 1 collects 开始之前,我们先澄清两个概念,「多核」指的是 ...

  2. 如何利用计算机多核,如何利用多核电脑实现Matlab的并行运算

    2017-05-28 回答 matlab并行运算 目前,新购置的电脑大部分都是多核的了,使用matlab进行大量计算时如何有效利用多核呢?matlab目前版本已经比较好的支持多核并行运算了.是用的ma ...

  3. Linux | Centos下几种CPU查看使用率的常用命令

    文章目录 一.top 1.1 常用参数 二.free 三.vmstat 3.1 常用参数 3.2 获取信息 四.mpstat 4.1 安装 4.2 获取信息 一.top top命令是Linux下常用的 ...

  4. linux查看设备在哪个cpu上,如何在linux中查看cpu信息、机器硬件型号

    原标题:如何在linux中查看cpu信息.机器硬件型号 # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon( ...

  5. Linux C语言 利用url下载文件(实现wget命令)

    1.思路分析,以下载下面的url为例 http://www.cztouch.com/upfiles/soft/testpdf.pdf 从url中获取文件名testpdf.pdf,以该名称创建文件 从u ...

  6. linux基本命令du,Linux常用操作命令汇总

    你还在为不知道Linux常用操作命令汇总而不知所措么?下面来是学习啦小编为大家收集的Linux常用操作命令汇总,欢迎大家阅读: Linux常用操作命令汇总 1.ls 命令 ls以默认方式显示当前目录文 ...

  7. 如何利用多核CPU来加速你的Linux命令

    如何利用多核CPU来加速你的Linux命令 原文出处: rankfocus   译文出处: 外刊IT评论 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作--一些无法并 ...

  8. python如何指定使用的cpu核_Python如何利用多核处理器

    python多线程不能利用多核cpu,但有时候多线程确实比单线程快. python 为什么不能利用多核 CPU  GIL 其实是因为在 python中有一个 GIL( Global Interpret ...

  9. 如何利用多核CPU提高虚拟现实性能?

    虚拟现实引领新时代令人惊喜的新体验,但也带来了各种新的挑战.其中之一就是虚拟现实应用"耗能"问题. 虚拟现实挑战了图形和仿真技术,以至于创造优秀虚拟现实体验的硬件需求成为日前热点. ...

最新文章

  1. CF982 C Cut 'em all!【树/DFS/思维】
  2. 什么时候可以全面升级鸿蒙系统,华为已做好全面升级准备,鸿蒙系统将替换底层安卓系统...
  3. 图解Linux的Socket
  4. 让Windows XP系统快上几倍的三个绝招
  5. js获取浏览器滚动条距离顶端的距离
  6. win7变成xp风格了怎么改回_让电脑提速的几种方法(老电脑太卡怎么提速)
  7. 可以记录阅读进度的 pdf 电脑阅读器
  8. ubuntu 14.04中安装Jenkins
  9. 电子邮件地址中服务器怎么看,你如何检查电子邮件服务器(gmail)中的某个地址,并基于该地址运行一些东西?...
  10. 华为手机备忘录的字体怎么调大?
  11. 推荐好用的Linux远程连接工具
  12. 使用Dosbox运行程序
  13. 计算机四级网络工程师(备考过程,避开误区,高效备考!)
  14. D盘根目录出现msdia80.dll
  15. python之signal操作
  16. 商务签证的准备(1)
  17. JAVA经典垃圾收集器与内存分配策略
  18. Web开发者的福利 30段超实用CSS代码笔记
  19. C语言 1~100之间3的倍数
  20. OpenBmc开发14:gpio管理

热门文章

  1. 2020北京国际茶业展 | 共赴茶香之约,凤牌红茶与您共品好茶
  2. html+css+javascript制作爱尚音乐播放页面
  3. 为某一目录创建Internet来宾账户
  4. 领导的沉默,背后到底隐藏着什么?
  5. HDU 3687 National Day Parade
  6. ARCGIS导入数据后,属性表为空
  7. 构建知识体系(1):知识体系是什么?
  8. oracle新建一个自增列,sequence的使用
  9. ubuntu下docker的lnmp(二) 安装php-fpm之 下载镜像启动容器
  10. 我们经常看到的”缺省“是什么意思