Skip to content

Instantly share code, notes, and snippets.

@coin8086
Last active December 16, 2021 09:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save coin8086/d49caff15244dd09534ae8cc3b4a9b79 to your computer and use it in GitHub Desktop.
Save coin8086/d49caff15244dd09534ae8cc3b4a9b79 to your computer and use it in GitHub Desktop.
CycleCloud

Autoscale in CycleCloud

What is CycleCloud

CycleCloud is a product that

  • makes it easy to create and manage HPC computer clusters
  • is open to integrate with various HPC schedulers, like PBS, Slurm, HPC Pack, etc.
  • is deployed by user

See more at

The problems CycleCloud is trying to resolve are

Autoscale Lib

The autoscale lib is a python library (hpc.autoscale), which depends on CycleCloud Python Client (cyclecloud.client).

Overview

CycleCloud Autoscale Lib

NOTE in the diagram:

  • The "Autoscale Lib" is not a standalone process, but a part of the "Autoscale Routine" process. Here they're separated to show the work flow between them.
  • The "Autoscale Routine" and "Scheduler" are two standalone processes.

Example

https://github.com/Azure/cyclecloud-scalelib/tree/master/example-celery

The autoscale routine runs periodically to decide whether to scale up or down a cluster by:

  1. Collect host and job information from a scheduler (Celery in the example).
  2. Add hosts and jobs to a Demand Calculator (demandcalculator from hpc.autoscale.job), calculate demand
  3. Launch new hosts, and/or delete existing hosts as recommended by the Demand Calculator

Scheduler Integration

  • PBS Pro (using the Demand Calculator from autoscale lib)
  • HPC Pack (using the autoscale lib but not the Demand Calculator)
  • Slurm (using CycleCloud Client directly, without the autoscale lib)

NOTE: Whether an integration uses autoscale lib or not, the main work flow remains the same as above overview. The point is: the autoscale routine decides what to do, and eventually makes it by calling CycleCloud REST API.

Create a Custom Application in CycleCloud

Prerequisites:

Steps:

  1. Create a new project by cyclecloud project init
  2. Build & upload the project to CycleCloud storage by cyclecloud project upload
  3. Import the project template into CycleCloud by cyclecloud import_cluster -t.

After you import the new template, you can create an instance of it either in UI or by CLI.

Also refer to:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment