タグ

ブックマーク / siguniang.wordpress.com (3)

  • GNU Parallel作者が書いたParallel:The Command-Line Power Toolを読んだ

    プログラムを並列処理する GNU Parallel というプログラムがある。このプログラムの作者 Ole Tange が usenix February 2011, Volume 36, Number 1 に “The Command-Line Power Tool” という記事を書いていたので読んでみた。6ページで GNU Parallel の主要機能がひと通り解説されているので、GNU Parallel の機能をピンポイントでしか知らない人(=自分)が読むと、いろいろと使いどころが湧いて来ると思う。 GNU Parallel: The Command-Line Power Tool February 2011, Volume 36, Number 1 Authors: Ole Tange https://www.usenix.org/publications/login/februar

    GNU Parallel作者が書いたParallel:The Command-Line Power Toolを読んだ
  • supervisorのWebインターフェース/XML-RPCを使う

    Python で書かれた supervisor という djb の Daemontools のようなプロセス管理ツールがある。 大きく分けて4つのプログラムから成り立っている。 supervisord : サーバーサイドのデーモン supervisorctl : クライアントサイドのコマンドラインインターフェース Web 管理インターフェース XML-RPC インターフェース Web 管理インターフェースと XML-RPC インターフェースを使ってみたのでそのメモ。 基設定 まずは、ベースラインとして4つの tornado を起動する設定を追加。 [group:tornadoes] programs=tornado-8000,tornado-8001,tornado-8002,tornado-8003 [program:tornado-8000] command=python /path

    supervisorのWebインターフェース/XML-RPCを使う
  • supervisorのプロセス再起動の仕組み

    プロセス管理ツールの supervisor では、設定したプログラムをデーモン起動させ、意図せずにプロセスが終了した場合は、自動再起動する仕組みがある。 プログラムを確認すると、基的には supervisord が各プログラムを fork & exec し、あとは異常終了により zombie になったプロセスがないか wait(non-blocking)  し、終了したプロセスを再び fork & exec しているだけ。supervisord デーモンを strace  すると select(2) と wait4(2) のシステムコールの嵐になっている。 簡単なサンプルコード supervisor のソースコードをもとに、fork & exec => wait & reap zombies => fork & exec の一連のフローを実装したプログラムが以下。fork したプログラム

    supervisorのプロセス再起動の仕組み
  • 1