POD Shell: Job Submission and Management Utility

Back to documentation index

About

PODShell is a CLI application distributed with PODTools that enables remote job submission and management, data staging, and file management. With PODShell, you can:

  • Submit job scripts directly to POD without having to SSH to a login node
  • Stage data into POD (upload) as a prerequisite of executing your job.
  • Stage data out of POD (download) automatically when your job is finished.
  • Submit either TORQUE or SGE formatted job scripts
  • Stage data in and/or out of POD independent of Compute jobs.
  • Query the status of your job(s)

Submitting jobs

  • POD supports two schedulers, TORQUE and SGE
  • PODShell acts as a “remote qsub”

Submit your job script with podsh submit:

[root@mojito ~]# podsh submit test.sub
Job Submitted successfully.  Job ID: 1586

PODShell can submit to different schedulers from the command like with --sched= option:

[root@mojito ~]# podsh submit --sched=SGE test.sub
Job Submitted successfully.  Job ID: 1587

Data Staging

  • PODShell can copy your data for you
    • As part of a job, or independently

Use --stagein and/or --stageout options:

[root@mojito ~]# podsh submit --stagein=mydata.bin test.sub
Job Submitted successfully.  Job ID: 1588

Your job will automatically be held until stagein completes!

[root@mojito ~]# podsh submit --stageout=~/myresults.log test.sub
Job Submitted successfully. Job ID: 1589

Stageout will not occur until after the job finishes

Combine the two options to automate an entire workflow, normally accomplished by the following:

  • SCP data and job script to login node
  • SSH to login node and submit job
  • Status job from SSH session or wait for job completion email
  • SCP data back to your local host

Instead, use just one command:

[root@mojito ~]# podsh submit --stagein=mydata:~/data --stageout=~/myresults.log myjob.sub
Job Submitted successfully. Job ID: 1590

Checking Job Status

  • podsh status gives you output similar to qstat
  • Summary or detailed view, plus data staging information
[root@mojito ~]# podsh status 
+-----------+---------+---------+----------+----------+---+----------+-----------+
| ID        | User    | Type    | State    | Job Name | S | Stage-in | Stage-out |
+-----------+---------+---------+----------+----------+---+----------+-----------+
| 22482.pod | travis  | COMPUTE | COMPLETE | N/A      |   | NONE     | FAILED    |
| 22708.pod | travis  | COMPUTE | COMPLETE | N/A      |   | NONE     | NONE      |
| 22709.pod | travis  | COMPUTE | COMPLETE | N/A      |   | NONE     | NONE      |
| 22710.pod | travis  | COMPUTE | COMPLETE | N/A      |   | NONE     | NONE      |
+-----------+---------+---------+----------+----------+---+----------+-----------+

[root@mojito ~]# podsh status -j 22937.pod
+---------------------+----------------------------------------------------+
| Property            | Value                                              |
+---------------------+----------------------------------------------------+
| ID                  | 22937.pod                                          |
| User                |                                                    |
| Type                | COMPUTE                                            |
| State               | QUEUED                                             |
| Resource_List.nodes | 1:ppn=1                                            |
| job_radix           | 0                                                  |
| job_id              | 22937.pod                                          |
...
...

Job Status for System Groups

Use the additional -g flag with podsh in order to report on a UNIX group:

[root@mojito ~]# podsh -g groupname status 

Help

Use "podsh --help" and "podsh <cmd> --help" to get more details.