Próbuję uruchomić kilka skryptów związanych z serwerem gier w Terminatorze. Jedynym problemem jest to, że kiedy to robię, Terminator wykrywa wszystkie moje rdzenie procesora i opóźnienia komputera. Czy jest jakiś sposób, aby go uruchomić, ale oszukać, że mam tylko 1 rdzeń procesora?
28
Odpowiedzi:
Nie chodzi o to,
terminator
że „rozkłada się” na cały procesor danego procesu. Sam Linux (jądro) robi to. Domyślnie zadanie (proces) jest zaplanowane do uruchomienia na wszystkich procesorach; jeśli używa wątków, może używać więcej niż jednego procesora na raz.Aby ograniczyć proces do określonego procesora, użyj polecenia
taskset
.To polecenie zmusza my_command do uruchamiania tylko na procesorach nr 1 lub 2.
Aby dowiedzieć się więcej, wpisz
man taskset
lub wyszukaj „powinowactwo procesora do systemu Linux” (pierwsze kliknięcie tutaj ).źródło
kernel.sched_autogroup_enabled = 0
, aby/etc/sysctl.conf
zrobić to praca. Jednak zauważyłem również, że 13.10 często panika jądra podczas rozruchu, jeśli autogrupa jest wyłączona.Chociaż inna odpowiedź dała już dosłowną odpowiedź, zbadałbym możliwość, że nie zrobiono tego we właściwy sposób. Zamiast tego powinieneś uruchomić skrypt, którego nie chcesz spowalniać komputera (np. Nieinteraktywne skrypty) za pomocą
nice
polecenia.Aby to zrobić, po prostu przedrostek polecenia, które chcesz uruchomić, na przykład:
nice command_to_run
Spowoduje to, że program zostanie pozbawiony priorytetów poniżej innych zadań i nie spowolni twojego komputera. Często używam tej techniki podczas długiej kompilacji, która w innym przypadku spowolniłaby mój komputer do przeszukiwania, ma to tę zaletę, że pozwala programowi używać wszystkich rdzeni, gdy komputer nie jest zajęty, ale szybko przestanie go używać, gdy uruchomisz coś jeszcze.źródło
taskset nice open terminator
aby użyć obu. Będzie to jednak przesada, ponieważ będziesz używać dwóch różnych programów, aby osiągnąć efekt zmniejszenia zużycia zasobów przez program.