gpt4 book ai didi

memory-management - 自旋锁是内存分配器的好选择吗?

转载 作者:行者123 更新时间:2023-12-04 07:30:04 26 4
gpt4 key购买 nike

我已经多次向 D 编程语言运行时的维护者建议内存分配器/垃圾收集器应该使用自旋锁而不是常规的操作系统临界区。这还没有真正流行起来。以下是我认为自旋锁会更好的原因:

  • 至少在我所做的综合基准测试中,当内存分配器/GC 锁存在争用时,它比操作系统关键部分快几倍。编辑:根据经验,在单核环境中使用自旋锁甚至没有可测量的开销,可能是因为锁需要在内存分配器中保持这么短的时间。
  • 内存分配和类似操作通常只占用时间片的一小部分,甚至只占用上下文切换时间的一小部分,这使得在争用的情况下进行上下文切换很愚蠢。
  • 有问题的实现中的垃圾收集无论如何都会停止世界。收集期间不会有任何旋转。

  • 有什么好的理由 不是 在内存分配器/垃圾收集器实现中使用自旋锁?

    最佳答案

  • 显然,自旋锁的最坏情况是很糟糕的(操作系统调度程序只看到 30 个受 CPU 限制的线程,所以它试图给它们所有的 CPU 时间;当持有锁的线程休眠时,其中 29 个像疯了似的自旋),所以如果可以的话,你应该避免它们。很多比我聪明的人声称自旋锁没有用户空间用例,因此。
  • 系统互斥锁应该在线程进入休眠状态(或确实进行任何类型的系统调用)之前旋转一点,因此即使存在一些争用,它们有时也可以与自旋锁完全相同。
  • 分配器通常可以通过仅使用锁将页面分配给线程来实际消除锁争用。然后每个线程负责对自己的页面进行分区。您最终每 N 次分配只获得一次锁,并且您可以将 N 配置为您喜欢的任何值。

  • 我认为 2 和 3 是强有力的论据,不能被综合基准有效地反驳。您需要证明实际程序的性能会受到影响。

    关于memory-management - 自旋锁是内存分配器的好选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910633/

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