首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么限制共享内存的总量?

问为什么限制共享内存的总量?
EN

Server Fault用户
提问于 2016-08-04 15:30:09
回答 1查看 1.3K关注 0票数 2

我有一些在CentOS 7系统上共享内存的大型内存进程。我正在为他们调整内存系统。对于kernel.shmmax和kernel.shmall,RedHat文档声明:

kernel.shmmax定义了一个共享内存段的最大字节数,该共享内存段可以在其虚拟地址空间中分配。kernel.shmall设置可在系统范围内使用的共享内存页的总量。

为什么共享内存有这样的限制?我可以使用限制或cgroup限制用户或进程使用的总内存。为什么我要限制系统上可用的共享内存总量?当系统有大量共享内存需要管理时,系统是否会受到性能影响?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2016-08-05 18:02:49

这是系统卫生的一部分,也是遗产的一部分。cgroup控件在Linux (2.6.24及更高版本)中相对较新,早在1.2.x系列的内核中就存在shmmax/shmall:

ipc/shm.c

代码语言:javascript
复制
    {
            struct shminfo shminfo;
            if (!buf)
                    return -EFAULT;
            shminfo.shmmni = SHMMNI;
            shminfo.shmmax = SHMMAX;
            shminfo.shmmin = SHMMIN;
            shminfo.shmall = SHMALL;
            shminfo.shmseg = SHMSEG;
            err = verify_area (VERIFY_WRITE, buf, sizeof (struct shminfo));
            if (err)
                    return err;
            memcpy_tofs (buf, &shminfo, sizeof(struct shminfo));
            return max_shmid;
    }

在过去的21年里,linux的极限理念已经发生了变化。当时,全球极限的设计模式占主导地位。您不想为IPC使用所有的RAM,所以您需要为它设置一个高水标记,以确保有足够的空间用于其他一切。这也可以用于现代cgroup;您的进程的单个限制,有一个全局限制,以确保避免交换,整个系统仍然运行良好。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/794886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档