Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

kvm_getpcpu(3) [freebsd man page]

KVM_GETPCPU(3)						   BSD Library Functions Manual 					    KVM_GETPCPU(3)

NAME
kvm_dpcpu_setcpu kvm_getmaxcpu, kvm_getpcpu -- access per-CPU data LIBRARY
Kernel Data Access Library (libkvm, -lkvm) SYNOPSIS
#include <sys/param.h> #include <sys/pcpu.h> #include <sys/sysctl.h> #include <kvm.h> int kvm_dpcpu_setcpu(kvm_t *kd, u_int cpu); int kvm_getmaxcpu(kvm_t *kd); int kvm_getncpus(kvm_t *kd); void * kvm_getpcpu(kvm_t *kd, int cpu); ssize_t kvm_read_zpcpu(kvm_t *kd, u_long base, void *buf, size_t size, int cpu); uint64_t kvm_counter_u64_fetch(kvm_t *kd, u_long base); DESCRIPTION
The kvm_dpcpu_setcpu(), kvm_getmaxcpu(), and kvm_getpcpu() functions are used to access the per-CPU data of active processors in the kernel indicated by kd. Per-CPU storage comes in two flavours: data stored directly in a struct pcpu associated with each CPU, and dynamic per-CPU storage (DPCPU), in which a single kernel symbol refers to different data depending on what CPU it is accessed from. The kvm_getmaxcpu() function returns the maximum number of CPUs supported by the kernel. The kvm_getncpus() function returns the current number of CPUs in the kernel. The kvm_getpcpu() function returns a buffer holding the per-CPU data for a single CPU. This buffer is described by the struct pcpu type. The caller is responsible for releasing the buffer via a call to free(3) when it is no longer needed. If cpu is not active, then NULL is returned instead. The kvm_read_zpcpu() function is used to obtain private per-CPU copy from a UMA_ZONE_PCPU zone(9). It takes base argument as base address of an allocation and copyies size bytes into buf from the part of allocation that is private to cpu. The kvm_counter_u64_fetch() function fetches value of a counter(9) pointed by base address. Symbols for dynamic per-CPU data are accessed via kvm_nlist(3) as with other symbols. libkvm maintains a notion of the "current CPU", set by kvm_dpcpu_setcpu, which defaults to 0. Once another CPU is selected, kvm_nlist(3) will return pointers to that data on the appropriate CPU. CACHING
kvm_getmaxcpu() and kvm_getpcpu() cache the nlist values for various kernel variables which are reused in successive calls. You may call either function with kd set to NULL to clear this cache. RETURN VALUES
On success, the kvm_getmaxcpu() function returns the maximum number of CPUs supported by the kernel. If an error occurs, it returns -1 instead. On success, the kvm_getpcpu() function returns a pointer to an allocated buffer or NULL. If an error occurs, it returns -1 instead. On success, the kvm_dpcpu_setcpu() call returns 0; if an error occurs, it returns -1 instead. On success, the kvm_read_zpcpu() function returns number of bytes copied. If an error occurs, it returns -1 instead. If any function encounters an error, then an error message may be retrieved via kvm_geterr(3). SEE ALSO
free(3), kvm(3), counter(9), zone(9) BSD
February 12, 2014 BSD

Check Out this Related Man Page

CHCPU(8)						       System Administration							  CHCPU(8)

NAME
chcpu - configure CPUs SYNOPSIS
chcpu -c|-d|-e|-g cpu-list chcpu -p mode chcpu -r|-h|-V DESCRIPTION
chcpu can modify the state of CPUs. It can enable or disable CPUs, scan for new CPUs, change the CPU dispatching mode of the underlying hypervisor, and request CPUs from the hypervisor (configure) or return CPUs to the hypervisor (deconfigure). Some options have a cpu-list argument. Use this argument to specify a comma-separated list of CPUs. The list can contain individual CPU addresses or ranges of addresses. For example, 0,5,7,9-11 makes the command applicable to the CPUs with the addresses 0, 5, 7, 9, 10, and 11. OPTIONS
-c, --configure cpu-list Configure the specified CPUs. Configuring a CPU means that the hypervisor takes a CPU from the CPU pool and assigns it to the vir- tual hardware on which your kernel runs. -d, --disable cpu-list Disable the specified CPUs. Disabling a CPU means that the kernel sets it offline. -e, --enable cpu-list Enable the specified CPUs. Enabling a CPU means that the kernel sets it online. A CPU must be configured, see -c, before it can be enabled. -g, --deconfigure cpu-list Deconfigure the specified CPUs. Deconfiguring a CPU means that the hypervisor removes the CPU from the virtual hardware on which the Linux instance runs and returns it to the CPU pool. A CPU must be offline, see -d, before it can be deconfigured. -p, --dispatch mode Set the CPU dispatching mode (polarization). This option has an effect only if your hardware architecture and hypervisor support CPU polarization. Available modes are: horizontal The workload is spread across all available CPUs. vertical The workload is concentrated on few CPUs. -r, --rescan Trigger a rescan of CPUs. After a rescan, the Linux kernel recognizes the new CPUs. Use this option on systems that do not auto- matically detect newly attached CPUs. -V, --version Display version information and exit. -h, --help Display help text and exit. RETURN CODES
chcpu has the following return codes: 0 success 1 failure 64 partial success AUTHOR
Heiko Carstens <heiko.carstens@de.ibm.com> COPYRIGHT
Copyright IBM Corp. 2011 SEE ALSO
lscpu(1) AVAILABILITY
The chcpu command is part of the util-linux package and is available from Linux Kernel Archive <https://www.kernel.org/pub/linux/utils /util-linux/>. util-linux July 2014 CHCPU(8)
Man Page