Jak wyłączyć rdzenie CPU w Linuksie (Jak ograniczyć zużycie energii przez procesor)

| F.A.Q.Wsparcie

Jak wyłączyć rdzenie CPU w Linuksie (Jak ograniczyć zużycie energii przez procesor)

Wyłączanie rdzeni CPU może być korzystne, jeśli chcemy zoptymalizować zużycie energii lub rozwiązywać problemy z wydajnością. Na szczęście Linux oferuje metody zarządzania rdzeniami procesora, co pozwala na efektywne kontrolowanie zasobów. Aby wyłączyć rdzenie CPU w Linuksie, możesz skorzystać z kilku metod. W zależności od tego, czy chcesz to zrobić tymczasowo (do następnego restartu) czy na stałe, możesz wybrać odpowiednią metodę.

Jak wyłączyć rdzenie CPU w Linuksie (jak ograniczyć zużycie energii przez procesor?)

Tymczasowe wyłączenie rdzeni CPU

Zanim wyłączymy rdzenie CPU, powinniśmy najpierw sprawdzić, które rdzenie są dostępne. Możesz sprawdzić dostępne rdzenie w systemie przy pomocy ls /sys/devices/system/cpu/

$ ls /sys/devices/system/cpu/
cpu0  cpu10  cpu12  cpu14  cpu2  cpu4  cpu6  cpu8 
cpu1  cpu11  cpu13  cpu15  cpu3  cpu5  cpu7  cpu9 ...

Zobaczysz listę takich jak cpu0, cpu1, itd. - każdy z nich odpowiada jednemu rdzeniowi procesora.

lub używając polecenie lscpu:

$ lscpu
Architecture:            x86_64
 CPU op-mode(s):        32-bit, 64-bit
 Address sizes:         39 bits physical, 48 bits virtual
 Byte Order:            Little Endian
CPU(s):                  16
 On-line CPU(s) list:   0,13-15
 Off-line CPU(s) list:  1-12

Tymczasowe wyłączenie rdzeni CPU

Użycie narzędzia echo z /sys/devices/system/cpu:

Możesz tymczasowo wyłączyć rdzeń CPU, ustawiając jego status na "offline". Przykład dla wyłączenia rdzenia CPU1:

echo "0" > /sys/devices/system/cpu/cpu1/online

Aby ponownie włączyć rdzeń, ustaw jego status na "online":

echo "1" > /sys/devices/system/cpu/cpu1/online

Alternatywnie, możemy przejść przez zakres rdzeni CPU za pomocą pętli:

for x in /sys/devices/system/cpu/cpu[1-2]*/online; do
  echo 0 > "$x"
done

Powyższy skrypt wyłączy rdzenie cpu1 i cpu2

Stałe wyłączenie rdzeni CPU

Dodanie opcji do GRUB-a:

Możesz zmodyfikować ustawienia bootloadera GRUB, aby wyłączyć rdzenie przy każdym starcie systemu. Aby to zrobić:

Edytuj plik konfiguracyjny GRUB, zazwyczaj znajduje się on w /etc/default/grub:

sudo nano /etc/default/grub

Znajdź linię zaczynającą się od GRUB_CMDLINE_LINUX_DEFAULT i dodaj opcję maxcpus=N, gdzie N to liczba rdzeni, które mają być aktywne (np. maxcpus=2, aby używać tylko dwóch rdzeni):

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash maxcpus=2"

Zapisz plik i zaktualizuj konfigurację GRUB:

sudo update-grub

Zrestartuj system, aby zastosować zmiany.

Uwaga:

Wyłączanie rdzeni CPU może prowadzić do spadku wydajności systemu. Stosuj te metody ostrożnie, szczególnie na systemach produkcyjnych

Powiązane strony:

  1. Jak zmienić wydajność procesora na Linuksie? (Scaling Governor)(Tunning)
  2. Jak zainstalować Javę na Linuksie by móc korzystać z IPMI KVM Supermicro? Jak otworzyć launch.jnlp? Jak otworzyć jviewer.jnlp? (IPMI Troubleshooting)
  3. Wymazywanie danych z dysku (dd, hdparm, shred) - Jak usunąć dane z dysku?
  4. Usuwanie bad sektorów (hdparm) - Jak usunąć bad sektory?
  5. Automatyczne włączenie serwera po zaniku prądu na przykładzie Supermicro X13SCH-LN4F