Skip to content

Instantly share code, notes, and snippets.

@suma
Created November 1, 2012 07:04
Show Gist options
  • Select an option

  • Save suma/3992258 to your computer and use it in GitHub Desktop.

Select an option

Save suma/3992258 to your computer and use it in GitHub Desktop.
Jubatus 0.3.3 RPC: get_statusで得られるステータス情報

Jubatus 0.3.3 RPC: get_statusで得られるステータス情報

Jubatus 0.3.3リリースの実装をもとに記述する。

API

  • map<string, map<string, string>> get_status(string name)
  • 引数
    • インスタンス名(実行時引数の--name, -n)
    • ただし、無視されるので空文字列の指定でも現状は動作する
  • 返り値
    • 型情報(mapのkey, valueは全部string)
    • key: ホスト名。形式は "127.0.0.1_9199" (sprintf(value, "%s_%d", ipaddr, port))
    • value: map<string, string>: ステータス情報
      • key: ステータス名
      • value: ステータスの値(文字列)

ステータス情報(key, value)

timeout, threadnum, tmpdir, interval_sec, interval_count, zkはJubatus起動時に指定した引数でもある。 VIRT, RSS, SHRはJubatusプロセスのメモリ情報(ただしページサイズ単位で計測される)。単位はKB。Linux以外のOSでは0が返る。 VERSIONはビルド時に決定されるためインストール後に値が変わることはない。PROGNAMEは基本的にインストール後に変わる可能性はまずないが、プロセス起動時に自身のプロセス名を確認しにいくため、ユーザがプログラム名のファイル名を変化させるとそれに追随して変化する(開発者がオリジナルのサーバを自作した時にも対応できるようにするのがその理由である)。

  • VERSION

    • Jubatusのバージョン番号の文字列
    • ここではJubatus 0.3.3を対象に説明しているため、"0.3.3"が返る
  • PROGNAME

    • "jubaclassifier"や"jubastat"といったJubatusサーバのプログラム名(プロセス名)
  • timeout

    • PRCサーバの通信タイムアウト秒数
  • threadnum

    • RPCサーバのRPC処理可能なスレッド数
  • tmpdir

    • ログ出力ディレクトリ先のパス
  • interval_sec

    • (分散構成、ZK使用時)のMIXのインターバル[秒]
  • interval_count

    • (分散構成、ZK使用時)のMIXのインターバルとなるupdate回数[数]
  • is_standalone

    • 1台で動いているときは "1"、分散構成のZK有り動いているときは "0" を返す
  • update_count

    • update(書き込み、更新)のRPCが実行された回数。updateの度にインクリメントされる
    • src/server/classifier.idl などのIDLに @update といった装飾子でどんな操作か指定されている
  • zk (ZKなしでビルドしたとき値を返さない)

    • jubatus起動時に指定するZKホスト名
    • 192.168.0.10:2181,192.168.0.11:2181 といった形式で複数指定されることもある
  • use_cht (ZKなしでビルドしたとき返さない)

    • chtを使うとき"1"、使わないとき"0"(になるはず。確認中…)
  • linear_mixer.count(0.3.2以前だとcount

    • update_countと同期してインクリメントされるMIXのカウンタ
    • interval_countを超えるとMIXの実行を試みる
    • MIXが実行されると、カウントが0にリセットされる
  • linear_mixer.ticktime(0.3.2以前だとticktime

    • 最後にMIXした時刻の秒数 (1970年1月1日00:00:00 UTCからの経過時間)
    • この時刻からinterval_secを超えると、MIXの実行を試みる
    • MIXが実行されると、その時刻にセットされる
  • VIRT (virtual size)

    • 1プロセスで有効な仮想メモリサイズ(総量)
  • RSS (resident size)

    • 1プロセスで利用している物理メモリのサイズ。RESとも言う。
  • SHR (shared)

    • 他プロセスと共有しているメモリサイズ

おまけ:運用時の監視

運用時に何をすればJubatusが動作していることを確認できるか?

ZK無しのスタンドアローンなとき

  • get_status RPCを実行して結果が返ること(update_countの増加を確認できれば、update要求が実行され続けていることを確認できる)
  • 実際にupdate/analyzeのRPCを呼び出して、update/analyzeが実行可能なことを確認する

ZK有り・分散構成時

  • スタンドアローンなときと同じ方法を使うことも可
  • 分散構成(ZK有り)の場合は、ZKの/jubatus/ 以下に生きているプロセスのIPアドレスが登録されている
    • ZKを利用したメンバシップ・ファイルパスについては別途記述
    • 実装場所: src/common/membership.{hpp, cpp}

TBD

  • boolがtrueだと"1", falseだと"0"が返されている件

    • 実装時、lexical_castでboolから文字列へ変換しているため。今後 "true"/"false" に修正される可能性があるかも
  • 必要なステータス情報が追加、不要なものは削除もしくは別のRPCへ移動する可能性がある

    • アルゴリズムに特化した情報した統計情報の追加が議論中(議論の前段階として、整理が必要)

今後追加しそうな項目(未検討)

  • 読み込みRPC呼び出し回数(@analyze/@nolockなど)
  • running_time
    • プロセスの実行時間
  • epoch_time
    • サーバの時刻
  • server_type
    • サーバの種類 "stat", "classifier", "graph", "recommender", "regression"
  • fv_converterの設定情報
    • アルゴリズム名
    • 特徴抽出の設定
  • 統計情報
    • アルゴリズムに依存したもの
    • 入力されたデータに関する情報
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment