タグ

ブックマーク / takuya-1st.hatenablog.jp (3)

  • マルチコアのCPUを使い切って圧縮を速くする - それマグで!

    gzip の限界 = CPU 1コア マルチコア・マルチスレッドのCPUがあるのに、gzip や lzma(xz)や bzipといったメジャーな圧縮は、CPUを1コアで処理するんですね。 CPU使用率を見てみたら、CPU利用率は100%を超えないんですね。 HDD・SSDの書き込み速度に限界があるからそれでも良かったんだろうが。いまはメモリが一般的に64GBもある時代です。うちのマシンでもメモリが12GBもあるのに3GB程度の圧縮に、5分とか耐えられません。もうちょっと速くしたい。 cpu利用率が100%で頭打ちになる。gzip gzipを使ってると、CPU利用率が100%で止まるんですよね。lzma などの他の圧縮でも同じ。 gzip/ gunzip をマルチで処理する pigz / unpigz Pigz のマニュアルには次のように書いてある。スレッドを使って並列処理をするっぽい。 P

    マルチコアのCPUを使い切って圧縮を速くする - それマグで!
  • bash の for と パイプ(xargs) の一番大きな違い - それマグで!

    bash の似たものシリーズ 初心者が躓きそうなbash で似て紛らわしいものの違いをはっきりさせようとさせるシリーズ。 bash に於ける xargs / for には違いがあるのか? あります。結構大きな違いが有ります。 それぞれのループの回しかたを復習しておきましょう。 for ループでコマンド結果を回す for e in some_command ; echo $e; done xargs パイプでコマンド結果を回す some_command | xargs -I @ echo @; この2つの、コマンドの実行には違いが在るのでしょうか。またコマンドの実行の速度には違いが出るでしょうか? 2つの違い xargsはサブシェルを起動するので変数の名前空間が違う コマンドの終了を待つfor と 終了を待たない xargs こんかいは、この後者の違いについて着目したいと思います。 毎秒カウ

    bash の for と パイプ(xargs) の一番大きな違い - それマグで!
    otori334
    otori334 2020/04/02
  • シェル・スクリプトの同期・並列実行(マルチスレッド処理っぽいこと) - それマグで!

    シェル・スクリプトで、マルチスレッド処理っぽく、複数プロセスを起動して、まとめて処理をして処理時間を稼ぎたい。 wait コマンド 複数プロセスを起動してバックグラウンドに回し、wait で処理終了を待つことが出来る convet *.png out.jpg #なに手を加えない場合 バックグラウンドで大量に起動して処理を待つ for i in *.png ; do convert $i $i.jpg & ; done wait wait をすると、複数起動したバックグラウンド・ジョブをすべて待つことが出来ます。 同時実行制御 CONCURRENT_COUNT=3 NUM_PROCESS=0 for name in *.png ; do NUM_PROCESS=NUM_PROCESS+1 convert $name $name.jpg & if ( ( $NUM_PROCESS >= $CO

    シェル・スクリプトの同期・並列実行(マルチスレッド処理っぽいこと) - それマグで!
    otori334
    otori334 2019/11/17
  • 1