gpt4 book ai didi

c - LD_PRELOAD 从根本上降低了 linux 下 C 的进程创建性能?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:17 26 4
gpt4 key购买 nike

我正在调查 UNIXBENCHspawn.c 衡量进程创建速度的基准测试部分中的严重性能问题:

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

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

我最终追踪到我正在通过 /etc/ld.so.preload 预加载 jemalloc 3.6,这是一个替代的高性能内存分配器:

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

性能下降是因为每个生成的进程都在加载它自己的 jemalloc 副本吗?

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

最佳答案

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

关于c - LD_PRELOAD 从根本上降低了 linux 下 C 的进程创建性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23437550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com