Thursday, July 19, 2007

SGE Grid Job Dependency

It is possible to describe SGE (Sun Grid Engine) job (or any other grid engine) dependency in a DAG (Directed Acyclic Graph) format. By taking advantage of the opensource Graphviz, it is very easy to document this dependency in DOT language format. Below shows you a sample DOT file:

$ cat job-dep.dot
digraph jobs101 {
        job_1 -> job_11;
        job_1 -> job_12;
        job_1 -> job_13;
        job_11 -> job_111;
        job_12 -> job_111;
        job_2 -> job_13;
        job_2 -> job_21;
        job_3 -> job_21;
        job_3 -> job_31;
}

With this DOT file, one can generate the graphical representation:

$ dot -Tpng -o job-dep.png job-dep.dot

It is also possible to derive the corresponding SGE commands by the following Tcl script.

$ cat ./dot2sge.tcl
#! /usr/local/bin/tclsh


if { $argc != 1 } {
        puts stderr "Usage: $argv0 "
        exit 1
}
set dotfile [lindex $argv 0]
if { [file exists $dotfile] == 0 } {
        puts stderr "Error. $dotfile does not exist"
        exit 2
}


# assume simple directed graph a -> b

set fp [open $dotfile r]
set data [read $fp]
close $fp


set sge_jobs {}
foreach i [split [lindex $data 2] {;}] {
        if { [regexp {(\w+)\s*->\s*(\w+)} $i x parent child] != 0 } {
                lappend sge_jobs $parent
                lappend sge_jobs $child

                lappend sge_job_rel($parent) $child
        }
}


# submit unique jobs, and hold
set queue all.q
set sge_unique_jobs [lsort -unique $sge_jobs]
foreach i $sge_unique_jobs {
        puts "qsub -h -q $queue -N $i job-submit.sh"
}


# alter the job dependency, but unhold after all the hold relationships are
# established
foreach i $sge_unique_jobs {
        if { [info exists sge_job_rel($i)] } {
                # with dependency
                puts "qalter -hold_jid [join $sge_job_rel($i) {,}] $i"
        }
}
foreach i $sge_unique_jobs {
        puts "qalter -h U $i"
}

Run this Tcl script to generate the SGE submission commands and alternation commands to register the job dependency

$ ./dot2sge.tcl job-dep.dot
qsub -h -q all.q -N job_1 job-submit.sh
qsub -h -q all.q -N job_11 job-submit.sh
qsub -h -q all.q -N job_111 job-submit.sh
qsub -h -q all.q -N job_12 job-submit.sh
qsub -h -q all.q -N job_13 job-submit.sh
qsub -h -q all.q -N job_2 job-submit.sh
qsub -h -q all.q -N job_21 job-submit.sh
qsub -h -q all.q -N job_3 job-submit.sh
qsub -h -q all.q -N job_31 job-submit.sh
qalter -hold_jid job_11,job_12,job_13 job_1
qalter -hold_jid job_111 job_11
qalter -hold_jid job_111 job_12
qalter -hold_jid job_13,job_21 job_2
qalter -hold_jid job_21,job_31 job_3
qalter -h U job_1
qalter -h U job_11
qalter -h U job_111
qalter -h U job_12
qalter -h U job_13
qalter -h U job_2
qalter -h U job_21
qalter -h U job_3
qalter -h U job_31

Below show the above proof-of-concept in action. So sit back....

#
# ----------below is a very simple script
#
$ cat job-submit.sh
#! /bin/sh
#$ -S /bin/sh

date
sleep 10


#
# ----------run all the qsub to submit jobs, but put them on hold
#
$ qsub -h -q all.q -N job_1 job-submit.sh
Your job 333 ("job_1") has been submitted.
$ qsub -h -q all.q -N job_11 job-submit.sh
Your job 334 ("job_11") has been submitted.
$ qsub -h -q all.q -N job_111 job-submit.sh
Your job 335 ("job_111") has been submitted.
$ qsub -h -q all.q -N job_12 job-submit.sh
Your job 336 ("job_12") has been submitted.
$ qsub -h -q all.q -N job_13 job-submit.sh
Your job 337 ("job_13") has been submitted.
$ qsub -h -q all.q -N job_2 job-submit.sh
Your job 338 ("job_2") has been submitted.
$ qsub -h -q all.q -N job_21 job-submit.sh
Your job 339 ("job_21") has been submitted.
$ qsub -h -q all.q -N job_3 job-submit.sh
Your job 340 ("job_3") has been submitted.
$ qsub -h -q all.q -N job_31 job-submit.sh
Your job 341 ("job_31") has been submitted.


#
# ----------show the status, all jobs are in hold position (hqw)
#
$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   0/4       0.01     sol-amd64

############################################################################
 - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
    333 0.00000 job_1      chihung      hqw   07/19/2007 21:04:34     1
    334 0.00000 job_11     chihung      hqw   07/19/2007 21:04:34     1
    335 0.00000 job_111    chihung      hqw   07/19/2007 21:04:34     1
    336 0.00000 job_12     chihung      hqw   07/19/2007 21:04:34     1
    337 0.00000 job_13     chihung      hqw   07/19/2007 21:04:34     1
    338 0.00000 job_2      chihung      hqw   07/19/2007 21:04:34     1
    339 0.00000 job_21     chihung      hqw   07/19/2007 21:04:34     1
    340 0.00000 job_3      chihung      hqw   07/19/2007 21:04:34     1
    341 0.00000 job_31     chihung      hqw   07/19/2007 21:04:34     1


#
# ----------register the job dependency
#
$ qalter -hold_jid job_11,job_12,job_13 job_1
modified job id hold list of job 333
   blocking jobs: 334,336,337
   exited jobs:   NONE
$ qalter -hold_jid job_111 job_11
modified job id hold list of job 334
   blocking jobs: 335
   exited jobs:   NONE
$ qalter -hold_jid job_111 job_12
modified job id hold list of job 336
   blocking jobs: 335
   exited jobs:   NONE
$ qalter -hold_jid job_13,job_21 job_2
modified job id hold list of job 338
   blocking jobs: 337,339
   exited jobs:   NONE
$ qalter -hold_jid job_21,job_31 job_3
modified job id hold list of job 340
   blocking jobs: 339,341
   exited jobs:   NONE


#
# ----------release all the holds and let SGE to sort itself out
#
$ qalter -h U job_1
modified hold of job 333
$ qalter -h U job_11
modified hold of job 334
$ qalter -h U job_111
modified hold of job 335
$ qalter -h U job_12
modified hold of job 336
$ qalter -h U job_13
modified hold of job 337
$ qalter -h U job_2
modified hold of job 338
$ qalter -h U job_21
modified hold of job 339
$ qalter -h U job_3
modified hold of job 340
$ qalter -h U job_31
modified hold of job 341


#
# ----------query SGE stats
#
$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   0/4       0.01     sol-amd64

############################################################################
 - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
    333 0.00000 job_1      chihung      hqw   07/19/2007 21:04:34     1
    334 0.00000 job_11     chihung      hqw   07/19/2007 21:04:34     1
    335 0.00000 job_111    chihung      qw    07/19/2007 21:04:34     1
    336 0.00000 job_12     chihung      hqw   07/19/2007 21:04:34     1
    337 0.00000 job_13     chihung      qw    07/19/2007 21:04:34     1
    338 0.00000 job_2      chihung      hqw   07/19/2007 21:04:34     1
    339 0.00000 job_21     chihung      qw    07/19/2007 21:04:34     1
    340 0.00000 job_3      chihung      hqw   07/19/2007 21:04:34     1
    341 0.00000 job_31     chihung      qw    07/19/2007 21:04:34     1


#
# ----------some jobs started to run
#
$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   2/4       0.01     sol-amd64
    339 0.55500 job_21     chihung      r     07/19/2007 21:05:36     1
    341 0.55500 job_31     chihung      r     07/19/2007 21:05:36     1
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   1/4       0.01     sol-amd64
    335 0.55500 job_111    chihung      r     07/19/2007 21:05:36     1
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   1/4       0.01     sol-amd64
    337 0.55500 job_13     chihung      r     07/19/2007 21:05:36     1

############################################################################
 - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
    333 0.00000 job_1      chihung      hqw   07/19/2007 21:04:34     1
    334 0.00000 job_11     chihung      hqw   07/19/2007 21:04:34     1
    336 0.00000 job_12     chihung      hqw   07/19/2007 21:04:34     1
    338 0.00000 job_2      chihung      hqw   07/19/2007 21:04:34     1
    340 0.00000 job_3      chihung      hqw   07/19/2007 21:04:34     1


$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   2/4       0.01     sol-amd64
    339 0.55500 job_21     chihung      r     07/19/2007 21:05:36     1
    341 0.55500 job_31     chihung      r     07/19/2007 21:05:36     1
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   1/4       0.01     sol-amd64
    335 0.55500 job_111    chihung      r     07/19/2007 21:05:36     1
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   1/4       0.01     sol-amd64
    337 0.55500 job_13     chihung      r     07/19/2007 21:05:36     1

############################################################################
 - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
    333 0.00000 job_1      chihung      hqw   07/19/2007 21:04:34     1
    334 0.00000 job_11     chihung      hqw   07/19/2007 21:04:34     1
    336 0.00000 job_12     chihung      hqw   07/19/2007 21:04:34     1
    338 0.00000 job_2      chihung      hqw   07/19/2007 21:04:34     1
    340 0.00000 job_3      chihung      hqw   07/19/2007 21:04:34     1


$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   0/4       0.01     sol-amd64

############################################################################
 - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
    333 0.00000 job_1      chihung      hqw   07/19/2007 21:04:34     1
    334 0.00000 job_11     chihung      qw    07/19/2007 21:04:34     1
    336 0.00000 job_12     chihung      qw    07/19/2007 21:04:34     1
    338 0.00000 job_2      chihung      qw    07/19/2007 21:04:34     1
    340 0.00000 job_3      chihung      qw    07/19/2007 21:04:34     1


$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   2/4       0.01     sol-amd64
    338 0.55500 job_2      chihung      r     07/19/2007 21:05:51     1
    340 0.55500 job_3      chihung      r     07/19/2007 21:05:51     1
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   1/4       0.01     sol-amd64
    334 0.55500 job_11     chihung      r     07/19/2007 21:05:51     1
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   1/4       0.01     sol-amd64
    336 0.55500 job_12     chihung      r     07/19/2007 21:05:51     1

############################################################################
 - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
    333 0.00000 job_1      chihung      hqw   07/19/2007 21:04:34     1


$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   2/4       0.01     sol-amd64
    338 0.55500 job_2      chihung      r     07/19/2007 21:05:51     1
    340 0.55500 job_3      chihung      r     07/19/2007 21:05:51     1
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   1/4       0.01     sol-amd64
    334 0.55500 job_11     chihung      r     07/19/2007 21:05:51     1
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   1/4       0.01     sol-amd64
    336 0.55500 job_12     chihung      r     07/19/2007 21:05:51     1

############################################################################
 - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
    333 0.00000 job_1      chihung      hqw   07/19/2007 21:04:34     1


$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   0/4       0.01     sol-amd64

############################################################################
 - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
    333 0.00000 job_1      chihung      qw    07/19/2007 21:04:34     1


$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   1/4       0.01     sol-amd64
    333 0.55500 job_1      chihung      r     07/19/2007 21:06:06     1


$ qstat -f
queuename                      qtype used/tot. load_avg arch          states
----------------------------------------------------------------------------
all.q@sgeexec0                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec1                 BIP   0/4       0.01     sol-amd64
----------------------------------------------------------------------------
all.q@sgeexec2                 BIP   1/4       0.01     sol-amd64
    333 0.55500 job_1      chihung      r     07/19/2007 21:06:06     1


#
# ----------output of all jobs, you can see job job_1/2/3 finished last
#
$ grep 2007 job_*.o*
job_111.o335:Thu Jul 19 21:05:36 SGT 2007
job_11.o334:Thu Jul 19 21:05:51 SGT 2007
job_12.o336:Thu Jul 19 21:05:51 SGT 2007
job_13.o337:Thu Jul 19 21:05:36 SGT 2007
job_1.o333:Thu Jul 19 21:06:06 SGT 2007
job_21.o339:Thu Jul 19 21:05:36 SGT 2007
job_2.o338:Thu Jul 19 21:05:51 SGT 2007
job_31.o341:Thu Jul 19 21:05:37 SGT 2007
job_3.o340:Thu Jul 19 21:05:52 SGT 2007

Another successful proof-of-concept. :-)

Labels: , ,

Thursday, December 21, 2006

Graphical View of Solaris Service Management Facility (SMF)

Solaris 10 has this new feature called Service Management Facility (SMF) which describes the dependencies of services. In my system, there are 165 services (svcs -a) and the below script will output that in the 'dot' format so that we can visualise the dependency graphically using Graphviz.

dot.sh

#! /bin/sh


( 
echo "digraph smf {";
echo "node [fontname=Courier,fontsize=10];"

for i in `svcs -a | awk 'NR>2 {print $3}'`
do
 j=`echo $i | sed -e 's/:default//' -e 's/svc://'`
 for d in `svcs -d $i | awk 'NR>2 {print $NF}' | sed -e 's/:default//' -e 's/svc://'`
 do
  echo "\"$d\" -> \"$j\";"
 done
 for D in `svcs -D $i | awk 'NR>2 {print $NF}' | sed -e 's/:default//' -e 's/svc://'`
 do
  echo "\"$j\" -> \"$D\";"
 done
done;
echo "}";
) > smf.dot


dot -Tpng -o smf.png smf.dot

smf.dot

digraph smf {
node [fontname=Courier,fontsize=10];
"/system/identity:node" -> "/system/metainit";
"/system/metainit" -> "/system/filesystem/root";
"/system/metainit" -> "/milestone/single-user";
"/network/rpc/nisplus" -> "/network/service";
"/network/rpc/bind" -> "/network/rpc/keyserv";
"/network/rpc/keyserv" -> "/network/rpc/gss";
"/network/rpc/keyserv" -> "/network/nfs/client";
"/network/rpc/keyserv" -> "/network/nfs/server";
"/system/identity:domain" -> "/network/nis/server";
"/network/rpc/bind" -> "/network/nis/server";
"/network/nis/server" -> "/network/service";
"/system/filesystem/minimal" -> "/network/nis/client";
"/system/identity:domain" -> "/network/nis/client";
"/network/rpc/bind" -> "/network/nis/client";
"/network/nis/client" -> "/network/service";
"/system/filesystem/minimal" -> "/network/dns/client";
"/milestone/network" -> "/network/dns/client";
"/network/service" -> "/network/dns/client";
"/network/dns/client" -> "/network/security/krb5kdc";
"/network/dns/client" -> "/milestone/name-services";
"/network/initial" -> "/network/ldap/client";
"/system/filesystem/minimal" -> "/network/nfs/cbd";
"/milestone/network" -> "/network/nfs/cbd";
"/network/rpc/bind" -> "/network/nfs/cbd";
"/system/identity:domain" -> "/application/print/server";
"/system/filesystem/local" -> "/application/print/server";
"/system/system-log" -> "/application/print/server";
"/application/print/server" -> "/application/print/ipp-listener";
"/application/print/server" -> "/application/print/rfc1179";
"/network/rpc/meta" -> "/system/mdmonitor";
"/system/filesystem/minimal" -> "/system/mdmonitor";
"/milestone/network" -> "/network/rpc/bootparams";
"/network/rpc/bind" -> "/network/rpc/bootparams";
"/milestone/network" -> "/network/rarp";
"/system/system-log" -> "/network/rarp";
"/network/initial" -> "/application/management/webmin";
"/system/utmp" -> "/application/gdm2-login";
"/system/filesystem/minimal" -> "/network/dns/server";
"/milestone/network" -> "/network/dns/server";
"/network/physical" -> "/network/http:apache2";
"/network/rpc/bind" -> "/network/nis/passwd";
"/network/rpc/bind" -> "/network/nis/update";
"/network/rpc/bind" -> "/network/nis/xfr";
"/milestone/network" -> "/network/slp";
"/milestone/sysconfig" -> "/network/slp";
"/network/physical" -> "/network/apocd/udp";
"/milestone/network" -> "/network/shell:kshell";
"/system/identity:domain" -> "/network/smtp:sendmail";
"/system/filesystem/local" -> "/network/smtp:sendmail";
"/network/service" -> "/network/smtp:sendmail";
"/system/filesystem/autofs" -> "/network/smtp:sendmail";
"/system/system-log" -> "/network/smtp:sendmail";
"/network/physical" -> "/network/ipfilter";
"/system/identity:node" -> "/network/ipfilter";
"/network/pfil" -> "/network/ipfilter";
"/network/loopback" -> "/network/rarp";
"/network/loopback" -> "/network/dns/server";
"/network/loopback" -> "/network/http:apache2";
"/network/loopback" -> "/network/slp";
"/network/loopback" -> "/network/apocd/udp";
"/network/loopback" -> "/network/shell:kshell";
"/network/loopback" -> "/application/print/cleanup";
"/network/loopback" -> "/milestone/network";
"/network/loopback" -> "/system/identity:domain";
"/network/loopback" -> "/system/identity:node";
"/network/loopback" -> "/milestone/single-user";
"/network/loopback" -> "/network/inetd";
"/network/loopback" -> "/network/shell";
"/network/loopback" -> "/network/ssh";
"/network/nis/client" -> "/milestone/name-services";
"/network/dns/client" -> "/milestone/name-services";
"/network/ldap/client" -> "/milestone/name-services";
"/milestone/name-services" -> "/network/rpc/bootparams";
"/milestone/name-services" -> "/network/smtp:sendmail";
"/milestone/name-services" -> "/system/cron";
"/milestone/name-services" -> "/network/inetd";
"/milestone/name-services" -> "/network/nfs/client";
"/milestone/name-services" -> "/system/filesystem/autofs";
"/milestone/name-services" -> "/system/system-log";
"/milestone/name-services" -> "/milestone/multi-user";
"/milestone/name-services" -> "/network/nfs/mapid";
"/system/filesystem/usr" -> "/network/ipfilter";
"/system/filesystem/usr" -> "/platform/i86pc/eeprom";
"/system/filesystem/usr" -> "/system/keymap";
"/system/filesystem/usr" -> "/system/device/local";
"/system/filesystem/usr" -> "/system/filesystem/minimal";
"/system/filesystem/usr" -> "/network/initial";
"/system/device/local" -> "/milestone/devices";
"/system/device/local" -> "/system/filesystem/minimal";
"/system/filesystem/minimal" -> "/network/nis/client";
"/system/filesystem/minimal" -> "/network/dns/client";
"/system/filesystem/minimal" -> "/network/ldap/client";
"/system/filesystem/minimal" -> "/network/nfs/cbd";
"/system/filesystem/minimal" -> "/system/mdmonitor";
"/system/filesystem/minimal" -> "/system/rcap";
"/system/filesystem/minimal" -> "/network/dns/server";
"/system/filesystem/minimal" -> "/network/nis/passwd";
"/system/filesystem/minimal" -> "/network/nis/update";
"/system/filesystem/minimal" -> "/network/nis/xfr";
"/system/filesystem/minimal" -> "/system/consadm";
"/system/filesystem/minimal" -> "/system/name-service-cache";
"/system/filesystem/minimal" -> "/application/print/cleanup";
"/system/filesystem/minimal" -> "/system/rmtmpfiles";
"/system/filesystem/minimal" -> "/system/picl";
"/system/filesystem/minimal" -> "/system/sysevent";
"/system/filesystem/minimal" -> "/system/coreadm";
"/system/filesystem/minimal" -> "/system/power";
"/system/filesystem/minimal" -> "/system/cryptosvc";
"/system/filesystem/minimal" -> "/system/manifest-import";
"/system/filesystem/minimal" -> "/system/identity:domain";
"/system/filesystem/minimal" -> "/milestone/single-user";
"/system/filesystem/minimal" -> "/system/filesystem/local";
"/system/filesystem/minimal" -> "/system/sysidtool:net";
"/system/filesystem/minimal" -> "/network/rpc/bind";
"/system/filesystem/minimal" -> "/system/sysidtool:system";
"/system/filesystem/minimal" -> "/system/fmd";
"/system/filesystem/minimal" -> "/system/console-login";
"/system/filesystem/minimal" -> "/network/nfs/mapid";
"/system/filesystem/minimal" -> "/system/sar";
"/system/filesystem/minimal" -> "/network/nfs/nlockmgr";
"/system/filesystem/minimal" -> "/application/print/cleanup";
"/network/physical" -> "/application/print/cleanup";
"/system/sysevent" -> "/milestone/single-user";
"/system/sysevent" -> "/system/fmd";
"/system/device/fc-fabric" -> "/milestone/devices";
"/milestone/devices" -> "/network/initial";
"/system/cryptosvc" -> "/network/initial";
"/system/cryptosvc" -> "/network/ssh";
"/network/physical" -> "/network/http:apache2";
"/network/physical" -> "/network/apocd/udp";
"/network/physical" -> "/network/ipfilter";
"/network/physical" -> "/application/print/cleanup";
"/network/physical" -> "/milestone/network";
"/network/physical" -> "/system/identity:domain";
"/network/physical" -> "/system/identity:node";
"/network/physical" -> "/network/ssh";
"/network/loopback" -> "/milestone/network";
"/network/physical" -> "/milestone/network";
"/milestone/network" -> "/network/nfs/cbd";
"/milestone/network" -> "/network/rpc/bootparams";
"/milestone/network" -> "/network/rarp";
"/milestone/network" -> "/network/dns/server";
"/milestone/network" -> "/network/slp";
"/milestone/network" -> "/network/shell:kshell";
"/milestone/network" -> "/milestone/single-user";
"/milestone/network" -> "/network/initial";
"/milestone/network" -> "/network/inetd";
"/milestone/network" -> "/network/nfs/client";
"/milestone/network" -> "/network/shell";
"/milestone/network" -> "/network/nfs/server";
"/milestone/network" -> "/network/nfs/mapid";
"/milestone/network" -> "/network/nfs/status";
"/milestone/network" -> "/network/nfs/nlockmgr";
"/system/filesystem/minimal" -> "/system/identity:domain";
"/network/physical" -> "/system/identity:domain";
"/system/identity:domain" -> "/network/nis/server";
"/system/identity:domain" -> "/network/nis/client";
"/system/identity:domain" -> "/application/print/server";
"/system/identity:domain" -> "/network/smtp:sendmail";
"/system/identity:domain" -> "/system/sysidtool:net";
"/system/identity:domain" -> "/system/sysidtool:system";
"/network/physical" -> "/system/identity:node";
"/system/identity:node" -> "/network/ipfilter";
"/system/identity:node" -> "/milestone/single-user";
"/system/identity:node" -> "/system/sysidtool:net";
"/system/identity:node" -> "/network/rpc/bind";
"/system/identity:node" -> "/system/sysidtool:system";
"/system/identity:node" -> "/system/console-login";
"/network/loopback" -> "/milestone/single-user";
"/system/filesystem/minimal" -> "/milestone/single-user";
"/system/sysevent" -> "/milestone/single-user";
"/milestone/devices" -> "/milestone/single-user";
"/system/cryptosvc" -> "/milestone/single-user";
"/system/manifest-import" -> "/milestone/single-user";
"/milestone/network" -> "/milestone/single-user";
"/system/identity:node" -> "/milestone/single-user";
"/milestone/single-user" -> "/system/sysidtool:net";
"/milestone/single-user" -> "/system/sysidtool:system";
"/milestone/single-user" -> "/milestone/sysconfig";
"/milestone/single-user" -> "/milestone/multi-user";
"/milestone/single-user" -> "/system/filesystem/local";
"/system/filesystem/local" -> "/application/print/server";
"/system/filesystem/local" -> "/application/management/webmin";
"/system/filesystem/local" -> "/application/gdm2-login";
"/system/filesystem/local" -> "/network/smtp:sendmail";
"/system/filesystem/local" -> "/system/cron";
"/system/filesystem/local" -> "/system/sysidtool:net";
"/system/filesystem/local" -> "/system/sysidtool:system";
"/system/filesystem/local" -> "/platform/i86pc/kdmconfig";
"/system/filesystem/local" -> "/system/sac";
"/system/filesystem/local" -> "/network/inetd";
"/system/filesystem/local" -> "/application/font/fc-cache";
"/system/filesystem/local" -> "/system/filesystem/autofs";
"/system/filesystem/local" -> "/system/dumpadm";
"/system/filesystem/local" -> "/system/system-log";
"/system/filesystem/local" -> "/milestone/multi-user";
"/system/filesystem/local" -> "/network/ssh";
"/system/filesystem/local" -> "/network/nfs/server";
"/system/filesystem/local" -> "/network/nfs/status";
"/system/filesystem/local" -> "/system/cron";
"/system/identity:domain" -> "/system/sysidtool:net";
"/system/identity:node" -> "/system/sysidtool:net";
"/milestone/single-user" -> "/system/sysidtool:net";
"/system/filesystem/local" -> "/system/sysidtool:net";
"/network/pfil" -> "/system/sysidtool:net";
"/system/sysidtool:net" -> "/system/sysidtool:system";
"/system/sysidtool:net" -> "/platform/i86pc/kdmconfig";
"/system/sysidtool:net" -> "/milestone/sysconfig";
"/milestone/devices" -> "/network/initial";
"/system/cryptosvc" -> "/network/initial";
"/milestone/network" -> "/network/initial";
"/network/initial" -> "/application/management/webmin";
"/network/initial" -> "/network/service";
"/network/initial" -> "/network/rpc/bind";
"/network/nis/server" -> "/network/service";
"/network/nis/client" -> "/network/service";
"/network/initial" -> "/network/service";
"/network/service" -> "/network/ntp";
"/network/service" -> "/network/smtp:sendmail";
"/system/identity:node" -> "/network/rpc/bind";
"/system/sysidtool:net" -> "/network/rpc/bind";
"/network/initial" -> "/network/rpc/bind";
"/network/rpc/bind" -> "/network/nis/server";
"/network/rpc/bind" -> "/network/nis/client";
"/network/rpc/bind" -> "/network/nfs/cbd";
"/network/rpc/bind" -> "/network/rpc/bootparams";
"/network/rpc/bind" -> "/network/nis/passwd";
"/network/rpc/bind" -> "/network/nis/update";
"/network/rpc/bind" -> "/network/nis/xfr";
"/network/rpc/bind" -> "/network/rpc/meta";
"/network/rpc/bind" -> "/network/rpc/mdcomm";
"/network/rpc/bind" -> "/network/rpc/metamed";
"/network/rpc/bind" -> "/network/rpc/metamh";
"/network/rpc/bind" -> "/network/rpc/ocfserv";
"/network/rpc/bind" -> "/network/rpc/rex";
"/network/rpc/bind" -> "/network/rpc/spray";
"/network/rpc/bind" -> "/network/rpc/wall";
"/network/rpc/bind" -> "/system/sysidtool:system";
"/network/rpc/bind" -> "/network/inetd";
"/network/rpc/bind" -> "/network/rpc/gss";
"/network/rpc/bind" -> "/network/rpc/smserver";
"/network/rpc/bind" -> "/network/rpc/rstat";
"/network/rpc/bind" -> "/network/rpc/rusers";
"/network/rpc/bind" -> "/network/nfs/client";
"/network/rpc/bind" -> "/system/fmd";
"/network/rpc/bind" -> "/milestone/multi-user";
"/network/rpc/bind" -> "/network/nfs/server";
"/network/rpc/bind" -> "/network/nfs/mapid";
"/network/rpc/bind" -> "/network/nfs/rquota";
"/network/rpc/bind" -> "/network/nfs/status";
"/network/rpc/bind" -> "/network/nfs/nlockmgr";
"/system/identity:domain" -> "/system/sysidtool:system";
"/system/identity:node" -> "/system/sysidtool:system";
"/milestone/single-user" -> "/system/sysidtool:system";
"/system/filesystem/local" -> "/system/sysidtool:system";
"/system/sysidtool:net" -> "/system/sysidtool:system";
"/network/rpc/bind" -> "/system/sysidtool:system";
"/system/sysidtool:system" -> "/milestone/sysconfig";
"/system/sysidtool:net" -> "/platform/i86pc/kdmconfig";
"/system/sysidtool:system" -> "/platform/i86pc/kdmconfig";
"/platform/i86pc/kdmconfig" -> "/milestone/multi-user";
"/system/sysidtool:net" -> "/milestone/sysconfig";
"/system/sysidtool:system" -> "/milestone/sysconfig";
"/platform/i86pc/kdmconfig" -> "/milestone/sysconfig";
"/milestone/sysconfig" -> "/system/sac";
"/milestone/sysconfig" -> "/system/utmp";
"/milestone/sysconfig" -> "/network/inetd";
"/milestone/sysconfig" -> "/system/system-log";
"/milestone/sysconfig" -> "/milestone/multi-user";
"/milestone/sysconfig" -> "/system/console-login";
"/milestone/sysconfig" -> "/system/sac";
"/system/utmp" -> "/milestone/multi-user";
"/system/utmp" -> "/network/ssh";
"/system/utmp" -> "/system/console-login";
"/network/loopback" -> "/network/inetd";
"/milestone/name-services" -> "/network/inetd";
"/milestone/network" -> "/network/inetd";
"/system/filesystem/local" -> "/network/inetd";
"/network/rpc/bind" -> "/network/inetd";
"/milestone/sysconfig" -> "/network/inetd";
"/network/rpc/bind" -> "/network/rpc/gss";
"/network/rpc/gss" -> "/network/nfs/server";
"/network/nfs/cbd" -> "/network/nfs/client";
"/milestone/name-services" -> "/network/nfs/client";
"/milestone/network" -> "/network/nfs/client";
"/network/rpc/bind" -> "/network/nfs/client";
"/network/rpc/gss" -> "/network/nfs/client";
"/network/nfs/mapid" -> "/network/nfs/client";
"/network/nfs/nlockmgr" -> "/network/nfs/client";
"/network/nfs/client" -> "/system/dumpadm";
"/network/nfs/client" -> "/milestone/multi-user";
"/milestone/network" -> "/network/shell";
"/system/filesystem/local" -> "/system/filesystem/autofs";
"/network/nfs/client" -> "/system/filesystem/autofs";
"/system/filesystem/autofs" -> "/system/dumpadm";
"/system/filesystem/autofs" -> "/system/system-log";
"/system/filesystem/autofs" -> "/milestone/multi-user";
"/system/filesystem/autofs" -> "/network/ssh";
"/network/nfs/client" -> "/system/dumpadm";
"/system/filesystem/autofs" -> "/system/dumpadm";
"/system/sysevent" -> "/system/fmd";
"/network/rpc/bind" -> "/system/fmd";
"/system/dumpadm" -> "/system/fmd";
"/system/filesystem/local" -> "/system/system-log";
"/milestone/sysconfig" -> "/system/system-log";
"/system/filesystem/autofs" -> "/system/system-log";
"/system/system-log" -> "/network/rarp";
"/system/system-log" -> "/network/smtp:sendmail";
"/system/system-log" -> "/milestone/multi-user";
"/network/ntp" -> "/milestone/multi-user";
"/system/mdmonitor" -> "/milestone/multi-user";
"/system/rcap" -> "/milestone/multi-user";
"/network/smtp:sendmail" -> "/milestone/multi-user";
"/milestone/name-services" -> "/milestone/multi-user";
"/system/name-service-cache" -> "/milestone/multi-user";
"/system/rmtmpfiles" -> "/milestone/multi-user";
"/system/power" -> "/milestone/multi-user";
"/milestone/single-user" -> "/milestone/multi-user";
"/system/filesystem/local" -> "/milestone/multi-user";
"/system/cron" -> "/milestone/multi-user";
"/network/rpc/bind" -> "/milestone/multi-user";
"/platform/i86pc/kdmconfig" -> "/milestone/multi-user";
"/milestone/sysconfig" -> "/milestone/multi-user";
"/system/utmp" -> "/milestone/multi-user";
"/network/inetd" -> "/milestone/multi-user";
"/network/nfs/client" -> "/milestone/multi-user";
"/system/filesystem/autofs" -> "/milestone/multi-user";
"/system/system-log" -> "/milestone/multi-user";
"/system/system-log" -> "/milestone/multi-user";
"/milestone/multi-user" -> "/milestone/multi-user-server";
"/network/rarp" -> "/milestone/multi-user-server";
"/network/dhcp-server" -> "/milestone/multi-user-server";
"/milestone/multi-user" -> "/milestone/multi-user-server";
"/network/ssh" -> "/milestone/multi-user-server";
"/network/nfs/server" -> "/milestone/multi-user-server";
"/system/cryptosvc" -> "/network/ssh";
"/network/physical" -> "/network/ssh";
"/system/filesystem/local" -> "/network/ssh";
"/system/utmp" -> "/network/ssh";
"/system/filesystem/autofs" -> "/network/ssh";
"/system/identity:node" -> "/system/console-login";
"/milestone/sysconfig" -> "/system/console-login";
"/system/utmp" -> "/system/console-login";
"/network/pfil" -> "/network/physical";
"/network/pfil" -> "/system/sysidtool:net";
"/milestone/network" -> "/network/nfs/server";
"/system/filesystem/local" -> "/network/nfs/server";
"/network/rpc/bind" -> "/network/nfs/server";
"/network/rpc/gss" -> "/network/nfs/server";
"/network/nfs/mapid" -> "/network/nfs/server";
"/network/nfs/nlockmgr" -> "/network/nfs/server";
"/system/filesystem/minimal" -> "/network/nfs/mapid";
"/milestone/network" -> "/network/nfs/mapid";
"/network/rpc/bind" -> "/network/nfs/mapid";
"/network/nfs/mapid" -> "/network/nfs/server";
"/system/filesystem/local" -> "/network/nfs/status";
"/network/rpc/bind" -> "/network/nfs/status";
"/milestone/network" -> "/network/nfs/nlockmgr";
"/network/rpc/bind" -> "/network/nfs/nlockmgr";
"/network/nfs/status" -> "/network/nfs/nlockmgr";
"/network/nfs/nlockmgr" -> "/network/nfs/server";
}

Labels: , , ,