Как ограничить загрузку процессора в Ubuntu Linux
Правила форума
Запрещается помещать сообщения, не имеющие отношения к обсуждаемой статье. Все такие сообщения будут удаляться непосредствено после обнаружения.
Запрещается помещать сообщения, не имеющие отношения к обсуждаемой статье. Все такие сообщения будут удаляться непосредствено после обнаружения.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Как ограничить загрузку процессора в Ubuntu Linux
Вчера:
Как ограничить загрузку процессора в Ubuntu Linux с помощью CPULimit.
Очень нужная публикация.
Как ограничить загрузку процессора в Ubuntu Linux с помощью CPULimit.
Очень нужная публикация.
Re: Как ограничить загрузку процессора в Ubuntu Linux
Пишут:
Действует только на тот процесс(поток ?) PID которого указан опцией p
похоже это не так, к сожалению.Все дочерние процессы и потоки указанного процесса будут использовать один и тот же процент загрузки ЦП
Действует только на тот процесс(поток ?) PID которого указан опцией p
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Как ограничить загрузку процессора в Ubuntu Linux
Давайте разбираться...roms писал(а):Пишут:похоже это не так, к сожалению.Все дочерние процессы и потоки указанного процесса будут использовать один и тот же процент загрузки ЦП
Действует только на тот процесс(поток ?) PID которого указан опцией p
По моему, так именно и должно быть:
- большинство приложений/процессов Linux на сегодня используют только 1 процессор, и не умеют использовать больше 1-го...
- я вот здесь проверял работу cpulimit в условиях, несколько отличающихся от описанного в статье: редкие полезные команды
- по идее, именно то, что хотелось бы: загрузка используемого задачей процессора ограничивалась на уровне 20%
Re: Как ограничить загрузку процессора в Ubuntu Linux
Как раз с этих Ваших заметок я начал знакомство с этой утилиткой(cpulimit).Olej писал(а): - я вот здесь проверял работу cpulimit в условиях, несколько отличающихся от описанного в статье: редкие полезные команды
- по идее, именно то, что хотелось бы: загрузка используемого задачей процессора ограничивалась на уровне 20%
Повторил, результаты те же что и у Вас ( естественно )
Скомпилил для теста:
(взято из примера работы fork(), printf'ы оттуда :-) )
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char **argv)
{
pid_t pid;
char *host = "main";
char *forkhost = "fork";
printf("print from %s\n", host);//(1)
if((pid = fork()) == 0) { // потомок
printf("print from %s , pid = %i\n", forkhost, pid);
printf("print from %s , host = %s\n", forkhost, host);
while(1){ }; // загрузим проц
exit (555);
} else { // родитель:
printf("print from %s , pid = %i\n ", host, pid);
while(1){};
}
return 0;
}
Тест под виртуалбоксом на Ubuntu16.04(и хост и гостевая)
Либо мой тест не корректен, либо ..
Re: Как ограничить загрузку процессора в Ubuntu Linux
скрин приложу
странно, в этот раз видно что и у потомка процент загрузки снижается немного
странно, в этот раз видно что и у потомка процент загрузки снижается немного
Re: Как ограничить загрузку процессора в Ubuntu Linux
проделываю то же на хосте, ограничиваю родительский процесс виртуалбокса, внутри которого работает предыдущий примерчик
cpulimit -l 50 -p 5457 &
тут нормально!
и у родителя и у потомока процент загрузки снижается практически до заявленных ( -l 50 )
cpulimit -l 50 -p 5457 &
тут нормально!
и у родителя и у потомока процент загрузки снижается практически до заявленных ( -l 50 )
Последний раз редактировалось roms 18 мар 2019, 00:12, всего редактировалось 1 раз.
Re: Как ограничить загрузку процессора в Ubuntu Linux
В первом случае( тестовый примерчик на гостевой машине) видно что родитель сигнал SIGSTOP получает, потомок нет(?).
Во втором случае SIGSTOP'ы видны как у родительского, так и у всех дочерних
Во втором случае SIGSTOP'ы видны как у родительского, так и у всех дочерних
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Как ограничить загрузку процессора в Ubuntu Linux
Уточнение 1-е: fork() создаёт вам не поток, а совершенно автономный дочерний процесс в системе.roms писал(а): Скомпилил для теста:
(взято из примера работы fork(), printf'ы оттуда )
...
Два потока всего, "натравливаю" cpulimit на родительский, он его и ограничивает, дочерний как был 100% загрузка, так и остается.
А 2-е ... соображение: независимый процесс может распределяться и выполняться, вообще то говоря, на любом процессоре, в том числе и на том, где выполняется родитель - тут всё зависит от распределения загрузки процессоров... Но с большой вероятностью в системе ничем не загруженной (а при тестировании это зачастую так) новый процесс распределиться на свободный процессор, не тот на котором выполняется родитель, и этот новый процессор не находится под контролем cpulimit.
Re: Как ограничить загрузку процессора в Ubuntu Linux
ясно, благодарю за замечаниеOlej писал(а): Уточнение 1-е: fork() создаёт вам не поток, а совершенно автономный дочерний процесс в системе.
но
в гостевой системе у меня 1 процессор (виртуальный)Olej писал(а): ... с большой вероятностью в системе ничем не загруженной (а при тестировании это зачастую так) новый процесс распределиться на свободный процессор, не тот на котором выполняется родитель, и этот новый процессор не находится под контролем cpulimit.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Как ограничить загрузку процессора в Ubuntu Linux
В виртуальной машине могут быть побочные эффекты, временами весьма странные...roms писал(а):в гостевой системе у меня 1 процессор (виртуальный)
Покажите вывод там:
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/cloud/HISTORY$ nproc
2
Код: Выделить всё
while(1){};
Посмотрите вот это: Параллелизм, конкурентность, многопроцессорность в Linux
И ещё вот это: параллельность + синхронизации (примеры) - там есть совершенно удивительные примеры.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость