programing

Linux의 최대 PID

newsource 2022. 8. 12. 23:30

Linux의 최대 PID

응용 프로그램을 Tru64에서 Linux로 포팅하고 있는데 PID_를 사용합니다.max는 limits.h로 정의되어 있습니다.Linux에는 이 정의가 없습니다.PID 검색 방법_판독하지 않는 경우의 MAX in c/proc/sys/kernel/pid_max손으로요?도서관이 있나요?

디폴트로는 32768 입니다.사용하시는 시스템의 값을 읽어보실 수 있습니다./proc/sys/kernel/pid_max.

또한 64비트 시스템(최대22 2 = 4,194,304)에서 다음 기능을 통해 값을 더 높게 설정할 수 있습니다.

echo 4194304 > /proc/sys/kernel/pid_max

자세한 내용은 이쪽:

http://www.cs.wisc.edu/condor/condorg/linux_scalability.html (archive.org 경유)

Linux에서 PID의 최대값은 구성할 수 있습니다.액세스 할 수 있습니다./proc/sys/kernel/pid_maxfile. 이 파일(Linux 2.5의 새로운 버전)은 PID가 랩되는 값을 지정합니다(즉, 이 파일의 값이 최대 PID보다 1 큼).이 파일의 기본값인 32768은 이전 커널과 동일한 범위의 PID가 됩니다.이 파일의 값은 최대 2^22(PID_MAX_LIMIT, 약 400만)의 임의의 값으로 설정할 수 있습니다.

프로그래밍의 관점에서 볼 때론pid_t프로세스 ID를 사용하여 프로세스 ID로 작업합니다.정수 특성을 사용하여 최소/최대 값에 액세스할 수도 있습니다.다음은 x86_64 플랫폼에서 실행되는 Linux 2.6.X에서 C++ 및 Boost를 사용한 예입니다.

$ cat test.cpp 
#include <sys/types.h>
#include <iostream>
#include <boost/integer_traits.hpp>

using namespace std;

int main ()
{
    cout << "pid_t max = " << boost::integer_traits<pid_t>::const_max << endl;
}

$ ./test 
pid_t max = 2147483647

에서proc(5)man 페이지:

/proc/sys/kernel/pid_max(Linux 2.5.34 이후)

이 파일은 PID가 랩할 값을 지정합니다(즉, 이 파일의 값이 최대 PID보다 큰 값이 됩니다).이 값을 초과하는 PID는 할당되지 않습니다.따라서 이 파일의 값은 프로세스와 스레드의 총 수에 대한 시스템 전체의 제한으로서도 기능합니다.이 파일의 기본값인 32768은 이전 커널과 동일한 범위의 PID가 됩니다.32비트 플랫폼에서는 32768은 pid_max의 최대값입니다.64비트 시스템에서는pid_max는 최대 2^22 ()의 임의의 값으로 설정할 수 있습니다.PID_MAX_LIMIT약 400만).

Ubuntu 20.04가 한계를 최대치(4194304)로 끌어올린 것 같습니다.

% cat /proc/sys/kernel/pid_max
4194304

언급URL : https://stackoverflow.com/questions/6294133/maximum-pid-in-linux