[SCore-users-jp] OpenMPでのスタック

kameyama @ pccluster.org kameyama @ pccluster.org
2004年 6月 23日 (水) 15:01:54 JST


亀山です.

In article <20040622103518k-ikegami @ mail.jp.nec.com> k-ikegami @ aj.jp.nec.com wrotes:
> 走らせていると、途中で
>  <0> SCORE WARNING: Physical memory might be exhausted.
> の表示が出て、本表示の数時間後にスタックしました。
> 少し前に本MLで話題に”おせっかいメッセージとして”話題に上っていたので、直接
> 原因では
> ないのかな?と考えています。
> (スタックしたときにfreeコマンドで見てもswapを使い果たしていませんでした。)

よくわかっていませんが, memory が swap している状態で
SCASH を使うのが問題なのかもしれません.

> psで見るとプロセスは生きているので、GDBでバックトレースしてみると、
> 下記の様に、3,4番目のノードでシグナルハンドラが呼ばれていました。1,2番
> 目のノードは
> バリア同期待ちのようです。
> 同じプログラムを1×2環境(1プロセッサ2CPU)で走らせると、1日経過して
> も症状は発生しません。
> 
> シグナルハンドラが呼ばれているUser_Function_1を徹底的にデバッグしましたが、特
> に問題になり
> そうなコードを発見できない状況です。

User_Function_1 で signal handler が呼ばれていること自体は問題ありません.

OpenMP では共有メモリを前提としているのですが, 当然,
cluster を構成する host 間は, memory を共有できません.
そのため, 共有すべきページがその host にない場合,
別のホストからコピーしてくる必要があります.
SCASH では, そのページがホストにないことを SIGSEGV シグナルで検出し,
scash_vm_handler() を呼び出し, scash_page_rma_copy() で, 別の
host からそのページを持ってきます.
と, いうことで, OpenMP/SCASH を使用している場合, scash_vm_handler()
が呼ばれているのは特別なことではなく, 正常な動作です.

で, そのページが相手の host にあればよいのですが, swap out
していると危ないのかも...

                       from Kameyama Toyohisa



SCore-users-jp メーリングリストの案内