タグ

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

  • nfsiostat で NFS の I/O レイテンシや IOPS を調べる - ablog

    NFS で iostat の await と svctm のような情報を取れるツールが欲しいと思っていたら nfsiostat という素敵なツールを見つけた。await にあたるのが avg exe (ms)、svctm にあたるのが avg RTT (ms) だと思う。 iostat の await と svctm の意味は Linux の iostat の出力結果を銀行のATMに例えて説明してみる - ablog 参照。 書式 $ nfsstat <interval> 実行例 ops/s: 秒間の read または write リクエストの発行回数 kB/s: 1秒間に read または write されたサイズ(KB) kB/op: 1回の read または write の秒間の平均サイズ(KB) avg RTT (ms): カーネルが RPC リクエストを発行してから応答までの時間

    nfsiostat で NFS の I/O レイテンシや IOPS を調べる - ablog
    ryshinoz
    ryshinoz 2016/06/16
  • Linux のページテーブルのサイズの見方と見積式 - ablog

    Linux Kernel 2.6 (x86-64) でのページテーブルのサイズの確認方法と見積式を調べてみた。 あっているか自信のないところもある&まだ書きかけ。 ページテーブルのサイズの見方 OS全体のページテーブルのサイズ $ cat /proc/meminfo MemTotal: 16158544 kB MemFree: 13134056 kB (中略) PageTables: 34428 kB ★ 34MB プロセス毎のページテーブルのサイズ $ cat /proc/10225/status # 10255 は PID Name: zsh State: S (sleeping) Tgid: 10225 Pid: 10225 PPid: 10222 (中略) VmPTE: 124 kB ★ 124KB ページテーブルのサイズの見積式 見積式 (プロセスが使用している物理メモリサイズ

    Linux のページテーブルのサイズの見方と見積式 - ablog
    ryshinoz
    ryshinoz 2015/09/04
  • SSDにしたのでI/Oスケジューラを noop に変更してみた - ablog

    PC の HDD を SSD に変更したので、I/Oスケジューラを noop に変更してみた。 SSD は HDD のようにシーク(目的のレコードが記憶されたシリンダにヘッドを移動)したり、サーチ(目的のセクタの先頭がヘッドの位置に来るのを待つ)したり、物理的な動きはない。なので、OSのI/OスケジューラでソートなんかせずにI/Oリクエストを渡してくれたほうが速いとという話だと思う。 簡単に noop が速いことを検証した上で、noop に変更した。 cfq I/Oスケジューラを cfq に設定する [root@yazekats-linux queue]# echo cfq > /sys/block/sda/queue/scheduler [root@yazekats-linux queue]# cat /sys/block/sda/queue/scheduler noop deadlin

    SSDにしたのでI/Oスケジューラを noop に変更してみた - ablog
    ryshinoz
    ryshinoz 2015/08/12
  • ablog

    電子機器 MacBook Pro 14インチ(M1) Shokz AirPods Pro Apple Watch 充電アダプター・ケーブル モバイルバッテリー スポーティ フ―ディー ブラック(+CLOTHET) ジョガーパンツ ブラック(+CLOTHET) スニーカー(NIKE Air Max 97) スニーカー(Valsport MAGIC HERITAGE) フォーマル セットアップのハンガー セットアップ(MOVB Duplex Cotton Jersey) 白シャツ(ARCODIO GINO ハイブリッドイージーケア ブロード ホワイト) クルーネックニット ホワイト(+CLOTHET SUVIN PLATINUM) ネクタイ(Loro Piana Fabric ネイビー 5.5cm) プレーントゥシューズ WHZ-0008 アウター ダウン パーカー(モンベル) パンツ デニム

    ablog
    ryshinoz
    ryshinoz 2015/08/07
  • ”私の環境で”大きなテキストファイルを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
    ryshinoz
    ryshinoz 2015/08/04
  • 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
    ryshinoz
    ryshinoz 2015/07/07
  • strace でシステムコールの所要時間を調べる - ablog

    システムコールの所要時間は strace の -T オプションで調べることができる。 上はEXCELでピボットテーブルを使ってグラフ化したもの I/Oレスポンス(read システムコールの所要時間)は5〜15ミリ秒であることがわかる 例 strace でシステムコールのトレースを取得する $ strace -ttT -o strace-T_fs_`date +'%Y%m%d%H%M%S'`.log dd if=OVMRepo.vmdk of=/dev/null iflag=direct bs=1M count=1000 -T: システムコールの所要時間(秒.マイクロ秒)を出力 ※マイクロ秒=1/1,000,000秒 -tt: タイムスタンプをマイクロ秒で出力 -o: トレースを指定したファイルに出力 出力結果 $ less strace-T_fs_20150111143101.log [.

    strace でシステムコールの所要時間を調べる - ablog
    ryshinoz
    ryshinoz 2015/01/12
  • iostat はどのように %util を算出しているか(3) - ablog

    iostat はどのように %util を算出しているか - ablog http://d.hatena.ne.jp/yohei-a/20130925/1380070554 と続いた iostat から Linux Kernel のブロックレイヤーへの旅は Etsukata blog: iostat -x の出力を Linux Kernel ソースコードから理解する のおかげでほぼ終わりを迎えました。 part_round_stats() では、その延長で、全てのリクエストがキューにいた時間の積算値を表すtime_in_queue と、デバイスがIOリクエストを発行していた時間を表す io_ticks を更新しています。io_ticksには前回のリクエスト完了から、今回のリクエスト完了までを加算し、time_in_queueにはそれに実行中のリクエスト数を掛けたものを加算しているのがわかり

    iostat はどのように %util を算出しているか(3) - ablog
    ryshinoz
    ryshinoz 2014/10/14
  • Linux で huge page を使っているプロセスを調べる方法 - ablog

    調べ方 /proc/[pid]/smaps で KernelPageSize がデフォルトの 4kB 以外のプロセスを探す。 調べ方の例 /proc/[pid]/smaps で KernelPageSize が 4 kB 以外のプロセスを探す。 [root@yazekats-linux ~]# perl -lane '/KernelPageSize/ and $F[1]!=4 and print qq/$ARGV\t$_/' /proc/*/smaps /proc/3834/smaps KernelPageSize: 2048 kB PID:3834 のプロセス名を調べる。 [root@yazekats-linux ~]# ps -fp 3834 UID PID PPID C STIME TTY TIME CMD root 3834 3832 0 13:44 pts/0 00:00:01

    Linux で huge page を使っているプロセスを調べる方法 - ablog
    ryshinoz
    ryshinoz 2014/08/16
  • ls のソースを読んでプログラマになりました - ablog

    タイトルは釣りですw*1 とあるテキストファイルを加工してCSVファイルを出力する Perl スクリプトがあり、ディレクトリ内のファイルをリストアップしてCSVファイルに出力しているのだが、なぜファイル名でソートされていないのか聞かれたので調べてみた。 その Perl スクリプトは File::DosGlob::glob でファイルリストを取得していたので、 yazekats% mkdir tmp yazekats% cd tmp yazekats% ls yazekats% touch 3 yazekats% touch 2 yazekats% touch 1 yazekats% ls 1 2 3 yazekats% perl -MFile::DosGlob -e 'map{print qq/$_\n/} File::DosGlob::glob(q/*/)'; 1 3 2 試してみると確

    ls のソースを読んでプログラマになりました - ablog
    ryshinoz
    ryshinoz 2014/03/10
  • db tech showcase 2012 で「Welcome to the Real World」というお題で発表しました - ablog

    db tech showcase 2012 の Unconference で、 "Welcome to the Real World" というお題で発表しました。 「世界中のデータベース技術者の"Rock"な叫びと生意気さがここに」というテーマということでワイルドで荒削りな資料になってます。 映画「The Matrix」をテーマに仮想世界から現実世界へというストーリーにしました。 説明がないと意味不明な資料ですが、自分の備忘録としてアップしておきます。 ※slideshare にアップしたら一部のフォントがなくて表示が崩れているところがあります 手前味噌ですが、私の発表内容や絵で見てわかるITインフラの仕組み (DB SELECTION)の「4.4 排他制御」あたりの質を理解していれば、db tech show case 2012 での Tanel Poder のセッション "Troub

    db tech showcase 2012 で「Welcome to the Real World」というお題で発表しました - ablog
    ryshinoz
    ryshinoz 2012/10/23
  • DevLOVE ターミナル勉強会「オレの*_historyが火を吹くぜ!」を覗いてきた - ablog

    内職しながら、3月26日 DevLOVE ターミナル勉強会「オレの*_historyが火を吹くぜ!」(東京都) を覗いてきた。 今日の収穫は「grep -A -B -C」。恥ずかしながら知りませんでした。キーワードにヒットした行の前X行、後X行、前後X行を表示とかできるんですね。 キーワードにヒットした行の後ろ2行を表示する。 % grep -A2 50 * foo.txt:50 foo.txt-51 foo.txt-52 キーワードにヒットした行の前2行を表示する。 % grep -B2 50 * foo.txt-48 foo.txt-49 foo.txt:50 キーワードにヒットした行の前後2行を表示する。 % grep -C3 50 * foo.txt-48 foo.txt-49 foo.txt:50 foo.txt-51 foo.txt-52 以下はかなり断片的な自分用メモ。 「誰

    DevLOVE ターミナル勉強会「オレの*_historyが火を吹くぜ!」を覗いてきた - ablog
    ryshinoz
    ryshinoz 2012/04/07
  • 1