pid_max, ulimit -u 및 thread_max의 차이점 이해

pid_max, ulimit -u 및 thread_max의 차이점 이해

저는 Linux 프로세스를 이해하려고 노력하고 있습니다. 각각의 용어 pid_max와 에 대해 ulimit -u혼란스러워요 thread_max.

이 용어의 차이점은 정확히 무엇입니까? 누군가 이러한 차이점을 명확히 할 수 있습니까?

답변1

죄송합니다. 허용된 답변은 여러 측면에서 잘못된 정보입니다.

/proc/sys/kernel/pid_max주어진 시간에 실행될 수 있는 최대 프로세스 수와는 아무런 관련이 없습니다. 실제로 이는 커널이 할당할 수 있는 가장 큰 숫자 프로세스 식별자입니다.

Linux 커널에서 프로세스와 스레드는 동일합니다. 커널은 이를 동일한 방식으로 처리합니다. 이들은 모두 task_struct 데이터 구조의 슬롯을 차지합니다. 일반적인 용어로 스레드는 다른 프로세스와 리소스를 공유하는 Linux의 프로세스입니다(스레드 그룹 ID도 공유함). Linux 커널의 스레드는 스케줄러에 관한 한 대체로 개념적 구성입니다.

이제 커널이 스레드와 프로세스를 크게 구분하지 않는다는 점을 이해했으므로 /proc/sys/kernel/threads-max실제로 task_struct 데이터 구조에 포함된 최대 요소 수를 나타내는 것이 더 이해가 될 것입니다. 이는 프로세스 목록(또는 작업 목록이라고도 함)을 포함하는 데이터 구조입니다.

이름에서 알 수 있듯이 ulimit는 사용자별 제한입니다. 이 -u플래그는 "단일 사용자가 사용할 수 있는 최대 프로세스 수"로 정의됩니다. task_struct의 요소에는 작업을 생성한 사용자의 uid가 포함되어 있습니다. task_struct에 작업이 추가/제거될 때마다 uid당 개수가 유지되고 증가/감소됩니다. 따라서 ulimit -u특정 사용자가 주어진 시간에 task_struct에 가질 수 있는 최대 요소(프로세스) 수를 나타냅니다.

상황이 명확해지기를 바랍니다.

답변2

프로세스와 스레드의 차이점을 이해해 봅시다. ~에 따르면이것협회,

일반적인 차이점은 동일한 프로세스의 스레드가 공유 메모리 공간에서 실행되는 반면 프로세스는 별도의 메모리 공간에서 실행된다는 것입니다.

pid_max이제 아래와 같이 결정할 수 있는 매개변수가 있습니다 .

cat /proc/sys/kernel/pid_max

따라서 위 명령은 반환됩니다.32,768이는 내가 실행할 수 있음을 의미합니다.32,768내 시스템에서 동시에 실행되는 프로세스는 별도의 메모리 공간에서 실행될 수 있습니다.

threads-max이제 아래와 같이 결정할 수 있는 매개변수가 있습니다 .

cat /proc/sys/kernel/threads-max

위 명령으로 반환된 출력은 다음과 같습니다.126406이것은 내가 가질 수 있다는 것을 의미합니다126406공유 메모리 공간의 스레드.

ulimit -u이제 특정 시간에 사용자가 가질 수 있는 전체 프로세스를 나타내는 세 번째 매개변수를 사용하겠습니다 . 위 명령으로 반환된 출력은 다음과 같습니다.63203. 이는 특정 시점에 사용자가 생성한 모든 프로세스에 대해 사용자가 다음을 가질 수 있음을 의미합니다.63203프로세스가 실행 중입니다.

가상의 사례

따라서 2명의 사용자가 동시에 실행하는 2개의 프로세스가 있고 각 프로세스가 메모리를 많이 소비한다고 가정하면 두 프로세스 모두 효과적으로 메모리를 사용하게 됩니다.63203프로세스에 대한 사용자 제한. 따라서 이러한 경우에는 이 2명의 사용자가 전체를 효과적으로 사용하게 됩니다.126406 threads-max크기.

이제 사용자가 특정 시점에 실행할 수 있는 프로세스 수를 결정해야 합니다. 이는 문서에서 확인할 수 있습니다. /etc/security/limits.conf따라서 기본적으로 위에서 언급한 대로 파일에는 2가지 설정이 있습니다.여기.

소프트 리미트같은경고하다그리고하드 제한실제 최대 한도. 예를 들어 다음은 학생 그룹의 모든 프로세스가 50개를 초과하는 것을 방지하고 프로세스가 30개일 때 경고를 표시합니다.

@student        hard    nproc           50
@student        soft    nproc           30

하드 제한은 커널에 의해 유지되는 반면 소프트 제한은 셸에 의해 시행됩니다.

관련 정보