一位同事和我想知道为什么这甚至是有限的 – 它只是一点记忆,对吧?
我彻底用Google搜索,一无所获.
谁知道为什么会这样?
干杯
解决方法 信号量在使用时需要频繁访问,开销非常低.拥有一个可扩展的系统,其中动态分配每个新请求的信号量结构的内存将引入复杂性,这将减慢对它们的访问,因为它必须首先查找当前存在的特定信号量所在的位置,然后去获取存储它的内存并检查值.将它们保存在一个紧凑的固定存储器块中更容易,更快捷.
通过动态分配将它们分散在整个存储器中也会使得有效使用被锁定的存储器页面变得更加困难(即,当对存储器有很高的要求时,不会被换出).对内核数据使用“锁定”内存页对于时间敏感和/或关键内核函数尤为重要.
将限制作为可调参数(请参阅原始问题的注释中的链接)允许在运行时通过“昂贵的”重新分配和重新定位块来增加它.但通常这在系统初始化时完成一次,甚至在使用信号量之前也是如此.
也就是说,信号量集使用的内存量相当小.由于系统上的现代内存可用数千兆字节,因此对它们的数量的原始默认限制可能看起来有点吝啬.但请记住,在许多系统中,信号量很少被用户空间进程使用,并且linux内核会进入许多内存相当有限的小型嵌入式系统,因此在可能使用的情况下将默认限制设置为任意高限似乎是浪费.
少数软件包(例如Oracle数据库)依赖于具有许多可用的信号量,通常建议在其安装和/或系统调整建议中增加系统限制.
总结以上是内存溢出为你收集整理的为什么Sempaphores在Linux中受限全部内容,希望文章能够帮你解决为什么Sempaphores在Linux中受限所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)