Provisioning and Launching
This guide covers the provisioning of target hosts and launching of containers using the Rumi Controller.
Provisioning
Provisioning prepares a target host to run a Rumi container. The process copies the Rumi distribution and configuration files to the host and sets up the required directory structure.
What Provisioning Does
When a container is provisioned:
The Rumi distribution is copied to the target host via SCP.
A provisioning directory is created at
.rumi/provisioning/<system>/<container>/.The container's configuration files are localized:
DDL model (deployment descriptor)
JVM parameters
XCS (extended configuration)
Environment variables
The
rucpreppreparation script is executed on the target host via SSH.
Local vs. Remote Provisioning
For containers targeting the local machine (host = .), provisioning bypasses SSH and SCP, executing operations directly on the filesystem.
For remote hosts, the Controller uses SSH for command execution and SCP for file transfer. See Configuring Remote Hosts for SSH setup.
NUMA Node Assignment
On NUMA-aware hardware, containers can be assigned to specific NUMA nodes for CPU pinning. The NUMA node is specified when launching the container:
This ensures the container's JVM process and its threads are bound to the specified NUMA node's CPUs and memory, reducing cross-node memory access latency.
Launching
Launching starts the container JVM process on the target host.
What Launching Does
The
ruclaunchscript is executed on the target host (via SSH for remote hosts).A JVM process is started with the container's configured JVM parameters.
The Rumi runtime is initialized within the JVM.
The container connects to the Rumi messaging bus.
Launch Timeout
The Controller waits for the container to become available after launching. The timeout is configurable:
nv.controller.containerlaunchtimeout
Maximum time to wait for a container to launch
Configurable
nv.controller.containerconnecthandshaketimeout
Timeout for the initial connection handshake
15 seconds
nv.controller.containerconnectretryinterval
Interval between connection retry attempts
1 second
The legacy property names (nv.controller.xvmlaunchtimeout, etc.) are still accepted for backward compatibility.
Starting
After launching, the container's microservices are started:
This sends a start command to the container over Rumi messaging, causing the microservice engines (AEP processors) to begin processing messages.
Full Lifecycle Example
A typical deployment sequence:
And teardown:
The xvm and xvms keywords are still accepted in scripts for backward compatibility (e.g., launch the processor-1 xvm).
Last updated