Jak ograniczyć użycie procesora procesu w Linux

Jak ograniczyć użycie procesora procesu w Linux
W życiu Linux musiałeś zobaczyć, jak niektóre procesy przyjmują wszystkie cykle procesora (90-99% zużycie procesora), dzięki czemu komputer jest prawie nie reagujący, aż się skończy. To może być w porządku, jeśli proces zajmuje kilka sekund. Ale co, jeśli zajmuje to dużo czasu? To nie jest miło usiąść i patrzeć na komputer nie reagujący przez kilka minut i godzin, prawda? Cóż, Linux ma wiele niesamowitych narzędzi, aby je uczynić niezbyt miłe procesy Do Ładny procesy.

Możesz ustawić, ile procesora może mieć jeden proces. Jeśli proces naprawdę potrzebuje dużej mocy procesora, możesz uruchomić kilka poleceń, aby podać wszystkie bezczynne cykle procesora (cykle procesora, których nie potrzebujesz). W ten sposób nigdy nie będziesz musiał długo siedzieć i gapić się na komputer nie reagujący.

W tym artykule pokażę, jak ograniczyć użycie procesora procesu w Linux. W tym artykule użyję Centos 7. Ale każda nowoczesna dystrybucja Linuksa powinna działać. Więc zacznijmy.

Ograniczanie użycia procesora za pomocą Nicea i Renice:

W Linux można zmienić priorytety każdego uruchomionego procesu. Możesz ustalić wyższe priorytety na proces, który jest dla Ciebie ważniejszy niż proces, który nie ma procesora bez uzasadnionego powodu.

Każdy proces w Linux ma ładną wartość. Wartość NICE określa, który proces ma wyższe priorytety, a który ma niższe. Ładna wartość może wynosić od -20 do 19. Proces o ładnej wartości -20 będzie miał najwyższy priorytet i będzie wykorzystywać najwięcej cykli procesora. Proces z wartością Nicea 19 będzie miał najniższy priorytet i będzie wykorzystywać procesor, gdy żadne inne procesy nie używają go tylko.

Istnieją dwa sposoby ustawienia ładnej wartości procesu. Możesz albo rozpocząć proces z Ładny polecenie, aby ustawić ładną wartość podczas uruchamiania procesu. Lub możesz użyć Renice polecenie, aby ustawić ładną wartość po rozpoczęciu procesu.

Aby ustawić ładną wartość po uruchomieniu procesu, uruchom proces w następujący sposób:

$ fajne -n ​​fajne_value command_to_run

NOTATKA: Tutaj Nice_value może być wszystko z -20–19 I Command_to_run to każde polecenie, które chcesz uruchomić z miłą wartością Nice_value.

Powiedzmy na przykład, chcesz uruchomić spać polecenie z ładną wartością 14. Uruchom polecenie w następujący sposób:

$ Nice -n 14 sen 40000 &

Teraz możesz sprawdzić, czy ładna wartość jest ustawiona poprawnie za pomocą polecenia górnego. Możesz wymienić wszystkie uruchomione procesy (jako użytkownik logowania) za pomocą następującego polecenia:

$ ps -fl

Jak widać, ładna wartość procesu jest ustawiona na 14.

Teraz, jeśli chcesz zmienić ładną wartość swoich istniejących procesów, wszystko, czego potrzebujesz, to identyfikator procesu (PID) procesu, którego chcesz zmienić ładną wartość. Możesz użyć PS Aux polecenie lub szczyt polecenie, aby znaleźć identyfikator procesu lub PID.

Wtedy możesz uruchomić Renice polecenie następujące, aby zmienić ładną wartość istniejącego procesu:

$ sudo renice -n new_nice_value -p proces_pid

Jak widać, niezła wartość procesu z PID 6422 jest zmieniana.

Ograniczanie użycia procesora za pomocą CGroups:

Pełna forma Cgroups Jest COntrol GROUPS. Jest to funkcje jądra Linux używane do ograniczenia zasobów do grup procesowych, takich jak (procesor, pamięć, uprawnienia i wiele innych) w Linux.

Wszystko, co musisz zrobić, to utwórz nową grupę procesów i dodać swoje procesy, do których chcesz ograniczyć zasoby, do tej grupy. Prosty!

Narzędzia do zarządzania cgroups nie są domyślnie instalowane w CentOS 7. Ale jest dostępny w oficjalnym repozytorium pakietów w Centos 7.

Najpierw zaktualizuj pamięć podręczną repozytorium pakietów Yum za pomocą następującego polecenia:

$ sudo yum makecache

Teraz zainstaluj narzędzia do zarządzania CGroups z następującym poleceniem:

$ sudo yum instaluj libcgroup-tools

Teraz naciśnij y a następnie naciśnij .

Należy go zainstalować.

Możesz ograniczyć użycie procesora pojedynczej grupy. Na przykład możesz użyć cgroups, aby poinformować o procesie w grupie CGRUP, aby użyćmy 100 ms na każde 1000 ms (lub .1s na co 1s) czasu procesora.

Najpierw utwórz cgroup z następującym poleceniem:

$ sudo cgcreate -g cpu:/cpulimit

NOTATKA: Tutaj, cpulimit to nazwa grupy, która kontroluje procesor stosowanie.

Teraz musisz ustawić procesor.CFS_PERIOD_US I procesor.cfs_quota_us właściwość na cpulimit Grupa.

W tym przykładzie należy ustawić 1000 ms (milisekund) lub 1000000us (mikrosekund) procesor.CFS_PERIOD_US właściwość i 100 ms lub 100000us powinny być ustawione na procesor.cfs_quota_us nieruchomość.

Uruchom następujące polecenia, aby ustawić te właściwości na cpulimit Grupa:

$ sudo cgset -r procesor.cfs_period_us = 1000000 cpulimit
$ sudo cgset -r procesor.cfs_quota_us = 100000 cpulimit

Teraz możesz uruchomić następujące polecenie, aby sprawdzić, czy wszystkie właściwości są poprawnie ustawione:

$ sudo cgget -g procesor: cpulimit

NOTATKA: Tutaj, cpulimit to nazwa cgroup i procesor to zasób, który ograniczam.

Jak widzisz, procesor.CFS_PERIOD_US I procesor.cfs_quota_us są poprawnie ustawione.

Teraz jakikolwiek proces, do którego dodasz cpulimit CGroup użyje 1/10th (100000/1000000 = 1/10 = 0.1 = 10%) całkowitych cykli procesora.

Teraz, aby ograniczyć procesor procesu, uruchom program lub polecenie CGEXEC następująco:

$ sudo cGexec -g CPU: cpulimit your_command

NOTATKA: Tutaj, Twój_command może być dowolne prawidłowe polecenia Linux.

Aby udowodnić, że tak naprawdę działa, najpierw uruchomię następujące polecenie bez cgroups, a następnie z cgroups i pokaż wyniki.

$ dd if =/dev/zero = out bs = 1m

Jak widać, bez cgroup, polecenie używa 90% całkowitego procesora.

Następnie uruchomiłem to samo polecenie z cgroups w następujący sposób:

$ sudo cGexec -g CPU: cpulimit dd if =/dev/zero = out bs = 1M

Jak widać, użycie procesora wynosi maksymalnie 10%. Proces nie wykorzystuje więcej niż to.

W ten sposób używasz cgroups, aby ograniczyć użycie procesora procesu w Linux. Dziękujemy za przeczytanie tego artykułu.

Bibliografia:

[1] https: // dostęp.czerwony kapelusz.com/Documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/sec-cpu

[2] https: // Linux.umierać.Net/Man/1/Nice

[3] https: // Linux.umierać.Net/Man/8/Renice