2014-12-12 4 views
5

cgroup 제한 절차를 사용하면 더 많은 리소스를 사용합니다 .그러나 cgroup에서 Memory가 한계를 초과하면 프로세스가 종료됩니다. . 대신 진행 cgroup에 제한을 통해 메모리를 허용 할 때 반환 메모리 할당 실패의 cgroup에의 메모리 서브 시스템을 사용 움 - 범인은?cgroup의 메모리 하위 시스템에서 메모리 할당이 실패 할 때 oom-killer를 사용하는 이유는 무엇입니까?

+0

더 나은 답변을 원하면 자세한 내용을 적어 질문을 다시 말하십시오. cgroup conf 및 자세한 내용을 공유하는 것이 가장 좋습니다. – askb

+0

최소한 다음을 알고 있으면 좋을 것입니다 : 어떤 커널을 사용합니까? 소프트 또는 하드 메모리 제한을 사용합니까? 전체 cgroup 구성이 더 좋을 것입니다 (특히 중요하지 않은 경우). 즉, 실제로 메모리 부족 (모든 메모리와 스왑이 사용됨)이없는 한 cgroup 메모리 하위 시스템은 프로세스를 중지 할 것으로 예상되지 않습니다. – marbu

+0

2.6.32 커널을 사용하고 하드 밈 제한을 사용합니다. MySQL을 테스트하고 모든 cgroup 메모리를 사용합니다. swap을 사용하지 마십시오. oom-kill. 커널에서 오류가 발생하기를 바랍니다. 페이지를 배포 할 수 없지만 oom-kill 또는 끊기. – kryptosx

답변

1

이 cgroup을 사용 움 킬러 또는 중 하나는 프로세스 (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec-memory.html)을 일시 정지 할 수 있음을 표시하는 이유. 그러나 ulimit을 사용하면 할당이 정상적으로 실패합니다.

답을 찾을 수없는 질문이 남아 있습니다. cgroup이 프로세스 메모리를 거부하게 만들려합니까 (malloc에서 NULL을 반환합니까)? 아니면 ulimit이 가상 메모리 (-v)가 아닌 실제 메모리 (-m)를 거부하는 방법이 있습니까?