微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Sempaphores在Linux中受限

由于使用了太多的Websphere Message broker实例或者某些东西,我们的 Linux机箱上的信号量用完了.

一位同事和我想知道为什么这甚至是有限的 – 它只是一点记忆,对吧?

我彻底用Google搜索,一无所获.

谁知道为什么会这样?

干杯

解决方法

信号量在使用时需要频繁访问,开销非常低.

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

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

将限制作为可调参数(请参阅原始问题的注释中的链接)允许在运行时通过“昂贵的”重新分配和重新定位块来增加它.但通常这在系统初始化时完成一次,甚至在使用信号量之前也是如此.

也就是说,信号量集使用的内存量相当小.由于系统上的现代内存可用数千兆字节,因此对它们的数量的原始认限制可能看起来有点吝啬.但请记住,在许多系统中,信号量很少被用户空间进程使用,并且Linux内核会进入许多内存相当有限的小型嵌入式系统,因此在可能使用的情况下将认限制设置为任意高限似乎是浪费.

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

原文地址:https://www.jb51.cc/linux/394154.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐