pid_max的设置

原理分析

关于pid_max,是在include/linux/threads.h中定义的。具体定义如下

/*
 * This controls the default maximum pid allocated to a process
 */
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL ? 0x1000 : 0x8000)

/*
 * A maximum of 4 million PIDs should be enough for a while.
 * [NOTE: PID/TIDs are limited to 2^29 ~= 500+ million, see futex.h.]
 */
#define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \
    (sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT))

如果当时编译内核的时候,配置了CONFIG_BASE_SMALL选项,那么默认的pid max为0x1000,也就是4096个,否则为0x8000,也就是32768个。

当然,这个pid max是可以修改的。如何修改呢?

# 查看pid_max
]# sysctl kernel.pid_max
kernel.pid_max = 32768

# 修改pid_max
]# sysctl -w kernel.pid_max=4194304
kernel.pid_max = 4194304

那么这个值能设置多大呢?从上面的源码,可以看出来,如果配置了CONFIG_BASE_SMALL选项,则最大限制为PAGE_SIZE * 8,否则如果是64位系统(sizeof(long)=8),则最大限制为4 * 1024 * 1024 = 4194304,如果是32位系统(sizeof(long)=4),则最大限制为PID_MAX_DEFAULT,也就是32768

如何判断编译的时候,是否配置了CONFIG_BASE_SMALL选项呢?

]# cat /boot/config-3.10.0-693.el7.x86_64 |grep BASE_SMALL
CONFIG_BASE_SMALL=0

为0表示没有配置,为1表示配置了。

如何查看系统PAGE_SIZE 呢?

]# getconf PAGESIZE
4096

总结

pid最大值

CONFIG_BASE_SMALL=0CONFIG_BASE_SMALL=1
32位系统32768PAGE_SIZE * 8
64位系统4194304PAGE_SIZE * 8

查看修改pid_max

# 查看pid_max
]# sysctl kernel.pid_max
kernel.pid_max = 32768

# 修改pid_max
]# sysctl -w kernel.pid_max=4194304
kernel.pid_max = 4194304

编译时是否配置CONFIG_BASE_SMALL

# 为0表示没有配置,为1表示配置了。
]# cat /boot/config-3.10.0-693.el7.x86_64 |grep BASE_SMALL
CONFIG_BASE_SMALL=0

查看系统PAGE_SIZE

]# getconf PAGESIZE
4096
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值