리눅스 /etc/security/limits.conf 설명


9

limits.conf의 항목에 대한 세부 정보를 제공하는 사람이 설명하거나 소스를 알고 있습니까? 매뉴얼 페이지에는 자세한 내용이 나와 있지 않습니다.

예를 들면 다음과 같습니다.

rtprio 
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher) 

priority 
the priority to run user process with (negative values boost process priority) 

이것들은 어떻게 다릅니 까? 그들은 어떤 가치를 가질 수 있습니까? 기본적으로 무엇을합니까?

일부 항목은 분명하지만 다음과 같은 더 나은 설명 (기본값, 범위, 실제 의미 등)을 어디에서 찾을 수 있습니까?

data 
maximum data size (KB) 

fsize 
maximum filesize (KB) 

memlock 
maximum locked-in-memory address space (KB) 

cpu 
maximum CPU time (minutes) 

nice 
maximum nice priority allowed to raise to (Linux 2.6.12 and higher) values: [-20,19] 

CPU가 초과되면 어떻게됩니까? 프로세스가 종료 되었습니까? 하나의 프로세스 또는 전체 사용자 만 CPU 사용을 금지합니까? 한 세션 또는 분당 최대 시간입니까?

나는 답을 찾으려고 노력했지만 거의 모든 세부 정보를 제공하지 않는 한 매뉴얼 페이지 만 찾을 수 있습니다.


이 rute는 Linux Administration에 대한 훌륭한 소개입니다. limits.conf에 대한 자세한 내용은 제공하지 않지만이 정보를 찾을 수있는 위치는 rute.2038bug.com/index.html.gz
symcbean

답변:


18
rtprio 
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher) 

priority 
the priority to run user process with (negative values boost process priority) 

왜 이것들이 다른가요?

리눅스에는 서로 다른 클래스의 프로세스 스케줄러가 있습니다. 기본 프로세스 (CFQ)는 기본적으로 실행하려는 각 프로세스에 동일한 시간 조각을 제공하고 모든 사람이 자신의 차례에 대해 평균적으로 같은 시간을 기다리는 방식으로 실행 가능한 작업을 대기열에 넣습니다. 이 규칙에는 몇 가지 예외가 있지만 기본 아이디어입니다.

다른 스케줄러 클래스는 실시간 스케줄러입니다. 실시간은 약간 다른 실행 가능한 작업을 공정한 큐 구성표로 대기열에 넣습니다. 실시간 프로세스는 프로세스가 필요로하는 즉시 CPU 시간을 얻습니다. 이는 '실시간을위한 공간을 만들기 위해 CPU에서 실행중인 프로세스를 제거합니다 '과정.

그들은 어떤 가치를 가질 수 있습니까?

'우선 순위'가하는 것은 프로세스의 훌륭함을 변경하여 로그인 할 때 기본 프로세스가 특정 멋짐에서 시작하고, 생성 한 모든 자식 프로세스도 같은 멋짐에서 시작되도록하는 것입니다.

이는 다른 경쟁 프로세스에 유리하게 스케줄 될 가능성을 높이는 효과가 있으며, 사용자 경험은 더 낮은 niceness 값에 대해보다 반응 / 대화식이되고, niceness가 높아지면 덜 반응 / 대화식이되도록 할 수 있습니다.

예를 들어 일반 로그인 사용자는 서비스 가능한 데몬보다 우선 순위가 낮거나 루트가 다른 모든 것보다 로그인 우선 순위가 높은 것이 중요 할 수 있습니다.

실시간은 경합이 'rtprio'필드로 처리됩니다. 두 개의 실시간 작업을 모두 실행하려는 경우 'rtprio'값을 사용하여 우선 순위를 선택할 프로세스를 결정합니다. rtprio가 높을수록 우선 순위가 높은 작업이 생성됩니다.

limits.conf에서이 값을 설정하면 값을 설정하기 위해 루트가 없어도 실시간 작업을 특정 우선 순위 밴딩으로 설정할 수 있습니다. 실시간 스케줄러를 사용하여 실행하도록 설정되지 않은 작업에는 영향을 미치지 않습니다.

'nice'값은 'rtprio'와 동일하지만 표준 CFQ 스케줄링에 대해 수행해야합니다. 나는 그것을 시도한 적이 없다. PAM이 이러한 한계를 멋진 값으로 설정했을 때 생성되는 초기 프로세스를 설정하면 일반 사용자는 루트를 설정하지 않고도 멋진 수준 이상으로 갈 수 있습니다. 명시 적으로 renice하지 않으면 해당 로그인의 쉘에서 생성 된 모든 프로세스 (예 :)가 limits.conf에 설정된 nice 값을 초기에 생성 된 부모 프로세스에서 상속한다는 것을 의미합니다.

기본값은 무엇입니까?

'기본'제한-기술적으로 명시 적으로 설정되지 않는 한 기술적으로 모두 pid 1로 설정되고 자원 제한이 상위 프로세스에서 상속됩니다. 제한이 정의되거나 재정의되지 않은 경우 상속 init은 기본값입니다.

다른 가치

data 
maximum data size (KB) 

프로세스가 초기화되면 프로세스가 메모리에 복사 될 때 '데이터 세그먼트'라고하는 일부 메모리를 할당합니다.이 공간은 전역 공간, 힙에서 할당 된 다른 초기화 된 데이터 및 메모리가있는 공간입니다. 한도는 프로세스가 취할 수있는 최대 할당량을 제어합니다.

malloc ()이 데이터 세그먼트를 과도하게 사용하여 데이터를 저장하는 경우가 거의 없기 때문에이 한계에 도달하지는 않습니다.

fsize 
maximum filesize (KB) 

이것은 문자 그대로 파일을 해당 사용자와 같이 쓸 수있는 최대 크기를 설정합니다.

memlock 
maximum locked-in-memory address space (KB) 

애플리케이션이 획득 한 거의 모든 메모리는 '제거 가능'입니다. 교체 할 수 있습니다. 메모리 잠금 메모리는 교환 할 수 없으며 상주 상태로 유지됩니다. 이 값은 사람들이 메모리 시스템을 고갈시키고 스와핑을 유발하기 위해 남용 될 수 있으므로 엄격하게 제어됩니다. 일반적으로 보안 응용 프로그램 (페이지를 스왑하지 않고 스왑 파티션에서 읽을 수 있음)에 유용합니다.

cpu 
maximum CPU time (minutes) 

이는 프로세스가 CPU에서 소비 할 수있는 총 시간을 나타냅니다. 이 값을 초과하는 프로세스가 종료됩니다. 이는 프로세스가 시작된 이후 경과 한 시간과 다릅니다. 프로세스의 CPU 사용률이 100 % 인 경우 1 분의 cputime 제한을 사용하는 데 1 분이 걸리지 만 프로세스가 50 %의 사용률을 사용하는 경우 2 분이 소비됩니다.

chem cpu를 초과하면 어떻게됩니까?

프로세스가 SIGXCPU종료 신호 를 보내 프로세스 를 종료합니다. 그런 다음 상위 프로세스가이를 처리하여 처리 할 수 ​​있습니다.

하나의 프로세스 또는 전체 사용자 만 CPU를 사용하지 못하게됩니까?

참조 된 거의 모든 한계는 프로세스별로 처리됩니다. CPU 시간이 포함되어 있습니다. 내가 아닌 유일한 로그인 수는 해당 사용자의 총 로그인 수와 총 프로세스 수라고 생각합니다.

한계가있는 다른 장애는 다음과 같습니다.

  • 최대 프로세스에는 경량 스레드 수가 포함됩니다.
  • RSS 제한은 아무 것도하지 않으며 몇 년 동안 아무런 의미가 없습니다.

1

이것은 pam_limits모듈을 위한 것입니다 ... setrlimit(2)그리고 sysctl(8)값입니다. 내 검색은 어려운 한계를 찾지 못했지만 인용 된 맨 페이지는 몇 가지 설명을 제공합니다.


1

빠른 답변은 좋은 답변이므로 여기로갑니다.

  • schedtool -r; 로 우선 순위의 최소값과 최대 값을 찾으십시오 . 과
  • 으로 현재 제한을 쿼리하십시오 ulimit -a.

동일한 값을 가지더라도 소프트 한계와 하드 한계를 모두 설정하는 것을 잊지 마십시오. 내 테스트에서 이것은 ulimit 명령의 차이점을 보여주는 유일한 방법이었습니다.

이것이 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.