Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vcctl command line enhancement #622

Merged
merged 5 commits into from
Dec 18, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions docs/design/command-line-enhancement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# `vcctl` Command Line Enhancement

[@jiangkaihua](jiangkaihua1@huawei.com); Dec. 16, 2019

## Catalog
- [`vcctl` Command Line Enhancement](#vcctl-command-line-enhancement)
- [Catalog](#catalog)
- [Functions of `vcctl`](#functions-of-vcctl)
- [Command `vcctl job`](#command-vcctl-job)
- [Command `vcctl queue`](#command-vcctl-queue)
- [`vcctl` vs. Slurm Command Line](#vcctl-vs-slurm-command-line)
- [New Format of Volcano Command Line](#new-format-of-volcano-command-line)
- [For Common User](#for-common-user)
- [`vsub` submit via file](#vsub-submit-via-file)
- [For Administrator](#for-administrator)
- [Reference](#reference)

## Functions of `vcctl`
`vcctl` is the command line of [volcano](https://github.com/volcano-sh/volcano). The main functions are listed below:

### Command `vcctl job`
| Command Format | Usage |
| - | - |
| `vcctl job delete -N <job_name> -n <namespace>` | delete a job |
| `vcctl job list -S <scheduler> -n <namespace>` | list job info |
| `vcctl job resume -N <job_name> -n <namespace>` | resume a job |
| `vcctl job run -f <yaml_file> -i <image> -L <resource_limit> -m <min_available> -N <job_name> -n <namespace> -r <replicas> -R <resource_requeset> -S <scheduler>` | run job by parameters from the command line |
| `vcctl job suspend -N <job_name> -n <namespace>` | suspend a job |
| `vcctl job view -N <job_name> -n <namespace>` | show a job info |

### Command `vcctl queue`
| Command Format | Usage |
| - | - |
| `vcctl queue create -n <queue_name> -w <weight>` | create a queue |
| `vcctl queue delete -n <queue_name>` | delete a queue |
| `vcctl queue get -n <queue_name>` | get a queue |
| `vcctl queue list ` | list all the queue |
| `vcctl queue operate -a <open/close/update> -n <queue_name> -w <weight>` | operate a queue |

## `vcctl` vs. Slurm Command Line
The similar Slurm command lines are listed below:

| `vcctl` Function | Similar Slurm Command Line |
| - | - |
| `vcctl job run -f <yaml_file>` | `sbatch <job_file>` |
| `vcctl job run -N <job_name>` | `srun -J <job_name> ` |
| `vcctl job delete -N <job_name> -n <namespace>` | `scancel <job_id> / -n <job_name> -u <user>` |
| `vcctl job suspend -N <job_name> -n <namespace>` | `scontrol suspend <job_id>` |
| `vcctl job resume -N <job_name> -n <namespace>` | `scontrol resume <job_id>` |
| `vcctl job view -N <job_name> -n <namespace>` | `scontrol show job <job_id>` |
| `vcctl job list --all-namespaces` | `scontrol show job` |
| `vcctl job list -n <namespace>` | `squeue -u <user>` |
| `vcctl queue create -n <queue_name> -w <weight>` | `scontrol create PartitionName=<partition_name>` |
| `vcctl queue delete -n <queue_name>` | `scontrol delete PartitionName=<partition_name>` |
| `vcctl queue get -n <queue_name>` | `squeue -p <partition_name> & scontrol show partition <partition_name>` |
| `vcctl queue list ` | `squeue -a & scontrol show partition` |
| `vcctl queue operate -a <open/close/update> -n <queue_name> -w <weight>` | no similar commands |

## New Format of Volcano Command Line
### For Common User
| Old Format | New Format |
| - | - |
| `vcctl job run -N <job_name>` | `vsub -j/--job-name <job_file>` |
| `vcctl job delete -N <job_name> -n <namespace>` | `vcancel -n <job_name> -N <namespace>` |
| `vcctl job suspend -N <job_name> -n <namespace>` | `vsuspend -n <job_name> -N <namespace>` |
| `vcctl job resume -N <job_name> -n <namespace>` | `vresume -n <job_name> -N <namespace>` |
| `vcctl job view -N <job_name> -n <namespace>` | `vjobs -n <job_name> -N <namespace>` |
| `vcctl job list -S <scheduler> -n <namespace>` | `vjobs -S <scheduler> -N <namespace>` |
| `vcctl queue get -n <queue_name>` | `vqueues -n <queue_name>` |
| `vcctl queue list ` | `vqueues` |

#### `vsub` submit via file
Command `vsub` can aslo submit a batch job via `.sh` file, like:
```shell
[user@host]$ vsub test.sh
Submitted batch job test
```
The job file <test.sh> owns a format like:
```shell
#!/bin/bash`

#VSUB jobName test
#VSUB namespace volcano-system
#VSUB queue default
#VSUB schedulerName volcano
#VSUB image busybox
#VSUB replicas 10
#VSUB minAvailable 4
...

echo test.sh start on $(date)
sleep 100
echo test.sh end on $(date)
```


### For Administrator
| Old Format | New Format |
| - | - |
| `vcctl queue create -n <queue_name> -w <weight>` | `vadmin qcreate -n <queue_name> -w <weight>` |
| `vcctl queue delete -n <queue_name>`| `vadmin qcancel -n <queue_name>` |
| `vcctl queue operate -a open -n <queue_name>`| `vadmin qopen -n <queue_name>` |
| `vcctl queue operate -a close -n <queue_name>`| `vadmin qclose -n <queue_name>` |
| `vcctl queue operate -a update -n <queue_name> -w <weight>`| `vadmin qupdate -n <queue_name> -w <weight>` |


operate -a <open/close/update> -n <queue_name> -w <weight>
## Reference
- [Slurm Documentation](https://slurm.schedmd.com/)
- [IBM Platform LSF Command Reference](https://www.ibm.com/support/knowledgecenter/en/SSETD4_9.1.2/lsf_kc_cmd_ref.html)
- [Slurm作业调度系统使用指南](http://hmli.ustc.edu.cn/doc/userguide/slurm-userguide.pdf)
- [SLURM使用基础教程](https://www.hpccube.com/wiki/index.php/SLURM%E4%BD%BF%E7%94%A8%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B)
- [北京大学国际数学中心微型工作站-SLURM 使用参考](http://bicmr.pku.edu.cn/~wenzw/pages/index.html)