forked from marinazapater/slurm-sim
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexec_sim.pl
More file actions
executable file
·60 lines (41 loc) · 1.34 KB
/
exec_sim.pl
File metadata and controls
executable file
·60 lines (41 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/perl
my $WORKDIR=$ARGV[0];
my $TOTAL_JOBS=$ARGV[1];
my $logfile="$WORKDIR/exec_sim.log";
open LOG,">$logfile";
print LOG "Launching sim_mgr...$WORKDIR/sim_mgr\n";
system("cd $WORKDIR");
system("SLURM_CONF=$WORKDIR/slurm_conf/slurm.conf SLURM_PROGRAMS=$WORKDIR/slurm_programs/bin $WORKDIR/slurm_programs/bin/sim_mgr 0 > sim_mgr.log &");
sleep(5);
print LOG "Launching slurmctld...\n";
system("$WORKDIR/exec_controller.sh $WORKDIR &");
sleep(5);
print LOG "Launching slurmd...\n";
system("$WORKDIR/exec_slurmd.sh $WORKDIR &");
sleep(5);
# Let's see which addresses have main slurm functions including plugins
open PS,"ps axl | grep -v grep| grep slurmctld|";
while (<PS>){
print LOG "$_\n\n";
if(/(\d+)(\s+)(\d+)(\s+)(\d+)/){
print LOG "Getting maps for process ID $5\n";
system("more /proc/$5/maps > slurmctld.maps");
}
}
close PS;
print LOG "Waiting...\n";
while(1){
$jobs_completed=`more $WORKDIR/slurm_varios/acct/jobcomp.log | grep JobId | wc -l`;
if(($jobs_completed == $TOTAL_JOBS) || ($jobs_completed > $TOTAL_JOBS)){
last;
}
print LOG "Just $jobs_completed jobs completed of $TOTAL_JOBS. Sleeping\n";
sleep(60);
}
print LOG "Ok. We have $jobs_completed completed jobs\n";
sleep 5;
system("sync");
close PS;
print LOG "Killing simulation processes...\n\n";
# Killing sim_mgr with SIGINT signal
`killall sim_mgr -SIGINT $5`;