# CPU-Manager-for-Kubernetes **Repository Path**: certus/CPU-Manager-for-Kubernetes ## Basic Information - **Project Name**: CPU-Manager-for-Kubernetes - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-11 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CPU Manager for Kubernetes [![Build Status](https://travis-ci.org/intel/CPU-Manager-for-Kubernetes.svg?branch=master)](https://travis-ci.org/intel/CPU-Manager-for-Kubernetes) ## Overview This project provides basic core affinity for NFV-style workloads on top of vanilla Kubernetes v1.5+. This project ships a single multi-use command-line program to perform various functions for host configuration, managing groups of CPUs, and constraining workloads to specific CPUs. ## Concepts | Term | Meaning | | :------------- | :------ | | Pool | A named group of CPU lists. A pool can be either _exclusive_ or _shared_. In an _exclusive_ pool, only one task may be allocated to each CPU list simultaneously. | | CPU list | A group of logical CPUs, identified by ID as reported by the operating system. CPU lists conform to the Linux cpuset [CPU list format][cpu-list]. | | Task list | A list of Linux process IDs. | | Isolation | Steps required to set up a process environment so that it runs only on a desired subset of the available CPUs. | | Reconciliation | The process of resolving state between the CMK configuration directory and the Linux [procfs][procfs]. | ## Usage summary ``` Usage: cmk (-h | --help) cmk --version cmk cluster-init (--host-list=|--all-hosts) [--cmk-cmd-list=] [--cmk-img=] [--cmk-img-pol=] [--conf-dir=] [--install-dir=] [--num-exclusive-cores=] [--num-shared-cores=] [--pull-secret=] [--saname=] [--shared-mode=] [--exclusive-mode=] [--namespace=] cmk init [--conf-dir=] [--num-exclusive-cores=] [--num-shared-cores=] [--socket-id=] [--shared-mode=] [--exclusive-mode=] cmk discover [--conf-dir=] cmk describe [--conf-dir=] cmk reconcile [--conf-dir=] [--publish] [--interval=] cmk isolate [--conf-dir=] [--socket-id=] --pool= [-- ...][--no-affinity] cmk install [--install-dir=] cmk node-report [--conf-dir=] [--publish] [--interval=] cmk uninstall [--install-dir=] [--conf-dir=] [--namespace=] cmk webhook [--conf-file=] Options: -h --help Show this screen. --version Show version. --host-list= Comma seperated list of Kubernetes nodes to prepare for CMK software. --all-hosts Prepare all Kubernetes nodes for the CMK software. --cmk-cmd-list= Comma seperated list of CMK sub-commands to run on each host [default: init,reconcile,install,discover,nodereport]. --cmk-img= CMK Docker image [default: cmk:v1.4.1]. --cmk-img-pol= Image pull policy for the CMK Docker image [default: IfNotPresent]. --conf-dir= CMK configuration directory [default: /etc/cmk]. --install-dir= CMK install directory [default: /opt/bin]. --interval= Number of seconds to wait between rerunning. If set to 0, will only run once. [default: 0] --num-exclusive-cores= Number of cores in exclusive pool. [default: 4]. --num-shared-cores= Number of cores in shared pool. [default: 1]. --pool= Pool name: either infra, shared or exclusive. --shared-mode= Shared pool core allocation mode. Possible modes: packed and spread [default: packed]. --exclusive-mode= Exclusive pool core allocation mode. Possible modes: packed and spread [default: packed]. --publish Whether to publish reports to the Kubernetes API server. --pull-secret= Name of secret used for pulling Docker images from restricted Docker registry. --saname= ServiceAccount name to pass [default: cmk-serviceaccount]. --socket-id= ID of socket where allocated core should come from. If it's set to -1 then child command will be assigned to any socket [default: -1]. --no-affinity Do not set cpu affinity before forking the child command. In this mode the user program is responsible for reading the `CMK_CPUS_ASSIGNED` environment variable and moving a subset of its own processes and/or tasks to the assigned CPUs. --namespace= Set the namespace to deploy pods to during the cluster-init deployment process. [default: default]. ``` _For detailed usage information about each subcommand, see [Using the cmk command-line tool][doc-cli]._ ## Further Reading - [Architecture][arch] - [Building cmk][doc-build] - [Operator manual][doc-operator] - [User manual][doc-user] - [Using the cmk command-line tool][doc-cli] - [The cmk configuration directory][doc-config] - [Releasing][release] [arch]: docs/architecture.md [cpu-list]: http://man7.org/linux/man-pages/man7/cpuset.7.html#FORMATS [doc-build]: docs/build.md [doc-cli]: docs/cli.md [doc-config]: docs/config.md [doc-operator]: docs/operator.md [doc-user]: docs/user.md [procfs]: http://man7.org/linux/man-pages/man5/proc.5.html [release]: RELEASE.md