タグ

ブックマーク / yohei-a.hatenablog.jp (6)

  • ノンブロッキング I/O について調べてみた - ablog

    ノンブロッキングI/Oについて調べてみました*1。ノンブロッキングI/OはSQLの「SELECT ... FOR UPDATE NOWAIT」のイメージに近いのかなと思いました。通常は待つケースで待たずにエラーが返ってきて、アプリケーション側でエラーハンドリングしてリトライするといった使い方になるようですね。 ポイントは以下の点だと思います。 通常、ノンブロッキングI/OはネットワークI/Oに使い、ディスクI/Oには使わない。 open()にO_NONBLOCKフラグを渡したり、 ioctl(fd, FIONBIO, 1)でノンブロッキングモードにすることができる。 ノンブロッキングモードでは通常はブロックされるケースで、ブロックされずにerrnoにEAGAINが設定されて返ってくる。 シングルスレッドで複数の接続を処理できるのでC10K問題を回避できる。 膨大な接続があるが、常に全ての接

    ノンブロッキング I/O について調べてみた - ablog
    takc923
    takc923 2018/01/22
  • LinuxでCPU使用率を上げるコマンド - ablog

    いいものを見つけたのでコピペ。 yes >> /dev/null & 最後に & お勧め w(二つターミナルが必要でなくなる。) ちなみに メモリ負荷をあげる魔法のコマンド /dev/null < $(yes) & LinuxCPU負荷を上げる魔法のコマンド - Qiita ">>" は ">" でも良いと思うが、何か特別な理由があって">>"にしているのだろうか。 追記(2014/10/08): ただのメモにはてブがたくさん(当社比)ついてビックリ(^-^; コア数に対する考慮が足りない。 コア数に対する考慮が足りない。 - gomakyuのコメント / はてなブックマーク とコメントを頂いた通り、上記のコマンドを実行しても1つの論理CPUを使い切るだけです。 例えば上の図の通り、1ソケット * 4コア * 2スレッド で論理CPU数が8の場合は、ざっくり、1多重で実行すると12.5%

    LinuxでCPU使用率を上げるコマンド - ablog
    takc923
    takc923 2017/03/31
  • ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog

    大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog を書きましたが、awk file > file より cat file|awk > file が速い環境は稀なようなので、私の環境でなぜ cat file|awk > file のほうが速いのか調べてみました。プロセススケジューラが関係しているようです。 ↑はPerf + Flame Graphs で、awk file > file 実行時のコールスタックと所要時間を可視化したものです。 結論(たぶん) SSDの暗号化・復号をカーネルスレッドで行なっているのと、プロセススケジューラが awk とカーネルスレッドを同じ CPU にスケジューリングしていた(他に空いている CPU があるのに)。 awk file > file では暗号化データを復号するカーネルスレッドと awk のプロセスをプロセススケ

    ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog
    takc923
    takc923 2017/03/31
  • perf + Flame Graphs で Linux カーネル内のボトルネックを特定する - ablog

    Linuxでddで1GBのファイルを作成し perf でプロファイリングし、Flame Graph (炎のグラフ?)にして可視化したものです。 Flame Graphs は perf(Linux)、SystemTap(Linux)、DTrace(Solaris、Oracle Linux(UEK)、Mac OS X、FreeBSD)、XPerf.exe(Windows) などでのプロファイリング結果を可視化して最も使われているコードパスを早く正確に特定することができます。実体はプロファイリング結果をグラフ(SVG)に変換する Perl スクリプトです。 下から上に行くほどコールスタックが深く、左から関数名のアルファベット順でソートされています。一番上で横幅が広い関数がCPUを長く使っています。今回は "_aesni_enc1" つまり暗号化がボトルネックになっていることがわかります。 システ

    perf + Flame Graphs で Linux カーネル内のボトルネックを特定する - ablog
  • Linux でプロセスが通信しているIPアドレスとポートを調べてみた - ablog

    PHPで書かれたWebアプリのDB接続先を設定した後に、当に設定したホストに接続されてるんかいなと思ってちょっと調べてみた。 netstat とかでだいたいわかるけど、厳密にプロセスがどのホストと通信しているか調べてみた。 httpd プロセスの PID を調べる。 # ps -ef|grep [h]ttpd root 650 1 0 2009 ? 00:15:39 /usr/local/apache/bin/httpd root 29147 1 0 2009 ? 00:07:42 /usr/local/apache2/bin/httpd -k start httpd 25157 650 0 May24 ? 00:00:33 /usr/local/apache/bin/httpd httpd 24441 29147 0 May27 ? 00:00:35 /usr/local/apache

    Linux でプロセスが通信しているIPアドレスとポートを調べてみた - ablog
    takc923
    takc923 2016/01/27
  • 大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog

    以下、長々と書いてますが、結論は ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablogに書いてます はじめに awk file より cat file|awk のほうが速いという以下のブログエントリが興味深いので調べてみました。 ちなみに cat file|awk が速くなる環境は稀で、巷では awk file のほうが速い環境のほうが多いようで、どちらが速いかは環境依存です。 [root@localhost sample]# cat command1 awk '$5 ~ /((26|27|28|29|30)\/Jun|(01|02|03)\/Jul)/{ print }' sample.txt > result1.txt (中略) [root@localhost sample]# time sh command1 real 0m53.92

    大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog
    takc923
    takc923 2015/07/29
  • 1