タグ

ブックマーク / blog.etsukata.com (5)

  • 手軽にqemuのトレースを採る

    qemu内部のロジックを追ったり、性能解析をするにはトレース採取が有効です。qemuのトレースを手軽に採る方法についての投稿です。 qemuのトレースを採る方法については、いくつかありますが、標準エラー出力にトレースを書き出す "stderr" trace-backend がもっとも簡単な方法です。 "stderr" backend の仕組みは qemu 内部のトレースイベントを標準エラー出力にデバッグprintfをするという非常に単純なものです。 qemu-kvm 0.15よりサポートされています。 関連コミット: http://git.qemu.org/?p=qemu.git;a=commit;h=320fba2a1f384e17db150d74540a2cf005eb47b5 使い方 qemuのトレースは採取しない設定でもオーバヘッドがあるため、デフォルトではオフになっています。トレ

  • Etsukata blog

    Memcached を運用中に、Request の傾向は変わっていないにもかかわらず、徐々に Item 数が増加し始め、 ある時を境に Item が 一切 Eviction/Expire されなくなり、Memory が枯渇し Slab OOM Error が起こる、という不具合に遭遇しました。不具合の原因については特定し、1.4.29 で修正がマージされました (Pull-Request: fix zero hash items eviction , ReleaseNote1.4.29) 。不具合が発生する条件、原因、回避策を簡単にまとめておきます(Pull-Request にはより詳しく書いてあります)。 Memcached Version : 1.4.19 から 1.4.28 SET した Key を GET しない場合がある Item を入れ替える Command (APPEND,

  • Linux システムコールのブロック・ノンブロックまとめ

    はじめに Linux にはブロックするシステムコールとノンブロックなシステムコールがあります。さて、システムコールが「ブロックする」とはどういうことでしょうか。よく、ブロックするシステムコールとは「処理が完了するまでプロセスの動作が中断され待たされること」という説明を見ますが、より詳細に、どういう処理の場合に待たされるのか、整理してみましょう。 「ブロックする」とは Linux において、システムコールがブロックするとは、「プロセスが、システムコール呼び出しの延長で待状態(TASK_INTERRUPTIBLE or TASK_UNINTERRUPTIBLE) に遷移し、CPU時間を消費せずにあるイベントが完了するのを待つようになる」、ことを指します。ブロックするシステムコールのうち代表的なものと、完了待ち対象イベントをまとめると、以下のようになります。 システムコール待ち対象イベント re

  • Etsukata blog: Hadoop : CPU system 使用率高騰 "zone_reclaim_mode = 1" 編

    はじめに 会社で PB 級の Hadoop クラスタを運用していますが、ある日から Datanode の CPU system (Kernel 内での CPU 使用率) が高騰し、Job が遅延するという症状が発現しました。Hadoop で CPU system 高騰というと、 Transparent HugePage 設定が有名ですが、そちらについては既に特定し、対策済みでした。 THP と Hadoop に関係については下記 Blog が詳しいです。 Transparent Huge Pages and Hadoop Workloads 今回は THP ではなく、 "zone_reclaim_mode" の設定による性能劣化について、現象から原因特定に至るまでの経緯と、推奨する設定について解説します。 現象 観測された現象について簡単に箇条書きします。 CPU user が 5% 程度

    Etsukata blog: Hadoop : CPU system 使用率高騰 "zone_reclaim_mode = 1" 編
  • Etsukata blog: Docker を支える Linux Kernel の機能 (概要編)

    はじめに Docker はコンテナ型仮想化技術を使ってOSレベル仮想化を実現するコンテナ管理ソフトウェアです。類似のコンテナ管理ソフトとしては、Docker の他にも libvirt、 lxc-tools などがありますが、 Docker には以下の大きな特徴があります。 Infrastructure as Code の思想に基づき、コンテナをコード(Dockerfile) で管理できる docker index  で、コンテナイメージを手軽に取得、共有できる Docker は上記のような特徴を持つため、アプリケーションのポータビリティを大きく向上させることができると期待されています。 参考:Naoya Ito 氏 "Dockerアプリケーションのポータビリティを考える" 大変便利な Docker ですが、Docker によるコンテナ管理は、実は数多くの Linux Kernel の機能に

    Etsukata blog: Docker を支える Linux Kernel の機能 (概要編)
  • 1