niekoniecznie wyłączasz lub dezaktywujesz rdzenie.
należałoby użyć CPUSET i taskset
http://man7.org/linux/man-pages/man7/cpuset.7.html
Zestaw definiuje listę procesorów i węzłów pamięci ...
System plików cpuset to pseudo-systemowy interfejs mechanizmu cpuset jądra, który służy do kontrolowania położenia procesora i pamięci procesów. Jest zwykle montowany w / dev / cpuset.
W systemach z jądrem skompilowanymi z wbudowaną obsługą cpusets, wszystkie procesy są dołączone do cpuset, a cpusets są zawsze obecne. Jeśli system obsługuje cpusets, to będzie miał wpis nodev cpuset w pliku / proc / filesystems. Instalując system plików cpuset (patrz sekcja PRZYKŁAD poniżej), administrator może skonfigurować cpusets w systemie, aby kontrolować procesor i rozmieszczenie pamięci w procesach w tym systemie. Domyślnie, jeśli konfiguracja zestawu procesorów w systemie nie jest zmodyfikowana lub system plików procesora nie jest nawet zamontowany, to mechanizm procesora, chociaż jest obecny, nie ma wpływu na zachowanie systemu.
Procesory systemu obejmują wszystkie logiczne jednostki przetwarzania, na których proces może być wykonywany, w tym, jeśli są obecne, wiele rdzeni procesora w pakiecie i Hyper-Threads w rdzeniu procesora. Węzły pamięci obejmują wszystkie odrębne banki pamięci głównej; małe i SMP zazwyczaj mają tylko jeden węzeł pamięci, który zawiera całą pamięć główną systemu, podczas gdy systemy NUMA (nierównomierny dostęp do pamięci) mają wiele węzłów pamięci.
Krótko mówiąc, jeśli masz 1 procesor posiadający 6 rdzeni, skonfiguruj cpusety i uruchom proces w procesorze skonfigurowanym tylko na jednym rdzeniu, na przykład na rdzeniu nr 3. Gdyby to był proces równoległy, wszystko byłoby ograniczone do tego jednego rdzenia, tak że jeśli uruchomisz 4 procesy w danym procesorze, mając zdefiniowany tylko jeden rdzeń, to każdy z 4 procesów uzyska 25% wykorzystania procesora na rdzeniu # 3.
Opierając się na tym, zwykle dzieje się tak, że procesor jest tak skonfigurowany, że
- na przykład w ponad 200 systemach rdzenia cpusetA to rdzenie 0..60, gdziekolwiek mogą się one znajdować, cpusetB to rdzenie 61..70; cpusetC to rdzenie 71..80; i tak dalej, jednak administrator / architekt decyduje się skonfigurować.
- cpusetA jest przypisany do niektórych użytkowników i / lub określonych programów; cpusetB jest przydzielany różnym użytkownikom / programom; i tak dalej.
- użytkownik uruchamia zadanie (proces), które zażąda N rdzeni ... w ramach danego zestawu procesorów, a teraz te liczne (równoległe) procesy są ograniczone do danego zestawu procesorów. A dla tych N równoległych ograniczonych do danego procesora, każdy z tych procesów powinien / powinien wykorzystywać powinowactwo procesora lub powinowactwo procesora, aby te równoległe procesy nie rzucały się wokół różnych rdzeni w procesorze.
także: https://linux.die.net/man/1/taskset
maxcpus=1
polecenie ? Czy umieściłeś ten ciąggrub.cfg
jako opcję rozruchu? (Zaktualizuj swoje pytanie zamiast odpowiadać w komentarzach).