[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 メーリングリストの案内