DocumentationChangelogUsage guide
Log In

Prepare host OS

Prepare host OS in the Oracle Cloud (OCI).

SSH to the host OS

You can find the instance's public IP address in the list of your instances.

Oracle Linux's default user is opc, use the following command to ssh to your instance (to the host OS). On Linux and macOS, you'll first need to limit the key file permissions using the chmod command.

chmod 400 path/to/your-private-key.pem
ssh -i path/to/your-private-key.pem opc@INSTANCE_IP

Disable firewalld

Oracle cloud instances are protected by the Network Security Groups (the cloud firewall feature), so you can stop and disable the in-OS firewall.

sudo systemctl disable firewalld --now

Update the OS

This takes several minutes.

sudo dnf update -y

Disable nouveau driver

nouveau, the open-source driver for Nvidia GPUs is usually pre-loaded. It must be disabled to install Nvidia's own driver.

sudo modprobe -r nouveau

Prevent loading of the nouveau kernel module at boot.

echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist.conf

Install Nvidia driver

Prerequisities

sudo dnf --enablerepo=ol8_developer_EPEL -y install dkms
sudo dnf -y config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo

Install the driver

sudo dnf module -y install nvidia-driver:515-dkms
sudo modprobe nvidia

Check Nvidia driver works

The following command should print a meaningful output.

 nvidia-smi

Install Docker CE

Installation

Follow the Setting up Docker on CentOS 7/8 chapter from the official Nvidia docs (Centos 8 variant)

Use docker command without sudo

This allows running the docker command as a non-root user.

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

Install NVIDIA Container Toolkit

Follow the Setting up NVIDIA Container Toolkit chapter from the official Nvidia docs (Centos 8 variant). You need to use the following command for setting up the Nvidia Container toolkit repository instead of the official one (Oracle Linux 8 isn't supported by their command).

  curl -s -L https://nvidia.github.io/libnvidia-container/centos8/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

docker-compose installation

We use the docker-compoe tool for making it easier to launch our Docker container. Use the following command to install the docker-compose tool.

sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Next, check that the docker-compose tool is successfully installed. The following command should return meaningful output.

docker-compose version

Disable mDNS on the host

The mDNS service mustn't be active in the host OS for NDI discovery to work. If present, this command removes it from the host OS:

sudo yum list installed avahi
sudo yum remove avahi

Increase max UDP kernel buffer size

To receive and send streams with high-bitrate codecs (e.g., JPEG2000 or JPEG-XS), Live Transcoder needs to increase the UDP kernel buffer size. However, the default maximum size is too low so it needs to be increased.

SYSCTL_CONF="/etc/sysctl.d/10-udp-buffer-size.conf"
sudo sh -c "echo '#kernel send a receive windows buffer sizes' > $SYSCTL_CONF"
sudo sh -c "echo 'net.core.rmem_max=262144000' >> $SYSCTL_CONF"
sudo sh -c "echo 'net.core.wmem_max=262144000' >> $SYSCTL_CONF"
sudo sh -c "echo 'net.core.rmem_default=262144000' >> $SYSCTL_CONF"
sudo sh -c "echo 'net.core.wmem_default=262144000' >> $SYSCTL_CONF"

Now load the updated config file.

sudo sysctl -p $SYSCTL_CONF

Increase txqueuelen for network interfaces

To stream out high-bitrate codecs (e.g., JPEG2000 or JPEG-XS), alsotxqueuelen parameter should be increased for the respective network interface(s). Below, we set the parameter for all eth* interfaces and also localhost. Please, change eth prefix to match your interface name (you can list your interface with ifconfig command).

sudo bash -c 'cat > /etc/udev/rules.d/80-txqueuelen.rules' << EOF
SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="eth*|lo", ATTR{tx_queue_len}="10000"
EOF

To apply the changes immediately, run:

sudo udevadm control --reload-rules && sudo udevadm trigger