| build.xml | Build file for Java 1.6.x (JAXB is internal library of Java). |
| build-for-Java15.xml | Build file for Java 1.5.x (JAXB is external library). |
| plus.jar | Scheduler JAR file (Create after building) |
| bin/ | |
| plus_scheduler | Startup script for this scheduler |
| plus_schedkill | Termination script for this scheduler |
| plus_reserve | Script for making reservations |
| plus_modify | Script for changing reservations |
| plus_cancel | Script for canceling reservations |
| plus_destroy | Script for discarding reservations |
| plus_availnodes | Script for confirming the number of nodes available for reservations |
| plus_commit | Reservation transaction confirmation script |
| plus_abort | Reservation transaction discarding script |
| plus_status | Script for show current reservation status |
| plus_account | Script for report and account for PluS reservation usage |
| plus_simplefifo | Startup script for simple fifo scheduler (only supports job scheduling, not reservation). |
| sge_plus.in | Template of sge_plus |
| sge_plus | Script for start/stop PluS, using at /etc/init.d on Linux system (Created when building) |
| build/ | Working directory for package build (Created when building) |
| src/jp/aist/gtrc/plus/ | |
| command/ | Reservation management command related source (Java) |
| scheduler/ | Scheduler related source (Java, partially C language and shell scripts) |
| reserve/ | Reservation management mechanism related source (Java) |
| doc/ | |
| html/manual.html | User Manual (in English), this file. |
| db4o.license.txt | GPLv2 license file (for db4objects) |
| Apache.license.txt | Apache license file (for log4j) |
| condor.license.txt |
Condor license file (for
classad.jar) |
| pbs/TorqueProtocol.txt | TORQUE (PBS) protocol description (in Japanese, UTF-8) |
| sge/gdi-manual.txt | GDI (Gridengine Database Interface) API description (in
Japanese, UTF-8) |
| sge/XMLsample.txt | XML output example of SGE data by sge_operatord |
| lib/ | |
| db4o-5.?-java5.jar | db4objects ver 5.? library for Java 5.0. See http://www.db4o.com/ |
| log4j-1.2.13.jar | Apache Log4j library. See http://logging.apache.org/ |
| classad.jar |
ClassAd library from Condor. See
http://www.cs.wisc.edu/condor/classad/ |
| conf/ |
|
| log4j.properties |
template configuration of log4j |
| reservable.ad.sample* |
sample file of reservable.ad,
see here. |
| sched_conf.sample |
sample file of sched_conf, see here. |
|
% tar zxf ge-V61u3_TAG-src.tar.gz % cd gridengine % patch -p1 < .../sge-V61u3-plus.patch |
|
% cd source % ./aimk -only-depend % scripts/zerodepend % ./aimk depend % ./aimk -only-core -no-secure |
| startTime |
endTime |
days |
viewing duration |
| none |
none |
none |
all reservations |
| none |
none |
D |
in [now - D days, now] |
| none |
E |
none |
all reservations ended
before E |
| none |
E |
D |
in [E - D days, E] |
| S |
none |
none |
all reservations started
after S |
| S |
none |
D |
in [S, S + D days] |
| S |
E |
none |
in [S, E] |
| S |
E |
D |
Error: endTime and days
cannot specify at same time |
| # Scheduler Config
file SAMPLE # NodeSortKey can specify # NodeName, LowestLoadAverage, LongestIdleTime, LargestPhysicalMemory # JobSortKey can specify # JobPriority, # LeastCPURequested, MostCPURequested, # LeastNodeRequested, MostNodeRequested, # LeastTimeRequested, MostTimeRequested, # QueuePriority, QueueRoundRobin, ByQueue, # OwnersName, OwnersGroup, OwnersHost # OwnersXxx needs to specify XxxsOrder. # # SortKey: 1st sort key, 2nd sort key, ... NodeSortKey: LowestLoadAverage, LongestIdleTime JobSortKey: QueuePriority, JobPriority # # OrderType: primary job owner(group/host/domain), 2nd, ... OwnersOrder: studentA,studentB GroupsOrder: professors, doctors, masters HostsOrder: apgrid.org, hpcc.org |
| rr |
bq |
sq |
sf |
JobSortKey specification with
PluS |
| F |
F |
F |
F |
JobPriority (Queue is not
specified) |
| F |
F |
F |
T |
SubmitTime (Queue is not
specified) |
| F |
F |
T |
F |
QueuePriority, JobPriority |
| F |
F |
T |
T |
QueuePriority, SubmitTime |
| F |
T |
F |
F |
ByQueue, JobPriority |
| F |
T |
F |
T |
ByQueue, SubmitTime |
| F |
T |
T |
F |
QueuePriority, ByQueue,
JobPriority (default) |
| F |
T |
T |
T |
QueuePriority, ByQueue,
SubmitTime |
| T |
F |
F |
F |
QueueRoundRobin, JobPriority |
| T |
F |
F |
T |
QueueRoundRobin, SubmitTime |
| T |
F |
T |
F |
QueuePriority, QueueRoundRobin,
JobPriority |
| T |
F |
T |
T |
QueuePriority, QueueRoundRobin,
SubmitTime |
| T |
T |
F |
F |
rr and bq must not be specified
at the same time |
| T |
T |
F |
T |
same as above |
| T |
T |
T |
F |
same as above |
| T |
T |
T |
T |
same as above |
| [ UnusableNodes = { "unusableA", "unusableB" }; PLUS_NODE_RESERVABLE = (PLUS_CANDIDATE_NODE.nRunJobs == 0 && PLUS_CANDIDATE_NODE.isAlive && PLUS_CANDIDATE_NODE.loadavg <= 0.3 && !member(PLUS_CANDIDATE_NODE.name, UnusableNodes)); ] |

| [ MaxPeriod = relTime("00:30:00"); MinPeriod = relTime("02:00:00"); LimitPeriod = relTime("7d"); MaxReserveDuration = relTime("2d"); VIPs = { "userA", "userB", "userC" }; Users = { "userX" }; VIPRatio = 100.0; UsersMaxRatio = 90.0; UsersMinRatio = 50.0; OthersMaxRatio = 50.0; OthersMinRatio = 30.0; MaxRatio = member(PLUS_RSV_OWNER, Users) ? UsersMaxRatio : OthersMaxRatio; MinRatio = member(PLUS_RSV_OWNER, Users) ? UsersMinRatio : OthersMinRatio; now = absTime(time()); prev = PLUS_RSV_START - now; duration = PLUS_RSV_END - PLUS_RSV_START; ratioFunc = linear(prev, MaxPeriod, MaxRatio, MinPeriod, MinRatio); rsvRatio = (prev <= relTime("0") || LimitPeriod <= prev || duration >= MaxReserveDuration) ? 0 : member(PLUS_RSV_OWNER, VIPs) ? VIPRatio : (prev <= MaxPeriod) ? MaxRatio : (prev >= MinPeriod) ? MinRatio : ratioFunc; nAllocate = size(PLUS_ALLOCATED_NODES) + 1; nAllocatable = size(PLUS_ALL_NODES) * 0.01 * rsvRatio; PLUS_NODE_RESERVABLE = (nAllocate <= nAllocatable); ] |
| [ UtilCheckPeriod = relTime("7d"); MaxReserveCount = 100; MaxReserveDuration = relTime("2d"); MaxReserveHourNode = 1000.0; now = absTime(time()); util = plus_rsvutil(PLUS_RSV_OWNER, now - UtilCheckPeriod, now + UtilCheckPeriod); PLUS_NODE_RESERVABLE = ((util[0] <= MaxReserveCount) && (util[1] <= MaxReserveDuration) && (util[2] <= MaxReserveHourNode)); ] |
| [ Proj1Users = { "userA", "userB" }; Proj1Nodes = { "node1", "node2" }; Proj2Users = { "userA", "userC" }; Proj2Nodes = { "node3", "node4" }; avail1 = member(PLUS_RSV_OWNER, Proj1Users) ? member(PLUS_CANDIDATE_NODE.name, Proj1Nodes) : false; avail2 = member(PLUS_RSV_OWNER, Proj2Users) ? member(PLUS_CANDIDATE_NODE.name, Proj2Nodes) : false; PLUS_NODE_RESERVABLE = (avail1 || avail2); ] |
| status_type_name |
description |
almost same command |
| server |
admin hosts |
qconf -sh |
| submithost |
submit hosts |
qconf -ss |
| node |
exec node names |
qhost |
| queue |
queues |
qconf -sql |
| job |
jobs |
qstat |
| complex |
resource definitions |
qconf -sc |
| pe |
Parallel environments |
qconf -spl |
| sched_conf |
SGE scheduler configuraion |
qconf -ssconf |
| user |
user list |
qconf -suserl |
| userset |
userset list |
qconf -sul |
| project |
project list |
qconf -sprjl |
| sharetree |
sharetree information |
qconf -sstree |
| calendar |
calendar information |
qconf -scall |
| hgroup |
host group list |
qconf -shgrpl |
|
% sge_operatord 16000 & % telnet localhost 16000 GetStatus queue <?xml version='1.0'?> <queue_list xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <CQUEUE:> <CQ_name>all.q</CQ_name> <CQ_hostlist> <element> <HR_name>@allhosts</HR_name> </element> </CQ_hostlist> <CQ_qinstances> <QINSTANCE:all.q/> <QU_qhostname>host00.example.com</QU_qhostname> <QU_qname>all.q</QU_qname> <QU_full_name>all.q@host00.example.com</QU_full_name> .... <QU_version>3</QU_version> </QINSTANCE:all.q/> .... |