gpt4 book ai didi

linux - 为什么 Linux 中的 Sempaphore 受限

转载 作者:IT王子 更新时间:2023-10-29 00:34:34 30 4
gpt4 key购买 nike

由于使用了太多的 Websphere Message Broker 实例或类似的东西,我们刚刚用完了 Linux 机器上的信号量。

我和一位同事想知道为什么这甚至是有限的 - 这只是一点内存,对吧?

我用谷歌彻底搜索了一下,一无所获。

谁知道这是为什么?

干杯

最佳答案

信号量在使用时需要以非常非常低的开销频繁访问。

拥有一个可扩展的系统,其中为每个新请求的信号量结构动态分配内存会带来复杂性,从而减慢对它们的访问,因为它必须首先查找当前有问题的特定信号量的存储位置,然后去获取存储它的内存并检查值。将它们保存在随手可得的紧凑的固定内存块中会更容易、更快捷。

通过动态分配将它们分散在整个内存中也会使有效使用锁定的内存页面变得更加困难(也就是说,当内存需求高时不会被换出)。为内核数据使用“锁定”内存页面对于时间敏感和/或关键内核功能尤为重要。

将限制设置为可调参数(请参阅原始问题评论中的链接)允许在运行时根据需要通过 block 的“昂贵”重新分配和重新定位来增加限制。但通常这是在系统初始化时完成一次,甚至在使用信号量之前。

也就是说,信号量集使用的内存量相当小。由于系统上可用的现代内存为数千兆字节,因此对内存数量的原始默认限制似乎有点小气。但请记住,在许多系统上,信号量很少被用户空间进程使用,并且 linux 内核找到了进入许多内存相当有限的小型嵌入式系统的途径,因此将默认限制设置为任意高以防它可能被使用似乎是一种浪费。

少数软件包(例如 Oracle 数据库)确实依赖于具有许多可用的信号量,通常会在其安装和/或系统调整建议中建议增加系统限制。

关于linux - 为什么 Linux 中的 Sempaphore 受限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158783/

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