나는 이 두 메커니즘(A와 B라고 부르자)이 프로세스의 리소스를 제한한다는 것을 알고 있습니다.
두 사람이 함께 일하는 모습이 궁금해요.
A가 프로세스의 리소스를 제한하는 경우 B도 동일한 리소스를 제한하면 어떻게 되나요?
답변1
모든 제한사항은 독립적으로 적용됩니다. 프로세스가 특정 한도 이상을 요구하는 요청을 하면 요청이 거부됩니다. 이는 제한이 cgroup, 프로세스별 또는 사용자별인지 여부를 나타냅니다.
cgroup은 프로세스 그룹별로 제한을 설정하고 setrlimit는 사용자 또는 프로세스별로 제한을 설정하므로 이러한 메커니즘은 일반적으로 중복되지 않습니다. 특정 요청은 cgroup 및 setrlimit 제한을 모두 초과하거나 둘 중 하나만 초과할 수 있습니다.
모든 제한은 허용되는 최대 값이며 보장된 최소 값은 아닙니다. 예를 들어, 각 프로세스의 메모리 제한이 1GB인 경우, 200MB의 메모리를 가진 프로세스가 100MB의 메모리를 할당하라는 요청은 적용 가능한 제한에 관계없이 시스템에 사용 가능한 메모리가 더 이상 없으면 거부될 수 있습니다. setrlimit 및 cgroup 제한이 모두 적용되는 경우 setrlimit 최대값, cgroup 최대값 및 현재 사용 가능한 리소스 최대값 등 최소 세 가지 최대값이 초과될 수 있습니다.
답변2
ulimit/setrlimit/getrlimit
이것ulimit
쉘 명령(실행 가능한 프로그램)은 래퍼입니다setrlimit
시스템 호출(커널에서 제공하는 함수), 제한 정보가 포함된 기본 데이터 구조를 이라고 합니다 rlimit
.
ulimit
쉘 명령사용 가능한 리소스에 대한 소프트 및 하드 제한 제어껍데기그리고 그것에 의해 시작된 프로세스.
getrlimit()
그리고setrlimit()
시스템 호출관련 소프트 제한과 하드 제한은 구조에 의해 정의되는 리소스 제한을 각각 가져오고 설정합니다 rlimit
.
man 1 ulimit
자세한 내용을 보려면 다음을 사용하세요.man 2 setrlimit
그룹 C
Cgroup을 사용하면 CPU 시간, 시스템 메모리, 네트워크 대역폭 또는 이러한 리소스의 조합과 같은 리소스를 할당할 수 있습니다.시스템에서 실행되는 사용자 정의 작업(프로세스) 그룹 간.
DM ulimit
프로세스별 설정이나 조절 속도와는 아무런 관련이 없습니다. 이것이 cgroups
커널 확장의 기능이자 목적입니다. 그것이 제공하는 다른 기능 중 하나를 언급하면 설정 계층 구조를 정의할 수도 있다고 말할 수 있습니다.
알아채다나는 당신이 읽을 것을 제안합니다이 기사빨리 배우세요 ulimit
/ setrlimit
. (통제 그룹) 의 경우 cgroups
다음을 읽어 보시기 바랍니다.Red Hat 공식 문서.