Linux: запуск программы на одном процессоре

В многопроцессорных системах иногда полезно в целях отладки (или, например, измерения производительности) запускать программу только на одном процессоре. Это можно сделать в Linux с помощью команды:
taskset -c 0 ./program_name
Это команда запускает процесс с заданным свойством CPU affinity; оно, в свою очередь, определяет список процессоров, на которых планировщик может запускать данный процесс. В данном примере оно позволяет планировщику запускать заданный процесс только на ядре номер 0. Можно также указать несколько номеров через запятую.

2 комментария :

  1. а что ты так отлаживаешь? и как это поможет производительность измерить? для отладки лучше пользоваться threadsanitizer если конечно он поддерживается на железяке.

    ОтветитьУдалить
    Ответы
    1. Я отлаживаю и запускаю тесты на производительность на своем восьмиядерном лаптопе, когда целевая платформа, предположим, одно ядро имеет. И в какой-то момент per process clocks вырастают в два раза, а wall clocks снижаются немного, из чего я делаю вывод, что подключается второе ядро (хотя делает оно, похоже, то же самое, что и первое делало). Вот чтобы этого избежать, я одним ядром ограничиваюсь, когда не на целевой платформе работаю. А предпочитаю я все-таки локально все делать по мере возможности и не дергать железяку лишний раз.

      Удалить