如何利用多核CPU來加速你的Linux命令 — awk, sed, bzip2, grep, wc等
你是否曾經有過要計算一個非常大的資料(幾百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://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/相關推薦
如何利用多核CPU來加速你的Linux命令 — awk, sed, bzip2, grep, wc等
你是否曾經有過要計算一個非常大的資料(幾百GB)的需求?或在裡面搜尋,或其它操作——一些無法並行的操作。資料專家們,我是在對你們說。你可能有一個4核或更多核的CPU,但我們合適的工具,例如 grep, bzip2, wc, awk, sed等等,都是單執行緒的,只能使
python的多線程為什麽不能利用多核CPU?
虛擬 pytho 能夠 並發 我們 就是 比較 inter 情況 python 為什麽不能利用多核CPU GIL: (1)其實是因為在python中有一個GIL(Global Interpreter Lock),中文為:全局解釋器鎖。 1、是最開始python為了數據安全設
python學習筆記- day10-【問題: python為什麽python的多線程不能利用多核CPU?】
例如 currency 視頻 stat 解碼 核心數 __name__ args 制作 為什麽python的多線程不能利用多核CPU,但是咱們在寫代碼的時候,多線程的確是在並發,而且還比單線程快。 一、python的多線程不能利用多核CPU? 原因: 因為GIL,
為什麽python的多線程不能利用多核CPU,但是咱們在寫代碼的時候,多線程的確是在並發,而且還比單線程快。
全局 睡眠 read 處理 sleep roc 需要 寫代碼 強制 python裏的多線程是單cpu意義上的多線程,它和多cpu上的多線程有著本質的區別。單cpu多線程:並發多cpu多線程:並行內部包含並發 首先強調背景: 1、GIL是什麽?GIL的全稱是Gl
python單程序能否利用多核cpu的測試結論
在很早的時候,就聽網上的文章說: python有GIL,所以在單程序內,即使使用多執行緒也無法利用到多核的優勢,同一時刻,python的位元組碼只會執行在一個cpu上。 以前也是奉為真理,直到今天在對自己的python server做效能測試的時候,發現一個python程序的c
淘寶面試題:如何充分利用多核CPU,計算很大的List中所有整數的和
引用 前幾天在網上看到一個淘寶的面試題:有一個很大的整數list,需要求這個list中所有整數的和,寫一個可以充分利用多核CPU的程式碼,來計算結果。 一:分析題目從題中可以看到“很大的List”以及“充分利用多核CPU”,這就已經充分告訴我們要採用多執行緒(任務)進行
【好文】淘寶面試題:如何充分利用多核CPU,計算很大的List中所有整數的和
引用 前幾天在網上看到一個淘寶的面試題:有一個很大的整數list,需要求這個list中所有整數的和,寫一個可以充分利用多核CPU的程式碼,來計算結果。 一:分析題目 從題中可以看到“很大的List”以及“充分利用多核CPU”,這就已經充分告訴我們要採用多執行緒(任務)進行
python多執行緒為什麼不能利用多核cpu
利用 ctypes 繞過 GIL ctypes 與 Python 擴充套件不同,它可以讓 Python 直接呼叫任意的 C 動態庫的匯出函式。你所要做的只是用 ctypes 寫些 python 程式碼即可。最酷的是,ctypes 會在呼叫 C 函式前釋放 GIL。所以,我們可以通過 ctypes 和 C 動
如何充分利用多核CPU,計算很大的List中所有整數的和
引用 前幾天在網上看到一個淘寶的面試題:有一個很大的整數list,需要求這個list中所有整數的和,寫一個可以充分利用多核CPU的程式碼,來計算結果。 一:分析題目從題中可以看到“很大的List”以及“充分利用多核CPU”,這就已經充分告訴我們要採用多執行緒(任務)進行
Python怎麼利用多核cpu
利用 ctypes 繞過 GIL ctypes 與 Python 擴充套件不同,它可以讓 Python 直接呼叫任意的 C 動態庫的匯出函式。你所要做的只是用 ctypes 寫些 python 程式碼即可。最酷的是,ctypes 會在呼叫 C 函式前釋放 GIL。所以,我們可以通過 ctypes 和 C 動
linux top命令查看內存及多核CPU的使用講述【轉】
http 最小 文件 改變 總計 href 獲取 gif www. 轉載一下top使用後詳細的參數,之前做的筆記找不見了,轉載一下,作為以後的使用參考: 原文地址:http://blog.csdn.net/linghao00/article/details/8059244
linux top命令檢視記憶體及多核CPU的使用
檢視多核CPU命令 mpstat -P ALL 和 sar -P ALL 說明:sar -P ALL > aaa.txt  
Linux top命令檢視多核CPU每個核心的使用率
op命令是linux下常用的工具,可以檢視各個程序的CPU使用情況。先看一個例項:這是Ramnode雙核VPS的top顯示結果:左上角可以看到CPU的使用率是11.3%,但是看下面的程序,plugin-containe就佔用了17.6%。出現這樣的情況是因為11.3%指的是所
多核CPU利用測試
一直在想程式上是否特意讓執行緒在指定的CPU上去執行,這樣可以提高執行效率,所以特地寫個程式碼讓CPU使用率畫正弦曲線的實驗,我使用的是AMD X4 641的CPU,為四核四執行緒的片子。 程式碼如下 #include "stdafx.h" #include <i
Java多執行緒通過多核CPU來提升速度--更快的執行
全文翻譯自15L大神 方案1:單執行緒 假設有個請求,這個請求服務端的處理需要執行3個很緩慢的IO操作(比如資料庫查詢或檔案查詢),那麼正常的順序可能是(括號裡面代表執行時間): a、讀取檔案1 (10ms) b、處理1的資料(1ms) c、讀取檔案2 (10ms)
Zabbix通過SNMP監控多核CPU使用率時, 計算CPU平均使用率
mes ces zabb ext 觸發器 trend times http sso 環境:沒有Agent,只能通過SNMP監控時,需要獲取多核CPU的平均使用率。 ZABBIX的使用SNMP監控CPU使用率時,由於設備都是多核CPU,監控的都是單獨某一核心的使用率,但單獨某
為什麽利用多個域名來存儲網站資源會更有效?
域名 緩存 blog size ges nbsp 防止 ont 宋體 為什麽利用多個域名來存儲網站資源會更有效? 三個最主流的原因: 1. CDN緩存更方便。 2. 突破瀏覽器並發限制。 3. Cookieless, 節省帶寬,尤其是上行帶寬 一般
多核CPU上python多線程並行的一個假象
llb 使用 發展 重要 multi 定律 依賴 並發 操作 引用鏈接:http://www.cnblogs.com/pengyingh/articles/6586760.html GIL 與 Python 線程的糾葛 GIL 是什麽東西?它對我們的 python 程序會產
Zabbix監控多核CPU
cto RoCE http size mage f11 cover 空格 建圖 服務器的cpu核心數不同,需要對服務器性能的監控需要對cpu各個核心進行監控。1、創建搜索規則自動發現服務器上所有CPU核心數鍵值名為:system.cpu.discovery2、創建監控項原型
查看系統cpu性能top和多核cpu使用性能
sta 情況 top 查看系統 系統 停止 排序。 性能 內存 1、使用top查看系統當前負載情況。 在顯示過程 按P會按照cpu使用率排序,按M會按照內存占用率排序。 2、多核CPU上,每個核的使用率,使用 mpstat mpstat -P ALL 1