Outils pour utilisateurs

Outils du site


tech:gerer_le_cpu_sous_gnu_linux

Ceci est une ancienne révision du document !


Gérer les CPUs sous GNU/Linux

Notes

Outils :

  • lscpu
  • chcpu
  • cpufreq-info
  • CoreCtrl
  • turbostat
  • cpupower
  • powertop
  • rdmsr / wrmsr (msr-tools)
  • kvm-ok / check-bios-nx (cpu-checker)

Notions :

  • Systèmes multi-processeurs (NUMA SMP)
  • Systèmes multi-cœurs (SMP)
  • Systèmes multi-threads (SMT)

Params Kernel :

  • nr_cpus

Infos nombre de cores threads CPU

Nombre de threads

grep ^processor /proc/cpuinfo

Nous avons une valeurs par thread. C'est donc la derniere valeur +1 qui donne le nombre de threads (si un seul CPU physique)

Nombre de cores

grep '^cpu cores' /proc/cpuinfo

Toutes les valeurs sont identiques si un seul CPU physique

CPUFrequtils

Voir aussi : intel_p-state

Gérer la fréquence cpu

service cpufrequtils stop
#!/bin/sh -e
#
# rc.local
echo "conservative" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "conservative" >/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo "conservative" >/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
#echo "conservative" >/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
# echo "performance" >  /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
exit 0

Fichier à exécuter en root pour changer le gouverneur. Choix possible selon la configuration du noyau : conservative, ondemand, powersave, performance.

  Avec cpufrequtils : (en root)
cp /usr/share/doc/cpufrequtils/examples/cpufrequtils.sample /etc/default/cpufrequtils
 
cpufreq-set -c 0 -d 2100000 -u 3300000
 
service cpufrequtils reload
  1. c : numéro processeur
  2. d : freq min
  3. u : freq max
  4. f : freq exact voulu

Notes cpufreq

Voir :

grep MHz /proc/cpuinfo
apt-get install linux-cpupower
cpupower
$ cpupower frequency-info -g
analyzing CPU 0:
  available cpufreq governors: Not Available

$ cpupower frequency-info
analyzing CPU 0:
  no or unknown cpufreq driver is active on this CPU
  CPUs which run at the same hardware frequency: Not Available
  CPUs which need to have their frequency coordinated by software: Not Available
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: Not Available
  available cpufreq governors: Not Available
  Unable to determine current Policy
  current CPU frequency: Unable to call hardware
  current CPU frequency:  Unable to call to kernel
  boost state support:
    Supported: yes
    Active: yes

If you have Turbo Boost enabled in the UEFI/BIOS, you can turn boost on (1) or off (0) by running

echo 1 > /sys/devices/system/cpu/cpufreq/boost

Limite d'utilisation du CPU en %

# cat /sys/devices/system/cpu/intel_pstate/max_perf_pct 
100
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Exemble de “gorvernors” possible

  • performance
  • powersave
  • userspace
  • ondemand
  • conservative
cpufreq-set -r -u 2.24Ghz
#cpufreq-set --cpu 0 --governor conservative
cpufreq-set -r -g performance
 
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
echo "performance" |tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
 
#echo "3900000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
/etc/default/grub
CMDLINE_LINUX_DEFAULT="quiet splash intel_pstate=disable processor.ignore_ppc=1"
update-grub

Pour remplacer intel_pstate par acpi-cpufreq

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver

La liste des drivers ici :

ls -1 /lib/modules/`uname -r`/kernel/drivers/cpufreq/

BIOS frequency limitation

Source : https://wiki.archlinux.org/index.php/CPU_frequency_scaling

cat /sys/devices/system/cpu/cpu0/cpufreq/bios_limit

For trying this temporarily change the value in /sys/module/processor/parameters/ignore_ppc from 0 to 1.

echo 1 > /sys/module/processor/parameters/ignore_ppc

For setting it permanent refer to Kernel modules or just read on. Add processor.ignore_ppc=1 to your kernel boot line or create

/etc/modprobe.d/ignore_ppc.conf
# If the frequency of your machine gets wrongly limited by BIOS, this should help
options processor ignore_ppc=1

Avec cpulimit

sudo apt-get install cpulimit

http://www.linuxscrew.com/2012/07/03/limit-cpu-usage-of-linux-process/

Perf

perf

apt-get install linux-base linux-tools

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4b715d24f4f14731c7b553cbb8604fe865cb8d3c

Voir :

# Disable SMP
echo off > /sys/devices/system/cpu/smt/control
 
# Disable THP
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
 
# Disable turbo boost
echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo

commande perf

Nombre de core / CPU

/usr/bin/nproc (coreutils)

getconf _NPROCESSORS_ONLN

Notes

service cpufrequtils stop

echo “performance” > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

noatime

Swap config

Blacklist module

irqbalance

/proc/interrupts cat /proc/irq/3/smp_affinity

cpupower

Hotplug

http://www.linux-kvm.org/page/CPUHotPlug

  • switch to the monitor
  • type cpu_set <n+1> online
  • A new cpu should appear on /sys/devices/system/cpu
  • bring it online by writting 1 to the “online” file inside that directory on guest
  • Try adding as many cpus as possible, and make sure we at least do not crash.

Monitoring

Kernel

Autres

root# dmidecode|grep HTT
HTT (Hyper-Threading Technology)
HTT (Hyper-Threading Technology)

root# egrep 'siblings|cpu cores' /proc/cpuinfo | head -2
siblings : 2
cpu cores : 1

root# grep '^flags\b' /proc/cpuinfo | tail -1
flags : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx
fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni
pclmulqdq est ssse3 cx16 sse4_1 sse4_2 popcnt aes f16c rdrand hypervisor lahf_lm ida
arat epb pln pts dts fsgsbase erms

root# dmidecode |grep Count # tests that HTT is available *and* enabled
Core Count: 1
Thread Count: 2
Core Count: 1
Thread Count: 2

Source : https://www.oracle.com/docs/tech/ovm-performance.pdf

tech/gerer_le_cpu_sous_gnu_linux.1742825205.txt.gz · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki