두 개의 Linux 시스템을 확인했는데 둘 다 64비트이지만 PID_MAX가 다릅니다.
시스템에
cat /proc/sys/kernel/pid_max
32768
다른 측면에서는,
cat /proc/sys/kernel/pid_max 65536
절차 매뉴얼 페이지에서.
proc/sys/kernel/pid_max 이 파일(Linux 2.5의 새로운 기능)은 PID 래핑 값을 지정합니다(즉, 이 파일의 값은 최대 PID보다 1 더 큽니다). 이 파일의 기본값인 32768은 이전 커널과 동일한 PID 범위를 생성합니다. 32비트 플랫폼에서는 32768이 pid_max의 최대값입니다. 64비트 시스템에서 pid_max는 최대 2^22(PID_MAX_LIMIT, 약 400만)의 값으로 설정할 수 있습니다.
두 시스템 모두 동일한 Linux 커널을 가지고 있습니다.
이제 내 질문은 pid_max가 변경되는 요인이 무엇입니까? 미리 감사드립니다.
답변1
제가 정확하게 기억한다면 기본값은 최대 잠재적 CPU 수(rhel)를 기준으로 계산됩니다.
각 시스템에서 이 명령을 실행하세요.
dmesg | grep -i smp.*allow
아니면 관리자가 이전에 한도를 변경했을 수도 있습니다.
답변2
실제 Linux 상자가 아닌 도커에 액세스하거나 VZ 컨테이너를 열 수 있습니까? 이 경우 호스트는 PID_MAX를 임의의 값으로 제한할 수 있습니다. 이것은 Cgroup pid 컨트롤러라는 비교적 새로운 기능입니다. 컨테이너가 끝없이 포크되는 과정을 막아 짧은 시간 동안 호스트를 사용할 수 없게 만드는 안티포크 폭탄 솔루션입니다.