Na początku pytanie wydaje się trochę głupie / mylące, ponieważ system operacyjny wykonuje zadanie zarządzania procesem.
Chcę jednak zmierzyć, jak bardzo niektóre procesy są związane z procesorem / IO i mam wrażenie, że mój system operacyjny zakłóca moje eksperymenty, na przykład z zaplanowanymi procesami systemu operacyjnego.
Weźmy jako przykład następującą sytuację: Uruchomiłem proces A dwa razy i otrzymałem następujące dane wyjściowe z narzędzia „czas” (kolumny czasu w sekundach):
+---+-------+---------+-----------+---------+
|Run|Process|User Time|System Time|Wall time|
+---+-------+---------+-----------+---------+
|1 |A |196.3 |5.12 |148.86 |
|2 |A |190.79 |4.93 |475.46 |
+---+-------+---------+-----------+---------+
Jak widzimy, chociaż czas użytkownika i sys są podobne, upływ czasu obu drastycznie się zmienia (różnica ~ 5 min). Czuję, że coś w moim środowisku wywołało jakąś sprzeczkę.
Chcę zatrzymać każdy możliwy proces / usługi w tle, aby uniknąć jakiegokolwiek szumu podczas moich eksperymentów, ale uważam się za początkującego / pośredniego użytkownika unixa i nie wiem, jak to zagwarantować.
Używam Linux 4.4.0-45-generic z 64-bitowym Ubuntu 14.04 LTS.
Naprawdę doceniam pomoc. Jeśli będziecie potrzebować brakujących informacji, niezwłocznie zmienię mój wpis.
Informacje o procesorze
$ grep proc /proc/cpuinfo | wc -l
8
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Stepping: 3
CPU MHz: 4002.609
BogoMIPS: 7183.60
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
źródło
nice -19 process
Odpowiedzi:
Masz konfigurację opcji jądra, w której procesor nie będzie używany przez system operacyjny, nazywa się to
isolcpus
.Ta konfiguracja, którą zamierzam opisać, jak skonfigurować, może mieć znacznie więcej zastosowań niż do testowania.
Meru na przykład wykorzystuje tę technologię w swoich kontrolerach AP opartych na systemie Linux, aby uniemożliwić ruch sieciowy zakłócaniu wewnętrznego działania systemu operacyjnego, a mianowicie operacji we / wy.
Używam go również w bardzo zatłoczonym interfejsie internetowym, z tych samych powodów: z doświadczenia życiowego dowiedziałem się, że zbyt często traciłem kontrolę nad moim serwerem; musiałem ponownie uruchomić go mocno, dopóki nie oddzieliłem demona frontonu na jego dedykowanych procesorach.
Ponieważ masz 8 procesorów, które możesz sprawdzić za pomocą polecenia:
lub
Dodaj Debian / Ubuntu w pliku
/etc/default/grub
do opcjiGRUB_CMDLINE_LINUX
:(jest to 7, ponieważ zaczyna się od 0, a masz 8 rdzeni)
Następnie uruchomić,
Oznacza to, że jądro nie powinno używać jednego z rdzeni.
Uruchom ponownie system.
Następnie rozpocznij proces.
Natychmiast po uruchomieniu możesz zmienić na 8. procesor (7, ponieważ 0 to 1.) i być pewnym, że tylko ty używasz tego procesora.
W tym celu użyj polecenia:
Aby przeczytać więcej na ten temat, zobacz: isolcpus, numactl i zestaw zadań
Używając również
ps -eF
powinieneś zobaczyć w kolumnie PSR używany procesor.Mam serwer z izolowanym procesorem CPU 2 i 3, i rzeczywiście można go zobaczyć z
ps -e
jedynym procesem w obszarze użytkownika zgodnie z przeznaczeniempound
.Jeśli porównasz to z nieizolowanymi procesorami, uruchomią one o wiele więcej rzeczy (okno poniżej slajdów ):
źródło
isolcpus