### Build and Install QATLib from Source Source: https://github.com/intel/workload-services-framework/blob/main/stack/QAT/qat-crypto-base_guide.md Clones the QATLib repository, configures the build with service support, compiles the library, and installs it. It also ensures the QAT service is properly started. ```shell git clone https://github.com/intel/qatlib cd qatlib ./autogen.sh ./configure --prefix=/usr --enable-service make -j sudo make install # Make sure qat service is started properly and ready to use sudo systemctl stop qat.service sudo systemctl enable qat.service sudo systemctl restart qat.service sudo systemctl status qat.service ``` -------------------------------- ### Download and Install ClickHouse Packages Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/ClickHouse/README.md Retrieves ClickHouse binaries for the specified version, extracts them, runs installation scripts, and updates the server configuration to listen on all interfaces. Requires wget, tar, and standard Unix utilities. ```sh CLICKHOUSE_VER=23.2.4.12 CLICKHOUSE_PACKAGE=https://packages.clickhouse.com/tgz/stable wget -O - ${CLICKHOUSE_PACKAGE}/clickhouse-common-static-${CLICKHOUSE_VER}-amd64.tgz | tar xzf - wget -O - ${CLICKHOUSE_PACKAGE}/clickhouse-common-static-dbg-${CLICKHOUSE_VER}-amd64.tgz | tar xzf - wget -O - ${CLICKHOUSE_PACKAGE}/clickhouse-server-${CLICKHOUSE_VER}-amd64.tgz | tar xzf – clickhouse-common-static-${CLICKHOUSE_VER}/install/doinst.sh clickhouse-common-static-dbg-${CLICKHOUSE_VER}/install/doinst.sh WORKDIR /root/clickhouse-server-${CLICKHOUSE_VER}/install DEBIAN_FRONTEND=noninteractive ./doinst.sh sed -i 's//0.0.0.0<\/listen_host>/g' /etc/clickhouse-server/config.xml ``` -------------------------------- ### Install Helper Libraries Part 2 Source: https://github.com/intel/workload-services-framework/blob/main/staging/QAT-Crypto-Base/qat_sw_crypto_base.md Installs additional runtime libraries required for QAT operation including numactl for memory allocation and libpcre3 for pattern matching. Cleans package cache after installation. ```bash apt-get update && apt-get install -y numactl libpcre3 && apt-get clean ``` -------------------------------- ### Setup ITEP Environment Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-wsf.md Script to install all necessary prerequisites for ITEP deployment. Uses cmake to configure the ITEP setup for workload evaluation. ```shell cmake -DTERRAFORM_SUT=itep .. ``` -------------------------------- ### Install Helper Libraries (Part 2) Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/QAT-Crypto-Base/qat_hw_crypto_base.md Installs additional runtime libraries like numactl, libprocps8, and zlib1g via apt-get. Requires an updated Ubuntu system. Updates and installs packages, providing dependencies for QAT applications with standard success/error outputs. ```shell apt-get update && apt-get install -y numactl libprocps8 zlib1g ``` -------------------------------- ### Install Containerd on Ubuntu/Debian or CentOS Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-containerd.md Installs the containerd package using the system's package manager. This is a fundamental step before proceeding with Kubernetes installation. ```shell apt-get install containerd # Ubuntu or Debian yum install containerd # Centos ``` -------------------------------- ### Install Helper Libraries (Part 1) Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/QAT-Crypto-Base/qat_hw_crypto_base.md Installs essential build tools and libraries such as git, gcc, cmake, and others using apt-get. Depends on an Ubuntu-based system with internet access for package downloads. Updates package lists and installs in one command, outputting success or error messages. ```shell apt-get update && apt-get install -y git gcc g++ cmake make automake autoconf libtool nasm yasm perl zlib1g-dev pkg-config ``` -------------------------------- ### Install Helper Libraries Part 1 Source: https://github.com/intel/workload-services-framework/blob/main/staging/QAT-Crypto-Base/qat_sw_crypto_base.md Installs essential development tools and libraries required for building QAT components. Includes git, gcc, g++, make, cmake, and other core dependencies needed for compilation. ```bash apt-get update && apt-get install -y git gcc g++ make cmake autoconf automake libssl-dev libpcre3-dev nasm libtool pkg-config ``` -------------------------------- ### Build and Install OpenSSL Source: https://github.com/intel/workload-services-framework/blob/main/staging/QAT-Crypto-Base/qat_sw_crypto_base.md Clones, configures, and installs OpenSSL version 1.1.1t from source. Sets up required directory paths for OpenSSL libraries and includes. This is a dependency for several QAT components. ```bash OPENSSL_INCLUDE_DIR="/usr/local/include/openssl" OPENSSL_LIBRARIES_DIR="/usr/local/lib" OPENSSL_ROOT_DIR="/usr/local/bin/openssl" OPENSSL_VER=1_1_1t OPENSSL_REPO=https://github.com/openssl/openssl.git git clone --depth 1 -b OpenSSL_${OPENSSL_VER} ${OPENSSL_REPO} openssl && \ cd openssl && \ ./config && \ make depend && \ make -j && \ make install ``` -------------------------------- ### Install Linux Integration Services Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-hyperv.md Installs essential Linux Integration Services (LIS) packages for virtual machines running on Hyper-V. These packages improve performance and management of Linux VMs. The command uses `apt-get` for package installation. ```bash sudo apt-get install -y linux-virtual \ linux-cloud-tools-virtual \ linux-tools-virtual ``` -------------------------------- ### Install ClickHouse Server using Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/ClickHouse/README.md Downloads and installs ClickHouse common static, debug, and server packages from the official repository. It sets up the installation scripts and configures the server to listen on all interfaces. Requires wget and tar; version-specific, outputs installed binaries in /root/clickhouse-server. ```shell CLICKHOUSE_VER=23.2.4.12 CLICKHOUSE_PACKAGE=https://packages.clickhouse.com/tgz/stable wget -O - ${CLICKHOUSE_PACKAGE}/clickhouse-common-static-${CLICKHOUSE_VER}-amd64.tgz | tar xzf - wget -O - ${CLICKHOUSE_PACKAGE}/clickhouse-common-static-dbg-${CLICKHOUSE_VER}-amd64.tgz | tar xzf - wget -O - ${CLICKHOUSE_PACKAGE}/clickhouse-server-${CLICKHOUSE_VER}-amd64.tgz | tar xzf – clickhouse-common-static-${CLICKHOUSE_VER}/install/doinst.sh clickhouse-common-static-dbg-${CLICKHOUSE_VER}/install/doinst.sh WORKDIR /root/clickhouse-server-${CLICKHOUSE_VER}/install DEBIAN_FRONTEND=noninteractive ./doinst.sh sed -i 's//0.0.0.0/g' /etc/clickhouse-server/config.xml ``` -------------------------------- ### Build and Install Intel IPSec Source: https://github.com/intel/workload-services-framework/blob/main/staging/QAT-Crypto-Base/qat_sw_crypto_base.md Installs Intel IPSec Multi-buffer library version 1.3 for optimized IP security operations. Compiles and installs to the system library directory with custom configuration options. ```bash IPSEC_MB_VER="v1.3" IPSEC_MB_REPO="https://github.com/intel/intel-ipsec-mb" git clone --depth 1 -b ${IPSEC_MB_VER} ${IPSEC_MB_REPO} && \ cd intel-ipsec-mb && \ make -j && \ make install LIB_INSTALL_DIR=/usr/local/lib NOLDCONFIG=y ``` -------------------------------- ### Build and Install Intel IPSec Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/QAT-Crypto-Base/qat_hw_crypto_base.md Clones and builds Intel's IPSec Multi-Buffer library from GitHub. Requires Make and Git, installing to a specified lib directory. Executes clone, make, and install steps, providing optimized IPSec functions with potential hardware limitations if QAT is unavailable. ```shell IPSEC_MB_VER="v1.3" IPSEC_MB_REPO="https://github.com/intel/intel-ipsec-mb" git clone --depth 1 -b ${IPSEC_MB_VER} ${IPSEC_MB_REPO} && \ cd intel-ipsec-mb && \ make && make install LIB_INSTALL_DIR=/usr/local/lib ``` -------------------------------- ### Install Build Dependencies for QATLib (Fedora) Source: https://github.com/intel/workload-services-framework/blob/main/stack/QAT/qat-crypto-base_guide.md Installs necessary development tools and libraries for building QATLib from source on Fedora. This includes compilers, build utilities, and crypto/compression related libraries. ```shell # Install dependencies sudo dnf update -y sudo dnf install -y gcc systemd-devel automake autoconf libtool sudo dnf install -y openssl-devel zlib-devel yasm ``` -------------------------------- ### Build QAT Engine using Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/WordPress/README.md This code clones and compiles QAT Engine v0.6.11 for QAT offloading. Requires Autotools, OpenSSL, and MultiBuff. Inputs include environment variables and configure flags; outputs installed engine; limitations include hardware dependency on Intel QAT and specific library paths. ```shell QAT_ENGINE_VER="v0.6.11" QAT_ENGINE_REPO=https://github.com/intel/QAT_Engine.git git clone -b ${QAT_ENGINE_VER} --depth 1 ${QAT_ENGINE_REPO} && \ cd /QAT_Engine && \ ./autogen.sh && \ ./configure \ --enable-ipsec_offload \ --enable-multibuff_ecx \ --enable-multibuff_offload \ --with-openssl_install_dir=/usr/local/ \ --with-multibuff_install_dir=/usr/local \ --enable-qat_sw && \ make clean && \ make && \ make install ``` -------------------------------- ### Install Build Dependencies for QATLib (Ubuntu) Source: https://github.com/intel/workload-services-framework/blob/main/stack/QAT/qat-crypto-base_guide.md Installs essential build tools and development libraries for compiling QATLib on Ubuntu. This covers compilers, build systems, and libraries required for crypto and compression functionalities. ```shell # Install dependencies sudo apt update -y sudo apt install -y build-essential cmake g++ pkg-config wget make yasm nasm libboost-all-dev libnl-genl-3-dev zlib1g zlib1g-dev apt install -y systemd m4 pkg-config libudev-dev libssl-dev autoconf libtool tar git ``` -------------------------------- ### Build and Install QAT Lib Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/QAT-Crypto-Base/qat_hw_crypto_base.md Clones, configures, builds, and installs the QAT library from Intel's GitHub repository. Depends on autogen and configure scripts, with options to enable service and disable systemd. Involves cloning, scripting, and make commands, limiting to systems with QAT hardware for full functionality. ```shell QATLIB_VER="23.02.0" QATLIB_REPO="https://github.com/intel/qatlib.git" git clone --depth 1 -b ${QATLIB_VER} ${QATLIB_REPO} && \ cd qatlib && \ ./autogen.sh && \ ./configure --prefix=/usr/local/ \ --enable-systemd=no \ --enable-service && \ make -j && \ make install && \ make samples-install ``` -------------------------------- ### Download cloudbase-init with PowerShell Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-kvm.md Downloads the cloudbase-init installer from GitHub using PowerShell, with proxy support for environments requiring it. ```powershell Invoke-WebRequest -Uri https://github.com/cloudbase/cloudbase-init/releases/download/1.1.4/CloudbaseInitSetup_1_1_4_x64.msi -OutFile CloudbaseInitSetup_1_1_4_x64.msi -Proxy http://proxy-dmz.intel.com:911 ``` -------------------------------- ### Build and Install IPP Crypto Source: https://github.com/intel/workload-services-framework/blob/main/staging/QAT-Crypto-Base/qat_sw_crypto_base.md Installs Intel IPP Crypto library version 2021.7 with OpenSSL integration. Configures build with proper OpenSSL paths and installs the crypto_mb library for multi-buffer cryptographic operations. ```bash IPP_CRYPTO_VER="ippcp_2021.7" IPP_CRYPTO_REPO="https://github.com/intel/ipp-crypto" git clone --depth 1 -b ${IPP_CRYPTO_VER} ${IPP_CRYPTO_REPO} && \ cd ipp-crypto/sources/ippcp/crypto_mb && \ cmake . -B"../build" \ -DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} \ -DOPENSSL_LIBRARIES=${OPENSSL_LIBRARIES_DIR} \ -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} && \ cd ../build && \ make crypto_mb && make install ``` -------------------------------- ### Start DLB or Standard NGINX Cache Server Source: https://github.com/intel/workload-services-framework/blob/main/staging/nginx-dlb/README.md Launches the NGINX cache server. This snippet shows the command to execute the startup script, which can be either `start_dlb_nginx.sh` for DLB-enabled setups or `start_nginx.sh` for standard NGINX configurations. ```bash Then run the ***start_dlb_ngxin.sh*** or ***start_nginx.sh*** (none dlb case) to boot the nginx. ``` -------------------------------- ### Install GoSU Utility for Process Management Source: https://github.com/intel/workload-services-framework/blob/main/staging/MySQL/README.md Downloads and installs GoSU version 1.14 utility for managing user/group privileges during container runtime. The script detects the system architecture, downloads the appropriate binary and GPG signature, and installs it to /usr/local/bin for process privilege dropping capabilities essential for secure containerized MySQL operation. ```sh dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.14/gosu-$dpkgArch" wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/1.14/gosu-$dpkgArch.asc" ``` -------------------------------- ### Initialize and Configure Containerd Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-containerd.md Generates the default containerd configuration file and enables SystemdCgroup for better resource management with systemd. The configuration is then applied and the service restarted. ```shell containerd config default | sudo tee /etc/containerd/config.toml sed -i 's/SystemdCgroup = .*/SystemdCgroup = true/' /etc/containerd/config.toml sudo systemctl restart containerd ``` -------------------------------- ### Build and Install LIBVPX Source: https://github.com/intel/workload-services-framework/blob/main/staging/FFmpeg/README.md Clones a specific version of the LIBVPX library, configures it for VP9 high bit-depth encoding, builds, and installs. It is configured to build shared libraries and disable examples and unit tests. ```bash LIBVPX_VER=v1.9.0 LIBVPX_REPO=https://chromium.googlesource.com/webm/libvpx.git cd /opt/build && \ git clone ${LIBVPX_REPO} -b ${LIBVPX_VER} --depth 1 && \ cd libvpx && \ ./configure --prefix=/usr/local --libdir=/usr/local/lib64 --enable-shared --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=nasm && \ make -j$(nproc) && \ make install DESTDIR=/opt/dist && \ make install ``` -------------------------------- ### Build OpenSSL Library using Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/WordPress/README.md This snippet clones and builds OpenSSL 1.1.1n for cryptographic support. Dependencies include Git and build tools like Make. Input is the repository branch; output is an installed library in /usr/local; limitations include requiring root permissions for installation and potential version incompatibilities. ```shell git clone -b OpenSSL_1_1_1n --depth 1 https://github.com/openssl/openssl.git && \ cd /openssl && \ ./config && \ make depend && \ make -j && \ make install_sw ``` -------------------------------- ### Install QATLib via Package Manager (Fedora) Source: https://github.com/intel/workload-services-framework/blob/main/stack/QAT/qat-crypto-base_guide.md Installs the QATLib development package and configures user permissions using Fedora's DNF package manager. It also restarts the QAT service to ensure it's running. ```shell # Install QATLib sudo dnf install -y qatlib-devel # Add your user to qat group and re-login to make the change effective sudo usermod -a -G qat `whoami` sudo su -l $USER # Make sure qat service is started properly and ready for use. sudo systemctl stop qat.service sudo systemctl enable qat.service sudo systemctl restart qat.service sudo systemctl status qat.service ``` -------------------------------- ### Build and Install NGINX Source: https://github.com/intel/workload-services-framework/blob/main/staging/nginx-dlb/README.md Compiles and installs NGINX from source after configuration. It utilizes parallel build jobs (`-j` flag with `nproc`) for faster compilation and then installs the compiled binaries and modules to the paths specified during the configure step. ```bash make -j`nproc` make install ``` -------------------------------- ### Build and Install QAT Engine Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/QAT-Crypto-Base/qat_hw_crypto_base.md Clones and configures the QAT Engine for OpenSSL integration. Depends on autogen, configure scripts, and OpenSSL, enabling various offload features. Runs build and install commands, enhancing OpenSSL with QAT acceleration for limited hardware-supported operations. ```shell QATENGINE_VER="v0.6.19" QATENGINE_REPO="https://github.com/intel/QAT_Engine" git clone --depth 1 -b ${QATENGINE_VER} ${QATENGINE_REPO} && \ cd QAT_Engine && \ ./autogen.sh && \ ./configure \ --enable-multibuff_offload \ --enable-ipsec_offload \ --enable-multibuff_ecx \ --enable-qat_sw && \ make && make install ``` -------------------------------- ### Build and Install QAT Engine Source: https://github.com/intel/workload-services-framework/blob/main/staging/QAT-Crypto-Base/qat_sw_crypto_base.md Installs Intel QAT Engine version 0.6.19 with support for multi-buffer offload, IPsec offload, and QAT software acceleration. Configures engine with multiple acceleration features enabled. ```bash QATENGINE_VER="v0.6.19" QATENGINE_REPO="https://github.com/intel/QAT_Engine" git clone --depth 1 -b ${QATENGINE_VER} ${QATENGINE_REPO} && \ cd QAT_Engine && \ ./autogen.sh && \ ./configure \ --enable-multibuff_offload \ --enable-ipsec_offload \ --enable-multibuff_ecx \ --enable-qat_sw && \ make -j && make install ``` -------------------------------- ### Build Async Nginx using Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/WordPress/README.md This snippet clones and builds Async Mode Nginx v0.4.7 with SSL support. Assumes PCRE, OpenSSL, and build tools. Inputs are configure flags; outputs installed Nginx; limitations include custom module exclusions and dependency on Intel async libraries. ```shell git clone -b v0.4.7 --depth 1 https://github.com/intel/asynch_mode_nginx.git \ && cd /asynch_mode_nginx \ && ./configure \ --prefix=/var/www \ --conf-path=/usr/local/share/nginx/conf/nginx.conf \ --sbin-path=/usr/local/bin/nginx \ --pid-path=/run/nginx.pid \ --lock-path=/run/lock/nginx.lock \ --modules-path=/var/www/modules/ \ --without-http_rewrite_module \ --with-http_ssl_module \ --with-pcre \ --with-cc-opt="-DNGX_SECURE_MEM -I/usr/local/include/openssl -Wno-error=deprecated-declarations -Wimplicit-fallthrough=0" \ --with-ld-opt="-Wl,-rpath=/usr/local/lib64 -L/usr/local/lib64" \ && make \ && make install \ && cd / ``` -------------------------------- ### NVMe Drive Partitioning and Formatting (Shell) Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-cdn.md Shell commands for preparing NVMe drives on a CDN server, including checking drive existence, creating partitions using fdisk or parted, changing ownership, and formatting with ext4. These steps are crucial for setting up storage for the CDN. ```shell ls /dev/nvme* /dev/nvme?n1 ``` ```shell sudo fdisk /dev/nvme?n1 sudo parted /dev/nvme?n1 ``` ```shell sudo chown nobody /dev/nvme?n1p1 ``` ```shell mkfs.ext4 -F /dev/nvme?n1p1 ``` -------------------------------- ### Build IPSEC MB Library using Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/WordPress/README.md This snippet clones and builds Intel IPSEC MB for IPsec acceleration. Assumes Make and Linux build environment. Input is the repository version; output is installed library; limitations include SAFE_DATA/SAFE_PARAM flags for security, potentially affecting performance in production. ```shell git clone -b v1.2 --depth 1 https://github.com/intel/intel-ipsec-mb.git \ && cd /intel-ipsec-mb \ && make -j SAFE_DATA=y SAFE_PARAM=y SAFE_LOOKUP=y \ && make install NOLDCONFIG=y PREFIX=/usr/local/ \ && cd / ``` -------------------------------- ### Build IPP Crypto Library using Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/WordPress/README.md This code clones and compiles Intel IPP Crypto for multi-buffer cryptography. Requires CMake, OpenSSL, and build dependencies. Inputs include repository branch and OpenSSL paths; outputs installed library; limitations include specific OpenSSL version compatibility and Intel architecture requirements. ```shell git clone -b ippcp_2021.5 --depth 1 https://github.com/intel/ipp-crypto.git && \ cd /ipp-crypto/sources/ippcp/crypto_mb \ && cmake . -B"../build" \ -DOPENSSL_INCLUDE_DIR=/usr/local/include/openssl \ -DOPENSSL_LIBRARIES=/usr/local/lib64 \ -DOPENSSL_ROOT_DIR=/usr/local/bin/openssl \ && cd ../build \ && make crypto_mb \ && make install \ && cd / ``` -------------------------------- ### Install IDXD Config using Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/ClickHouse/README.md Clones and builds idxd-config for IAA device management from Intel's repository. Requires autoconf tools; configures with specific flags and installs to /usr. Outputs accel-config binary for device configuration. ```shell IDXD_VER=accel-config-v3.4.6.4 IDXD_REPO=https://github.com/intel/idxd-config.git git clone -b ${IDXD_VER} ${IDXD_REPO} && \ cd idxd-config && \ ./autogen.sh && \ ./configure CFLAGS='-g -O2' --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 --enable-test=yes && \ make && \ make install ``` -------------------------------- ### Mounting and fstab Configuration (Shell) Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-cdn.md Shell commands to create mount points, mount NVMe partitions, and configure the /etc/fstab file for automatic mounting of storage devices after reboot. This ensures persistent storage availability for the CDN. ```shell mkdir /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4 mount -o defaults,noatime,nodiratime /dev/nvme?n1p1 /mnt/disk? ``` ```shell /dev/nvme?n1p1 /mnt/disk? ext4 rw,noatime,seclabel,discard 0 0 ``` -------------------------------- ### Test WinRM Connection from Command Line Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-hyperv.md Command to verify WinRM connectivity to the Hyper-V host using basic authentication over HTTPS. Replace placeholders with actual user and password values. ```Shell winrm identify -r:https://127.0.0.1:5986 -auth:basic -u: -p: -encoding:utf-8 -skipCAcheck -skipCNcheck ``` -------------------------------- ### Setup WSF environment Source: https://github.com/intel/workload-services-framework/blob/main/workload/Mssql-Native/README.md Initialize the Workload Services Framework by cloning the repository and changing to the project directory. This is the first step required before any workload evaluation. ```shell git clone https://github.com/intel/workload-services-framework.git mywsfrepo cd mywsfrepo ``` -------------------------------- ### Change Containerd Data Storage Location Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-containerd.md Relocates the containerd storage directory to a new path, for example, /mnt/storage/containerd, by updating the config.toml file and restarting the service. ```shell sed -i 's|^root =.*|root = "/mnt/storage/containerd"|' /etc/containerd/config.toml sudo systemctl restart containerd ``` -------------------------------- ### Build proof-of-concept example (mtcp) and compile Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/intel-vector-streaming/READMe.md Navigates to the example_mtcp directory, clones DPDK v22.03, prepares the build environment, sets necessary environment variables, and compiles the project with make. Requires a functional gcc toolchain and DPDK dependencies. ```bash cd Intel-Vector-Data-Streaming-Library/DSAZoo/example_mtcp ./pre_dpdk2203.sh ~dpdk2203 ./pre_compile.sh export RTE_SDK=`echo $PWD`/dpdk export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:~/dpdk2203/lib64/pkgconfig export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:~/dpdk2203/lib64 export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:./ make ``` -------------------------------- ### Install Python Packages via Pip Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen3/XGBoost/README.md This snippet installs multiple Python packages like scikit-learn, pandas, openpyxl, tqdm, requests, and scipy using pip3. It depends on Python and pip being set up, taking no inputs; output is the installed packages for data science tasks. Limitations include version conflicts if other packages are present and requirements for admin privileges in some setups. ```bash pip3 install scikit-learn pandas==1.3.5 openpyxl tqdm requests scipy ``` -------------------------------- ### Configure Cloudbase-init Service Start Type Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-hyperv.md Updates the `cloudbase-init` service properties to set its startup type to 'delayed-auto'. This ensures the service starts automatically after a delay during the system boot process, allowing other dependencies to initialize first. ```xml 1 sc.exe config cloudbase-init start= delayed-auto Start cloudbase-init Never 2 cmd.exe /c ""C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python..." ... ``` -------------------------------- ### Pull MariaDB Docker Image using Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/WordPress/README.md This code pulls the MariaDB 10.7.3 image for database management in WordPress setups. Requires Docker and assumes a compatible environment. Input is the image tag; output is a local image; limitations include potential conflicts with other database services. ```shell docker pull mariadb:10.7.3-focal ``` -------------------------------- ### Install XGBoost via Pip Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen3/XGBoost/README.md This snippet installs XGBoost version 1.6.1 using pip3. It requires Python and pip to be installed, with no specific inputs needed; output is the installed XGBoost library. Limitations include dependency on compatible Python version and potential pip errors in isolated environments. ```bash pip3 install xgboost==1.6.1 ``` -------------------------------- ### Configure development host with WSF Source: https://github.com/intel/workload-services-framework/blob/main/workload/Mssql-Native/README.md Execute the setup-dev.sh script to configure the development host with all required dependencies and configurations for the Workload Services Framework. Script must be run from the root repository directory. ```shell cd script/setup ./setup-dev.sh cd ../.. ``` -------------------------------- ### build.sh Script with QAT-Setup Dependency Source: https://github.com/intel/workload-services-framework/blob/main/doc/developer-guide/component-design/build.md This example shows how to extend the build.sh script to include a dependency on QAT-Setup. It first builds the QAT-Setup stack using its build.sh, then proceeds with the main workload build. ```shell #!/bin/bash -e DIR="$(dirname "$(readlink -f "$0")")" # build QAT-Setup (added section) STACK="qat_setup" "$DIR"/../../stack/QAT-Setup/build.sh $@ # build our image(s) . "$DIR"/../../script/build.sh ``` -------------------------------- ### Run spr-qat-setup Docker Image Source: https://github.com/intel/workload-services-framework/blob/main/stack/QAT/spr-qat-setup_guide.md This command executes the spr-qat-setup Docker image to generate QAT device configurations. It maps necessary volumes for configuration and device access, and sets environment variables to enable specific QAT services. ```docker docker run --rm -v /opt/intel/QAT/build:/opt/intel/QAT/build -v /etc:/opt/intel/etc \ -v /dev:/dev -e DEVICES=8 -e SERVICES_ENABLED=dc spr-qat-setup /qat-invoke.sh ``` -------------------------------- ### Configure NGINX Build with DLB (Cache Server) Source: https://github.com/intel/workload-services-framework/blob/main/staging/nginx-dlb/README.md Configures NGINX for cache server setup, including DLB integration. It sets the DLB library path and defines installation prefixes and module paths similar to the content server, but also includes `--with-file-aio` for asynchronous I/O. ```bash ##set the DLB library path export LIBDLB_LOCAL_PATH= ##set your prefix path mkdir -p $PREFIX/var/www/tmp ./configure \ --prefix=$PREFIX \ --sbin-path=$PREFIX/sbin/nginx \ --modules-path=$PREFIX/lib64/nginx/modules \ --conf-path=$PREFIX/etc/nginx/nginx.conf \ --error-log-path=$PREFIX/var/www/log/error.log \ --pid-path=$PREFIX/var/www/nginx.pid \ --lock-path=$PREFIX/var/www/nginx.lock \ --http-log-path=$PREFIX/var/www/log/access.log \ --http-client-body-temp-path=$PREFIX/var/www/tmp/client_body \ --http-proxy-temp-path=$PREFIX/var/www/tmp/proxy \ --http-fastcgi-temp-path=$PREFIX/var/www/tmp/fastcgi \ --http-uwsgi-temp-path=$PREFIX/var/www/tmp/uwsgi \ --http-scgi-temp-path=$PREFIX/var/www/tmp/scgi \ --user=nobody --group=nobody \ --with-select_module \ --with-poll_module \ --with-threads \ --with-file-aio \ --with-pcre ``` -------------------------------- ### Launch Windows VM with virt-install Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-kvm.md Creates a Windows VM instance using virt-install with specified hardware and network configuration. Requires Windows ISO and virtio-win ISO. Connects to the VM via SPICE protocol on a specified IP address. ```bash virt-install --connect qemu:///system \ --name ws2022 --ram 8192 --vcpus 8 \ --network network=default,model=virtio \ --disk path=windows-server-2022.qcow2,format=qcow2,device=disk,bus=virtio,size=11 \ --os-type windows --os-variant win2k19 \ --cdrom windows-server-2022.iso \ --disk path=virtio.iso,device=cdrom \ --graphics spice,listen=10.165.31.154 ``` -------------------------------- ### Install Python 3.10 from Source with Shell Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen3/XGBoost/README.md This snippet installs Python 3.10 from source on a Debian system using shell commands. It depends on apt-get for updates and curl for downloading; it takes no inputs and installs Python via configure, make, and install. Limitations include potential build failures on unsupported architectures and time required for compilation. ```bash apt-get update && curl -Ls https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz -o Python-3.10.0.tgz && tar -xzvf Python-3.10.0.tgz && cd Python-3.10.0 && ./configure --enable-optimizations && make -j8 && make install ``` -------------------------------- ### Benchmark Script Setup and Help - Bash Source: https://github.com/intel/workload-services-framework/blob/main/staging/Istio-Envoy-QAT-DLB/README.md This snippet shows how to set execute permissions for the benchmark script and access its help message. The script requires root privileges on the remote device for execution. The help command displays all available options and their descriptions. ```bash chmod +x benchmark.sh ./benchmark.sh --help ``` -------------------------------- ### Install CRI-RM v0.7.0 on Hosts Source: https://github.com/intel/workload-services-framework/blob/main/staging/deathstarbench-hotelreservation/README_hotelReservation.md Installs CRI-Resource-Manager version 0.7.0 on all hosts. This involves downloading the appropriate .deb package based on the OS and version, installing it, copying a sample configuration file, and enabling/starting the CRI-RM service. CRI-RM is a CRI proxy for hardware-aware resource allocation. ```shell # Install CRI-RM 0.7.0 CRIRM_VERSION="0.7.0" source /etc/os-release pkg=cri-resource-manager_${CRIRM_VERSION}_${ID}-${VERSION_ID}_amd64.deb; curl -LO https://github.com/intel/cri-resource-manager/releases/download/v${CRIRM_VERSION}/${pkg}; sudo dpkg -i ${pkg}; rm ${pkg} sudo cp /etc/cri-resmgr/fallback.cfg.sample /etc/cri-resmgr/fallback.cfg sudo systemctl enable cri-resource-manager && sudo systemctl start cri-resource-manager ``` -------------------------------- ### Install Chromium Zlib with AVX512 Optimization via CMake Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/chromium-zlib/README.md Clones the Chromium Zlib repository and builds it with AVX512 SIMD optimizations enabled. Configures CMake with ENABLE_SIMD_OPTIMIZATIONS and ENABLE_SIMD_AVX512 flags set to 1. Requires git, cmake, g++ packages and sudo privileges for installation. ```shell cd ${HOME}/Downloads git clone https://chromium.googlesource.com/chromium/src/third_party/zlib cd zlib mkdir avx-build cd avx-build cmake -DENABLE_SIMD_OPTIMIZATIONS=1 -DENABLE_SIMD_AVX512=1 -DCMAKE_BUILD_TYPE=RELEASE .. make -j sudo make install ``` -------------------------------- ### Configure Development Host Environment Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-wsf.md Sets up the development host environment for building and evaluating workloads. Installs required packages including cmake, make, m4, and gawk. Configures Docker and adds ctest alias. Requires sudo privileges and logout/relogin after execution. ```shell Usage: [options] Options: --nodaemonize Do not install daemonize --no-password Do not ask for password. Use environment variable DEV_SUDO_PASSWORD ``` -------------------------------- ### Install Squid Proxy Server Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-kvm.md Installs the Squid proxy server on a JumpHost. This is a prerequisite for setting up bridged networking among KVM hosts, allowing them to access the IT network through the proxy. ```shell sudo apt-get install -y squid ``` -------------------------------- ### Initialize AWS cloud environment Source: https://github.com/intel/workload-services-framework/blob/main/workload/Mssql-Native/README.md Configure AWS credentials and access by running make aws command followed by aws configure. Requires AWS account with appropriate permissions and JSON output format for proper integration. ```shell make aws # or make -C ../.. aws, if under build/workload/ $ aws configure # please specify a region and output format as json $ exit ``` -------------------------------- ### Build and Install QAT Lib Source: https://github.com/intel/workload-services-framework/blob/main/staging/QAT-Crypto-Base/qat_hw_crypto_base.md Clones, configures, builds, and installs the QAT Lib (version 23.02.0). This involves using autogen.sh and configure scripts, with options to disable systemd integration. ```bash QATLIB_VER="23.02.0" QATLIB_REPO="https://github.com/intel/qatlib.git" git clone --depth 1 -b ${QATLIB_VER} ${QATLIB_REPO} && \ cd qatlib && \ ./autogen.sh && \ ./configure --prefix=/usr/local/ \ --enable-systemd=no \ --enable-service && \ make -j && \ make install && \ make samples-install ``` -------------------------------- ### Install MySQL Server 8.0.31 and Dependencies Source: https://github.com/intel/workload-services-framework/blob/main/staging/MySQL/README.md Installs MySQL Server 8.0.31 and all required dependencies using Debian packages from the official MySQL repository. The installation sequence includes community server core, common libraries, client plugins, client core, and client components. Version 8.0.31 is specified with Ubuntu 22.04 compatibility for amd64 architecture. ```sh MYSQL_VER="8.0.31" MYSQL_DEB_POOL="https://repo.mysql.com/apt/ubuntu/pool/mysql-8.0/m/mysql-community" wget ${MYSQL_DEB_POOL}/mysql-community-server-core_${MYSQL_VER}-1ubuntu22.04_amd64.deb dpkg -i mysql-community-server-core_${MYSQL_VER}-1ubuntu22.04_amd64.deb wget ${MYSQL_DEB_POOL}/mysql-common_${MYSQL_VER}-1ubuntu22.04_amd64.deb dpkg -i mysql-common_${MYSQL_VER}-1ubuntu22.04_amd64.deb wget ${MYSQL_DEB_POOL}/mysql-community-client-plugins_${MYSQL_VER}-1ubuntu22.04_amd64.deb dpkg -i mysql-community-client-plugins_${MYSQL_VER}-1ubuntu22.04_amd64.deb wget ${MYSQL_DEB_POOL}/mysql-community-client-core_${MYSQL_VER}-1ubuntu22.04_amd64.deb dpkg -i mysql-community-client-core_${MYSQL_VER}-1ubuntu22.04_amd64.deb wget ${MYSQL_DEB_POOL}/mysql-community-client_${MYSQL_VER}-1ubuntu22.04_amd64.deb dpkg -i mysql-community-client_${MYSQL_VER}-1ubuntu22.04_amd64.deb ``` -------------------------------- ### Build Redis Server CI Example with Gramine Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen3/SGXGramine/ConfidentialRedis/README.md Clones the Gramine project, navigates to the Redis CI example directory, and builds the Redis server with SGX support. The make command is embedded in an echo to handle container builds. ```bash cd / ``` ```bash git clone https://github.com/gramineproject/gramine.git ``` ```bash cd /gramine/CI-Examples/redis ``` ```bash echo $(make SGX=1) ``` -------------------------------- ### Terraform Configuration Example for MultiNode Source: https://github.com/intel/workload-services-framework/blob/main/workload/Redis-Memtier-Native/README.md Example Terraform configuration for a multi-node Redis-Memtier-Native setup. It defines the worker and client profiles, including the number of VMs and host details. The controller is set to zero VMs for native deployments. ```terraform variable "worker_profile" { default = { vm_count = 1 hosts = { "worker-0": { "user_name": "", "public_ip": "", "private_ip": "", "ssh_port": 22, } } } } variable "client_profile" { default = { vm_count = 1 hosts = { "client-0": { "user_name": "", "public_ip": "", "private_ip": "", "ssh_port": 22, } } } } variable "controller_profile" { default = { vm_count = 0 hosts = { "controller-0": { "user_name": "test", "public_ip": "127.0.0.1", "private_ip": "127.0.0.1", "ssh_port": 22, } } } } ... ``` -------------------------------- ### Benchmark Script Usage Examples - Bash Source: https://github.com/intel/workload-services-framework/blob/main/staging/Istio-Envoy-QAT-DLB/README.md Demonstrates various ways to run the benchmark script with different configurations. Examples cover HTTP/1, HTTP/2, and HTTPS protocols, specifying parameters like port, requests per second (RPS), CPU threads, duration, and protocol-specific options such as concurrent connections or streams. ```bash # use case #1 - run benchmark for one node with IP address , on port 10000, request per second equals to 100 # for protocol HTTP/1 and 100 connections [connections are HTTP/1 only], nighthawk measurement lasts 50 seconds. ./benchmark.sh --port 10000 --rps 100 --nh-cpu 5-9 -d 50 --protocol http1 --con 100 ``` ```bash # use case #2 - run benchmark for one node with IP address , on port 10000, request per second equals to 100 # for protocol HTTP/2, max concurrent streams parameter equals to 50 (--mcs) and max active requests equals to 100(--mar) [mcs and mar # arguments are HTTP/2 only], nighthawk measurement lasts 50 seconds. ./benchmark.sh --port 10000 --rps 100 --nh-cpu 5-9 -d 50 --protocol http2 --mcs 50 --mar 100 ``` ```bash # use case #3 - run series of benchmarks for one node with IP address , on port 10000, request per second equals to 100 # for protocol HTTP/1 and 100 connections [connections are HTTP/1 only]. Nighthawk measurement lasts 50 seconds. # Measurements will be performed in a loop, starting from the RPS value specified with --rps and ending with the value specified # with --max-rps, with a step equal to --step-rps. ./benchmark.sh --port 10000 --rps 100 --max-rps 200 --step-rps 10 --nh-cpu 5-9 -d 50 --protocol http1 --con 100 ``` ```bash # use case #4 - run benchmark for one node with IP address , on port 10000, request per second equals to 100 # for protocol HTTPS, max concurrent streams parameter equals to 50 (--mcs) and max active requests equals to 100(--mar) [mcs and mar arguments are HTTP/2 only] nighthawk measurement lasts 50 seconds. ./benchmark.sh --port 10000 --rps 100 --nh-cpu 5-9 -d 50 --protocol https --mcs 50 --mar 100 ``` -------------------------------- ### Install Intel oneAPI HPC Toolkit Source: https://github.com/intel/workload-services-framework/blob/main/staging/OpenFOAM/README.md Downloads, makes executable, and silently installs the Intel oneAPI HPC Toolkit offline installer. It then sources the environment variables for oneAPI tools. Requires root privileges for installation. ```bash wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/1ff1b38a-8218-4c53-9956-f0b264de35a4/l_HPCKit_p_2023.1.0.46346_offline.sh chmod +x l_HPCKit_p_2023.1.0.46346_offline.sh sudo ./l_HPCKit_p_2023.1.0.46346_offline.sh -a -s --silent --eula accept source /opt/intel/oneapi/setvars.sh ``` -------------------------------- ### Install accel-config from Source (Ubuntu) Source: https://github.com/intel/workload-services-framework/blob/main/stack/MongoDB/README.md Instructions to install the 'accel-config' tool from source on Ubuntu systems. This tool is a dependency for configuring Intel IAA devices and requires following the build instructions provided in the GitHub repository. ```shell # Install from source(https://github.com/intel/idxd-config) on ubuntu: please refer to https://github.com/intel/idxd-config#build ``` -------------------------------- ### Build and Install Zlib Library (Bash) Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/WRF/README.md Downloads, extracts, configures, builds, and installs the Zlib compression library. It sources the Intel oneAPI environment and sets a custom installation prefix for Zlib. ```bash wget https://www.zlib.net/zlib-1.3.tar.gz -O zlib.tar.gz tar -zxf zlib.tar.gz cd zlib-* source /opt/intel/oneapi/setvars.sh ./configure --prefix=/usr/local/zlib make sudo make install ``` -------------------------------- ### Build and Install Python with Bash Source: https://github.com/intel/workload-services-framework/blob/main/staging/VPP-FIB/README.md This bash script downloads, configures, and installs Python 3.8.0 with pip and cryptography. Requires wget and build tools; modifies setup for SSL. Outputs installed Python. Limitation: Edits files in-place; assumes /usr/local structure; may conflict with system Python. ```bash PYTHON_VER="3.8.0" PYTHON_PACKAGE=https://www.python.org/ftp/python/${PYTHON_VER}/Python-${PYTHON_VER}.tar.xz cd / && \ wget --no-check-certificate -O - ${PYTHON_PACKAGE} | tar xfJ - && \ cd Python-* && \ sed -i 's/#SSL=\/usr\/local\/ssl/SSL=\/usr\/local/g' ./Modules/Setup && \ sed -i '211,213s/#//\/g' ./Modules/Setup && \ ./configure && \ make && \ make install && \ python3 -m pip install -U pip setuptools && \ python3 -m pip install --upgrade cryptography && \ ln -s /usr/local/bin/python3 /usr/bin/python3 ``` -------------------------------- ### Prepare Linux VM for Reuse with Cloud-Init Cleanup (Bash) Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-hyperv.md This script cleans the cloud-init state on a Linux VM to allow safe shutdown and VHDX image copying for reuse in Hyper-V. It assumes sudo access and cloud-init installation; no inputs are required, but outputs a cleaned system state before shutdown. Limitations include potential need to repeat steps if the VM is booted again, as it may regenerate configurations. ```bash sudo cloud-init clean sudo shutdown -h now ``` -------------------------------- ### Kubernetes Node Labeling (Shell) Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-cdn.md Commands to label and unlabel Kubernetes nodes, indicating specific hardware or setup configurations like 100G network interface or disk specifications. These labels are used by Kubernetes to schedule pods onto appropriate nodes. ```shell kubectl label node node_name HAS-SETUP-NIC-100G=yes ``` ```shell kubectl label node node_name HAS-SETUP-NIC-100G- ``` -------------------------------- ### Build and Install Zlib Library Source: https://github.com/intel/workload-services-framework/blob/main/staging/OpenFOAM/README.md Downloads the Zlib source code, extracts it, configures the build, compiles, and installs the library system-wide. This is a common utility library for many software projects. ```bash wget https://www.zlib.net/fossils/zlib-1.3.tar.gz -O zlib.tar.gz tar -zxf zlib.tar.gz cd zlib-* ./configure make -j sudo make install ``` -------------------------------- ### NPU Firmware Installation using dpkg Source: https://github.com/intel/workload-services-framework/blob/main/workload/General-Video-Analytics-CNN/README.md This code snippet shows how to download and install the NPU firmware package for Ubuntu 24.04 using the dpkg package manager. It involves fetching the .deb file from a specified URL and then using `dpkg -i` to install it, followed by handling any potential dependency issues. ```bash wget https://github.com/intel/linux-npu-driver/releases/download/v1.17.0/intel-fw-npu_1.17.0.20250508-14912879441_ubuntu24.04_amd64.deb sudo dpkg -i *.deb ``` -------------------------------- ### Install ISC DHCP Server (Debian/Ubuntu) Source: https://github.com/intel/workload-services-framework/blob/main/doc/user-guide/preparing-infrastructure/setup-kvm.md Installs the ISC DHCP server on Debian-based systems using apt-get. This package provides a DHCP server to assign IP addresses to network clients. Ensure the system has the necessary privileges to run this command. ```bash sudo apt-get install -y isc-dhcp-server ``` -------------------------------- ### Set Environment Variables for OpenFOAM Version 11 Source: https://github.com/intel/workload-services-framework/blob/main/staging/recipes/gen4/OpenFOAM/README.md Exports OPENFOAM_VERSION and sets MPI_ROOT to Intel MPI path for use in subsequent OpenFOAM setup. Assumes Intel oneAPI is installed; inputs I_MPI_ROOT environment variable. No outputs; essential for configuration scripts. ```bash export OPENFOAM_VERSION=11 export MPI_ROOT=${I_MPI_ROOT} ``` -------------------------------- ### Start Content Generators and NGINX Source: https://github.com/intel/workload-services-framework/blob/main/staging/nginx-dlb/README.md Initiates the content generator scripts and the NGINX origin server. The content generators create varying object sizes, and NGINX is started with a specific configuration file, directing output to /dev/null to suppress logs. ```bash cd $PREFIX ##start 10K, 100K, 1M object generator ./bin/http_obj_gen_10k.py --host localhost --port 8888 --obj-dist fixed > /dev/null 2> /dev/null ./bin/http_obj_gen_100k.py --host localhost --port 8888 --obj-dist fixed > /dev/null 2> /dev/null ./bin/http_obj_gen.py --host localhost --port 8888 --obj-dist fixed > /dev/null 2> /dev/null ##start origin server ${PWD}/sbin/nginx -c ${PWD}/etc/nginx/nginx.conf ``` -------------------------------- ### Install NGINX Build Dependencies (Ubuntu) Source: https://github.com/intel/workload-services-framework/blob/main/staging/nginx-dlb/README.md Installs essential packages required for building NGINX from source on Ubuntu systems. This includes build tools like make and gcc, along with development libraries for PCRE, zlib, libxml2, and libxslt. ```bash apt-get install -y make gcc libpcre3-dev zlib1g-dev libxml2 libxslt-dev ```