2011-03-05 2 views
2

프로세스의 경우 소프트 한계 값 RLIMIT_AS에 대해 소프트 한계 값 335544320과 하드 한계 값 1610612736을 설정했습니다. 이 값을 설정 한 후에도 프로세스의 주소 공간은 최대 178MB까지 올라갑니다. 그러나 나는 위와 같은 값으로 올바르게 설정된 /proc/process_number/limits의 소프트 및 하드 한도의 값을 볼 수 있습니다.소프트 한계를 특정 값으로 설정하면 RLIMIT_AS가 작동하지 않음

RLIMIT_AS이 내 OS에서 작동하는지 알고 싶었고 RLIMIT_AS 기능을 테스트 할 수있는 방법을 알고 싶습니다.

CentOS 5.5 (64 비트)는 내가 사용하는 운영 체제입니다.

일부는 제발 도와주세요. 고맙습니다!

+1

오류 ... 335544320 = 320MB. 당신의 프로세스는 그보다 조금 더 낮습니다. 문제가 정확히 무엇입니까? – thkala

+0

프로세스가 178MB로 제한하는 대신 설정 한 값 (320MB)까지 올라가지 않은 이유를 알고 싶습니다. 나는 64 비트 시스템에서 프로세스의 크기를 늘릴 필요가있다. RAM을 사용할 수있을 때 프로세스를 더 큰 크기로 늘려야합니다. – Rajath

+0

@Rajath : 최대 한도를 초과하지 않는 한 할당 할 메모리의 양은 프로세스에 달려 있습니다. 더 큰 버퍼 또는 무언가를 원한다면, 정확히 무엇을 실행하고 있는지에 달려 있습니다. –

답변

3

모두 setrlimit() 한계는 상한입니다. 프로세스는 소프트 한도를 유지하는 한 필요한만큼의 리소스를 사용할 수 있습니다. setrlimit() manual page에서 :

소프트 제한은 커널 대응 자원에 적용하는 값이다. 하드 제한은 소프트 제한에 대해 의 천장으로 작동합니다. 권한이없는 프로세스는 소프트 한계를 0에서부터 하드 한계까지 범위의 값으로 설정하고 소프트 한계는 하드 한계를 (되돌릴 수 없음) 낮게 만 설정할 수 있습니다. A 권한이 부여 된 프로세스 (Linux에서 : CAP_SYS_RESOURCE 기능 포함) 은 제한 값을 임의로 변경할 수 있습니다.

실제로 이것은 하드 제한이 소프트 제한과 자체 모두에 대해 상한 인임을 의미합니다. 커널은 프로세스 작동 중 소프트 제한을 시행합니다. 하드 제한은 프로세스가 자원 제한을 변경하려고 시도 할 때만 점검됩니다.

귀하의 경우 주소 공간에 대해 320MB의 상한선을 지정하고 귀하의 프로세스는 약 180MB의 리소스를 사용합니다 (리소스 제한 내). 프로세스를 확장하려면 코드에 을 입력해야합니다.

참고로 리소스 제한은 개별 프로세스의 동작을 조정하지 않고 시스템을 보호하기위한 것입니다. 프로세스가 이러한 제한 중 하나로 실행되면 오류 처리가 아무리 훌륭하더라도 복구 할 수 있는지 의심 스럽습니다.

예를 들어 다음과 같이 프로세스의 메모리 사용을 조정하려는 경우. 성능 향상을 위해 더 많은 버퍼를 할당하려면 다음 중 하나 또는 모두를 수행해야합니다.

  • 사용자에게 적절한 값을 물어보십시오. 이것은 제 의견으로는 항상 가능해야하는 한 가지입니다. 사용자 (또는 시스템 관리자)는 응용 프로그램의 모든 추측 작업을 무시하고 항상 이러한 작업을 제어 할 수 있어야합니다.

  • 사용 가능한 메모리의 양을 확인하고 할당 할 좋은 양을 추측 해보십시오.

사이드 노트로, 컴파일시 32 비트 대 64 비트를 처리 할 수 ​​있습니다. 이런 식의 런타임 검사는 실패하고 CPU 사이클을 낭비하는 경향이 있습니다. 는 CPU "비트 수는"사용 가능한 메모리와 직접적인 관계가없는 점을 염두에 두셔야 :

  • 32 비트 시스템 참에 (일반적으로 1-3 기가 바이트 범위) 제한을 부과 할 프로세스가 사용할 수있는 메모리. 그렇다고 실제로 많은 메모리가 인 것은 아닙니다..

  • 64 비트 시스템은 비교적 최신이며, 보통은 실제 메모리가 더 많습니다. 특정 시스템에 실제로 해당 시스템이 있거나 해당 시스템에서 사용해야한다는 것을 의미하지는 않습니다. 예를 들어 많은 사람들은 비용을 줄이기 위해 1GB RAM을 갖춘 64 비트 홈 파일 서버를 구축했습니다. 그리고 임의의 프로세스가 DBMS를 스왑으로 바꿔 버리면 단지 짜증나게되는 사람들을 많이 안다.

관련 문제