首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Valgrind是否/可以使用多个处理器?

Valgrind是否/可以使用多个处理器?
EN

Stack Overflow用户
提问于 2011-03-24 02:39:27
回答 2查看 5.1K关注 0票数 11

有没有办法让valgrind使用多处理器?

我正在使用valgrind的callgrind进行一些瓶颈分析,并注意到我的应用程序与在valgrind/callgrind之外运行时的资源使用行为有很大的不同。

当在valgrind外运行时,它会占用最多的几个处理器,但在valgrind内运行时只使用一个。这让我担心我的瓶颈会在不同的地方,从而使我的分析无效。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-24 03:17:59

根据Valgrind文档,它们不支持多处理器:

关于线程化程序,主要要指出的是,您的程序将使用本机线程库,但是

会序列化执行,因此一次只有一个(内核)线程在运行。这种方法避免了实现真正的多线程版本的Valgrind的可怕的实现问题,但它确实意味着线程应用程序只在一个CPU上运行,即使您有多处理器或多核计算机。

Valgrind本身并不调度线程。它只使用简单的锁定方案来确保一次只有一个线程运行。实际的线程调度仍然在操作系统内核的控制之下。然而,这确实意味着,当您的程序在Valgrind上运行时,它将看到与正常运行时截然不同的调度。这既是因为Valgrind正在序列化线程,也是因为代码的运行速度比正常情况下慢得多。

如果您有某种并发、关键竞争、锁定或类似的bug,这种调度上的差异可能会导致您的程序表现不同。在这种情况下,您可以考虑使用工具Helgrind和/或DRD来跟踪它们。

票数 17
EN

Stack Overflow用户

发布于 2015-11-06 15:40:56

看一下:

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

他们补充说:

代码语言:javascript
复制
--fair-sched option

这可能会有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5410001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档