LINUX.ORG.RU

программное замедление процессора для программы


0

2

Есть задача на (Ubuntu 12.04.1 для ясности) Linux замедлить многоядерный процессор или ограничить процессорное время и возможные используемые ядра.

Надо отлаживать некоторые свои программы, в которых при некоторой нехватки производительности могут возникнуть ньюансы работы, которые хотелось бы протестировать.

Например, у меня 6-ти ядерный процессор, хотелось бы чтобы программа получала всего 2 ядра максимум (сколько бы потоков ни было) и каждое ядро работало лишь на 35% возможной скорости (получала максимум 35% процессорного времени от двух доступных ядер).

Какими средствами можно эмулировать подобное поведение? Не прибегая к виртуальным машинам (в VirtualBox такое есть). Надо именно чтобы работало на текущей системе для удобства отладки.

★★★★★

Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

у меня 6-ти ядерный процессор, хотелось бы чтобы программа получала всего 2 ядра максимум

taskset -c 4-5 $progname

Kuzz ★★★
()
Ответ на: комментарий от Kuzz

tazhate, taskset и cpulimit хорошо дружат? будет ли решена задача из сабжа этими двумя программами?

ЗЫ прошу обратить внимание на метанизацию анонимуса выше

I-Love-Microsoft ★★★★★
() автор топика
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

По теме уже написали, а вообще выделяйте в коде операции, которые от времени и частоты вызова не зависят и нюансы порядка их вызова / порядка обработки результатов / etc покрывайте тестами.

gv
()
Ответ на: комментарий от I-Love-Microsoft

taskset и cpulimit хорошо дружат?

Не знаю :( По идее - должна быть решена. А вапще твой вопрос гуглится очень легко.

И да, я бы для этого использовал виртуализацию, квм тот же самый или опенвз.

tazhate ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

ну... всё не так просто, там где возможно я и так придерживаюсь такого подхода

А в чем сложности? Если это конечно не GUI.

gv
()
Ответ на: комментарий от gv

ну не важно, сабж есть сабж - мне надо решение вопроса из сабжа, именно чтобы например два ядра и именно чтобы 35% от каждого ядра

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от mm3

ТС слаб по отладочной части, gdbserver ему недоступен.

anonymous
()
Ответ на: комментарий от mm3

Не прибегая к виртуальным машинам

попробую taskset + cpulimit, потом отпишусь чо как

I-Love-Microsoft ★★★★★
() автор топика

А у меня другая проблема - как разогнать программу,чтобы она под valgrind не тормозила! Походу это самое то,что тебе надо. Плюс можешь valgrind в конце много чего интересного раскажет.

AF ★★★
()
Ответ на: комментарий от I-Love-Microsoft

Тебе не угодишь. ВИжу еще два варианта:

1) Хардварный. Понизить частоту в биосе + отключить «лишние ядра»

2) Софтварный. Из процесса-монитора притормаживать исследуемый процес посылая сигналы SIGSTOP/SIGCONT. Ну или автоматически дергай gbb, чтобы тот программу пошагово трейсил.

AF ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.