linux下sem多大值会溢出sem

linux下sem多大值会溢出sem,第1张

一、你是想问:sem队列的最大深度吗?

int semget(key_t key, int nsems, int semflg)

nsems must be greater than 0 and less than or equal to the maximum number of semaphores per semaphore set (SEMMSL).

#define SEMMSL  250             /* <= 8 000 max num of semaphores per id */

semget的最大队列深度为250

二、你想问的是sem id的最大值

/* Maximum value the semaphore can have.  */

#define SEM_VALUE_MAX   (2147483647)

配置 Linux 内核参数(2种方法),修改后不用重启动更新: /sbin/sysctl -p第一种:打开/etc/sysctl.conf 复制如下内容kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default=262144net.core.wmem_default=262144net.core.rmem_max=262144net.core.wmem_max=262144第二种:打开终端cat >>/etc/sysctl.conf<kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default=262144net.core.wmem_default=262144net.core.rmem_max=262144net.core.wmem_max=262144EOF这里,对每个参数值做个简要的解释和说明。 (1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。 (2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。 (3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。 (4)sem:该参数表示设置的信号量。 (5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。 修改好内核以后,执行下面的命令使新的配置生效。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/163804.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-24
下一篇2023-03-24

发表评论

登录后才能评论

评论列表(0条)

    保存