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

发布于 2024-10-25 18:06:15 字数 226 浏览 5 评论 0原文

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

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

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

Is there a way to get valgrind to use multiple processors?

I'm doing some bottleneck profiling with valgrind's callgrind and noticed significantly different resource usage behavior in my application vs when run outside of valgrind/callgrind.

When run outside valgrind, it maxes out several processors, but run inside valgrind only uses one. This makes me worry that my bottle necks will be in different places, and thus invalidate my profiling.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归途 2024-11-01 18:06:15

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

主要需要指出的是
对于线程程序的尊重是
你的程序将使用本机
线程库,但是 Valgrind
串行执行,以便只有一个
(内核)线程一次运行。
这种方法避免了可怕的
的实施问题
实现真正的多线程
Valgrind 的版本,但这确实意味着
线程应用程序仅在一个上运行
CPU,即使您有多处理器
或多核机器。

Valgrind 不调度线程
本身。它仅仅确保只有
一个线程同时运行,使用
简单的锁定方案。实际的
线程调度仍处于
操作系统内核的控制。这什么
不过,这确实意味着你的
程序会看到很大的不同
在 Valgrind 上运行时的调度比
正常运行时是这样。这是
两者都是因为 Valgrind 正在连载
线程,并且因为代码运行
比平常慢得多。

这种安排上的差异可能会
使你的程序正常运行
不同的是,如果你有某种
并发、关键竞争、锁定、
或类似的错误。在那种情况下你
可能会考虑使用这些工具
Helgrind 和/或 DRD 来跟踪它们
下来。

According to the Valgrind Docs, they do not support multiple processors:

The main thing to point out with
respect to threaded programs is that
your program will use the native
threading library, but Valgrind
serialises execution so that only one
(kernel) thread is running at a time.
This approach avoids the horrible
implementation problems of
implementing a truly multithreaded
version of Valgrind, but it does mean
that threaded apps run only on one
CPU, even if you have a multiprocessor
or multicore machine.

Valgrind doesn't schedule the threads
itself. It merely ensures that only
one thread runs at once, using a
simple locking scheme. The actual
thread scheduling remains under
control of the OS kernel. What this
does mean, though, is that your
program will see very different
scheduling when run on Valgrind than
it does when running normally. This is
both because Valgrind is serialising
the threads, and because the code runs
so much slower than normal.

This difference in scheduling may
cause your program to behave
differently, if you have some kind of
concurrency, critical race, locking,
or similar, bugs. In that case you
might consider using the tools
Helgrind and/or DRD to track them
down.

∞梦里开花 2024-11-01 18:06:15

看一下:

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

他们补充道:

--fair-sched option

这可能会有所帮助。

Take a look at:

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

They added:

--fair-sched option

It may help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文