Может ли Valgrind использовать несколько процессоров? - PullRequest
9 голосов
/ 23 марта 2011

Есть ли способ заставить valgrind использовать несколько процессоров?

Я выполняю некоторое узкое профилирование с помощью callgrind от valgrind и заметил, что поведение моего приложения в приложении существенно отличается от того, которое выполняется вне valgrind / callgrind.

При запуске вне valgrind он использует несколько процессоров, но для запуска внутри valgrind используется только один. Это заставляет меня беспокоиться о том, что мои горлышки бутылок будут в разных местах, и, таким образом, лишает законной силы мое профилирование.

Ответы [ 2 ]

16 голосов
/ 23 марта 2011

Согласно документам Valgrind, они не поддерживают несколько процессоров:

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

Valgrind не планируетсами темы.Это просто гарантирует, что одновременно работает только один поток, используя простую схему блокировки.Фактическое планирование потоков остается под контролем ядра ОС.Тем не менее, это означает, что ваша программа при запуске в Valgrind будет иметь совсем другое расписание, чем при нормальной работе.Это связано как с тем, что Valgrind сериализует потоки, так и с тем, что код выполняется намного медленнее, чем обычно.

Это различие в расписании может привести к тому, что ваша программа будет вести себя по-разному, если у вас есть какая-то параллельная, критическая гонка,блокировка или аналогичные ошибки.В этом случае вы можете рассмотреть возможность использования инструментов Helgrind и / или DRD для их отслеживания.

1 голос
/ 06 ноября 2015

Взгляните на:

http://valgrind.org/docs/manual/manual-core.html#manual-core.pthreads_perf_sched

Они добавили:

--fair-sched option

Это может помочь.

...