Linux — ограничение потоков на процесс

Я написал программу на C ++, которая выполняет сравнительный анализ нескольких алгоритмов. Некоторые из этих алгоритмов используют другие библиотеки для своих расчетов. Эти внешние библиотеки (которые я не контролирую) используют многопоточность, что затрудняет получение правильного теста (некоторые алгоритмы однопоточные, некоторые многопоточные).

Поэтому при проведении бенчмаркинга я хочу ограничить количество потоков до 1. В любом случае я могу запустить программу в Linux и сказать ей использовать максимум 1 поток вместо значения по умолчанию во внешних библиотеках (что равно количество ядер)?

2

Решение

Я не уверен, что возможно то, что вы спрашиваете с точки зрения ОС [что может делать ОС? вернуть ошибку при запросе следующего потока?].

Я бы поискал в документации по библиотекам, они, вероятно, предоставят значения конфигурации для количества потоков, которые они используют.

альтернативно, ты можешь сделать сродство процессора с использованием команда taskset

Это не совсем то, что вы просили, но это гарантирует, что ваша программа будет работать на данном процессоре (или наборе процессоров). Таким образом, независимо от количества порождаемых потоков, программа будет использовать в любое время максимум один процессор (или количество указанных процессоров), поэтому эффективный параллелизм будет контролироваться.


В качестве альтернативы x2 Инициируется комментарием @goocreations … Один из способов заставить программы поверить в то, что они имеют различное количество доступных процессоров, — запустить их на виртуальной машине (например, VirtualBox)

2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector