Linux OOM Killer를 지연하고 프로세스를 실행할 수 있습니까?

Linux OOM Killer를 지연하고 프로세스를 실행할 수 있습니까?

현재 저는 QEMU/KVM을 사용하여 가상화된 환경에서 가상 머신에 대한 효율적인 동적 메모리 할당을 생성하려고 합니다.

마지막 문제는 게스트 VM의 메모리가 거의 부족할 때 OOM Killer를 사용하고 메모리가 충분하지 않은 모든 작업을 차단한다는 것입니다. 하지만 내가 하고 있는 일은 컴퓨터의 메모리가 거의 부족할 때 내 알고리즘이 다른 게스트 VM에서 사용 가능한 메모리를 가져와 이를 필요한 컴퓨터에 할당하는 것입니다.

그래서 스왑을 비활성화했고 ksm이 실행되지 않았으며 마지막으로 OOM 킬러가 다른 프로그램을 종료했다는 것입니다.

OOM Killer를 비활성화하기 위해 읽고 검색한 결과 비활성화하는 것이 나쁜 생각이라는 것을 알았습니다.

이제 여기에 질문하면 내 알고리즘이 이미 컴퓨터에 메모리를 할당했기 때문에 OOM Killer를 1~2초 동안 지연하고 프로세스를 실행하도록 하는 방법이 있습니다.

또는 메모리가 없어도 프로세스가 실행되어 메모리를 할당할 수 있으므로 내 알고리즘이 해당 시스템에 메모리를 할당합니다.

답변1

귀하의 질문을 올바르게 이해했는지 잘 모르겠지만 cgroup메모리 사용량을 제한하고 메모리가 부족할 경우 그룹의 모든 프로세스를 중지하는 memory 를 사용하고 싶을 것입니다. 그런 다음 이 그룹이 아닌 다른 프로세스를 실행하여 수행할 작업을 결정하고 메모리 제한을 늘릴 수 있습니다.

관련 정보