[SCore-users-jp] pm_path_lookupとは?

原 元康 m-hara @ pst.fujitsu.com
2004年 12月 13日 (月) 13:31:29 JST


SCore開発関係者様

 富士通プライムソフトテクノロジの原です。
 お世話になっております。

  当方のSCore環境において、計算ノード上のscored.exeが終了しない現象が発生しました。
 その時のpsの出力は、以下となります。

---ここから---
  F S UID        PID  PPID    SZ WCHAN  STIME     TIME CMD
140 S guest    10133     1   673 do_sel 13:09 00:00:00 /opt/score-5.6.1/deploy/bin.i386-redhat8-linux2_4/scremote.exe 0 pc2 4
000 S guest    10134 10133  6890 do_sel 13:09 00:01:53 /opt/score-5.6.1/deploy/bin.i386-redhat8-linux2_4/scored.exe -singleuse
040 S guest    10158 10134     0 end    13:09 00:00:00 [pm_path_lookup]
---ここまで---

  上記、psの[pm_path_lookup]とは何ものなでしょうか?

 また、現象が発生した時に、scored.exeに対して、straceを実施したところ、以下の部分で
ループしていることを確認できています。

---ここから---
munmap(0x40026000, 4096)                = 0
ioctl(516, SNDCTL_DSP_SETTRIGGER, 0)    = 0
ioctl(516, SNDCTL_DSP_SETTRIGGER, 0)    = 0
setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
wait4(-1, 0x4085cec0, WNOHANG|WUNTRACED, 0x81626a0) = -1 ECHILD (No child processes)
select(219, [199 213 218], NULL, NULL, {0, 10000}) = 0 (Timeout)
getppid()                               = 10133
open("/proc/meminfo", O_RDONLY|O_LARGEFILE) = 201
fstat64(201, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40026000
read(201, "        total:    used:    free:"..., 4096) = 658
close(201)                              = 0
---ここまで---

  SCoreのソース上、以下の部分でループしていることは確認できたのですが、それ以上が
不明な状況です。

---ここから---
(1) SCore/mttl-ult/ult/mpcxx_thread_inlines.h
ULTthread *ult_dequeue( void ) {
  ULTthread     *thread;

  ULT_TRACE( 1, ">Dequeue" );

  thread = ult_current_thread;
  while( 1 ) {                    ★ループ処理★
    ult_get_messages();
    ult_idle_hook(); ★★->(2)のult_idle_hook()が呼び出される★★
  if( ult_local_threadq != NULL ) break;
#ifdef ULT_RECV_BLOCKING
    ult_recv_blocking();
#endif
    ULT_IDLE;
  }
   : 以下、続く。

(2)  SCore/scored/scored/idle.c
void ult_idle_hook( void ) {    /* Do not suspend in this thread */
  extern void check_resource_max( void );
  extern int flag_memlimit;
  int n = 0;
  ult_begin_atomic();

  if( score_pmnet[0] ) pmBeforeSelect( score_pmnet[0] );
  {
    bcopy( (char*) &fds_select, (char*) &fdsc, sizeof( fd_set ) );

    ult_get_messages();         // to extract all messages in recv buffer
    timer_check();
    watch_child();★★
   : 以下、続く。


static inline void watch_child( void ) {
  extern PeGroup *current_pegroup;
  static struct rusage ru;      // not to grow stack
  PeGroup *peg;
  PE *pe;
  int wpid;
  int status;

  while( 1 ) {
    errno = 0;
    wpid = wait3( &status, (WUNTRACED|WNOHANG), &ru );
   : 以下、続く。

---ここまで---

 もうしわけありませんが、どなたか、psの[pm_path_lookup]とは何ものなのか?
 何故、ループしているのかわかりませんでしょうか?
 現象が、ほとんど、再現しないため、原因がつかめないので、少し、アドバイスをお願い
したいと思い、メールを発信させていただきました。

以上、どうか、よろしくお願いします。



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