[SCore-users-jp] scored のクラッシュ
Naoya Maruyama
naoya.maruyama @ is.titech.ac.jp
2005年 10月 28日 (金) 17:58:19 JST
東京工業大学松岡研究室の丸山と申します。
当方の環境で発生するscoredのクラッシュについて質問させて頂きます。ご回答頂ける
と幸いです。
以下の環境でSCore v5.4をマルチユーザモードで使用しております。
CPU: PentiumIII 1.4GHz
OS: Redhat7.2
Kernel: 2.4.19 with SCore patch
Network: Myrinet2K, Ethernet
この環境でsc_watch経由でscoredを稼働させているのですが、以下に述べるような
scoredのクラッシュが発生します。sc_watchのタイムアウトはデフォルトの10分のまま
です。
1. "Network freezing timeout"
一部の計算ノードのscoredから上記のメッセージが出され、その後sc_watchによるモニ
タリングがタイムアウトし、システム全体が再起動されます。また、このメッセージを
出すノードは毎回一定ではありません。
ソースコードを見てみますと、同メッセージは
score-src/SCore/scored/scored/scorepm.cc の freeze_sending() 関数より出力された
ものと思います。この関数内で pm_is_stable() 関数を最内ループで繰り返し呼んでい
ますが、10M回呼んでもリンクが "stable" にならなかったため、SCORE_PANIC関数が呼
ばれ、同メッセージが出力されたものと思います。
この関数について、まず確認したいのですが、これはリンクの送信バッファに未処理パ
ケットが残っていないことを確認するものという理解でだいたい正しいでしょうか?
また、SCore v5.8.2の該当部分を見てみますと、SCORE_PANIC()関数を呼ぶま
での閾値が1万へ変更されていること、1000回以降はループボディの最後に
usleep(100) としていること、の違いがあります。この変更について、変更し
た理由と当方の環境でのクラッシュがこの変更によって解決しそうかどうか、
教えていただないでしょうか?また、そもそもなぜリンクが "stable" 状態に
ならないことついてどのような理由が考えられますでしょうか?
2. scbcastへの送信エラー
sc_watchがタイムアウトを検出してシステム全体がシャットダウンされた後、再起動を
試みて以下のログを残して失敗しました。
sc_watch: <125> SCore-D:WARNING Failed to connect to sysmon server
(n001.example.jp:9904).
ここでいう sysmon server というのは scbcast のことだと思うのですが、scbcast と
sc_watch は同一ノード (n001) で動いており、sc_watch は通常通り稼働していまし
たので、少なくともノードn001自身がダウンしていたわけではないと思います。おそら
く何らかの理由でn001上のscbcastがダウンしていたか、n001へのTCP/IPリンクに問題が
あったかだと思います。
さらに、最初のシステムシャットダウンがそもそもなぜ起きたか調べてみますと、計算
ノード中の最後尾にあるノードにおいて、以下の関数呼び出しが行われ、最後の write
システムコールでブロックしたままになっていることがわかりました。
output_job_status() -> write_sysmon() -> score_write_short() -> write()
(途中の関数が一部抜けているかもしれません)
そのため、sc_watchのモニタリングに応答できず、タイムアウトが発生したものと思わ
れます。この一連の事象について以下の質問に答えて頂けると幸いです。
まず、上記の解析は正しいでしょうか?
また、正しいとすると、scbcastへのwriteについてタイムアウトなどを設けず、ブロッ
クさせてしまう理由は何かありますでしょうか? scbcast そのものは scored とは別プ
ロセスとして分離されているにも関わらず、scbcastがダウンした際にscoredまでダウン
させてしまうのはなぜでしょうか?
以上、ご回答頂けると幸いです。よろしくお願いします。
丸山直也
東京工業大学数理計算科学専攻松岡研究室
SCore-users-jp メーリングリストの案内