1

UNIXBENCH我正在调查衡量进程创建速度的基准的spawn.c一部分中的严重性能损失:

https://code.google.com/p/byte-unixbench/source/browse/trunk/UnixBench/src/spawn.c

我不明白为什么在 centos 下运行时我的数字非常低(甚至进程停止或停止),然后如果我暂时启动到 debian,性能会成倍提高。

我最终追查到我正在预加载jemalloc3.6的事实,/etc/ld.so.preload这是一个替代的高性能内存分配器:

https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919

这种性能是否受到影响,因为每个生成的进程都在加载它自己的 jemalloc 副本?

有没有办法避免这种情况并且仍然有 jemalloc 自动加载?为什么不共享库?

4

1 回答 1

2

jemalloc 是否有任何其他依赖项(如 pthread)?如果是这样,额外的加载时间成本可能会增加,并且在 pthread 的情况下,它可能会导致一些在单线程应用程序中可能是无锁的函数实际获取锁,从而减慢它们的速度。在任何情况下,即使只是将一个额外的库映射到进程的地址空间并执行重定位也需要大量时间,所以如果程序定时是最小的(我不能从你的链接中确切地知道什么是定时的)然后执行时间可能由动态链接器所做的工作主导。

于 2014-05-03T03:00:08.013 回答