Как тестировать многопоточные программы Linux?

Пытаюсь сравнить производительность многопоточных программ (в Linux). Поскольку в программах используются разные методы синхронизации потоков и разная степень детализации блокировок, запуск программ на общем сервере или рабочем столе нецелесообразен, поскольку другие задачи могут мешать планированию моих программ. У меня нет выделенных хостов, поэтому я подумал, что использование qemu будет хорошим вариантом.

Я хочу знать следующее:

  • Есть ли альтернативы этой задаче?
  • Я полагаю, что нет возможности воспроизвести планирование, выполняемое гостевой системой Linux на qemu, если мне - нужно? (Предположим, моя программа работает необычно быстро или быстро - я хотел бы знать, смогу ли я запустить ее снова, но сохраняя точно такое же расписание для ее потоков). Или есть способ?

person Jay    schedule 14.06.2012    source источник
comment
Я думаю, что ответ здесь - проводить тесты производительности в течение длительного периода времени, чтобы другие задачи были фоновым шумом. Или, если вы сравниваете несколько потоковых программ, запустите их все с одинаковыми фоновыми задачами.   -  person Gray    schedule 14.06.2012
comment
Вы знакомы с набором инструментов valgrind? Он предлагает callgrind для профилирования и helgrind для отладки потоков. Сам еще не пробовал, поэтому просто комментарий к ответу.   -  person Jonas Schäfer    schedule 14.06.2012