나는 모든 종류의 자동 OOM 킬러를 매우 싫어하며 이러한 상황을 수동으로 해결하는 것을 선호합니다. 그래서 나는 오랫동안
vm.overcommit_memory=1
vm.overcommit_ratio=200
그러나 이렇게 하면 메모리가 오버플로되면 시스템이 응답하지 않게 됩니다. HDD와 6GB RAM이 장착된 기존 노트북에서는 텍스트 VT로 전환하고 일부 명령을 실행하고 실행될 때까지 몇 분 정도 기다려야 하는 경우가 있었습니다. 그렇기 때문에 이런 상황을 미리 알아차릴 수 있는 성과지표가 많고, 그것이 왜 필요한지 질문을 자주 받는 편이다. 그리고 항상 도움이 되는 것은 아닙니다. 노트북을 사용하지 않을 때 메모리 오버플로가 발생하면 너무 늦기 때문입니다.
SSD와 12GB RAM을 갖춘 최신 노트북에서는 더 좋을 것이라고 생각했지만 실제로는 더 나쁩니다. 최대 16.4GB의 압축 스왑 공간을 허용하는 zRam이 있는데 vm.swappiness=200
거의 소진되면 시스템이 기존 노트북보다 더 응답하지 않게 되고 VT 스위치도 거의 작동하지 않으며 로컬에서 시스템에 SSH로 연결할 수 없습니다. 따라서 나의 유일한 수단은 Alt+SysRq+RF를 사용하여 커널의 수동 OOM을 맹목적으로 호출하는 것입니다. 때로는 중요한 프로세스를 종료하도록 선택합니다. 예를 들어 dbus-daemon
스왑이 거의 가득 찼을 때 소리 경고가 있는 데몬을 만들 수도 있지만 이는 다시 발생했습니다. 부분적으로는 임시방편으로, 어쨌든 제 시간에 거기에 도착할 수 없을 것 같았기 때문입니다.
과거에는 thrash-protect
. 탐욕스러운 프로세스로 전송 SIGSTOP
한 다음 자동으로 SIGCONT
-s를 수행하여 전체 잠금을 연기하고 문제를 수동으로 해결하는 데 많은 도움이 되지만 심각한 과부하 상황에서는 거의 모든 것이 동결되기 시작합니다(허용 목록으로 명시적으로 나열될 수 있음). 그리고 그것은 많은 자극적인 부작용을 가지고 있습니다. 예를 들어, 셸이 고정된 경우 해당 하위 프로세스는 셸이 고정 해제된 후에도 고정된 상태로 남아 있을 수 있습니다. 두 프로세스가 메시지 버스를 공유하고 프로세스 중 하나가 정지되면 메시지가 버스에 빠르게 축적되어 RAM 사용량이 다시 급격히 증가하거나 정지될 수 있습니다(그래픽 서버 및 다중 프로세스 브라우저는 특히 이러한 현상이 발생하기 쉽습니다). .
sshd
제안한 것처럼 -20 우선 순위로 실행 해 보았습니다 .유제하지만 실제로는 도움이 되지 않습니다. 기본 우선순위만큼 응답하지 않습니다.
나는 항상 RAM에 잠겨 있고 시스템의 나머지 부분이 아무리 과부하되더라도 사용할 수 있는 비상 콘솔을 원합니다. Windows NT≥6의 Ctrl+Alt+Del 화면과 유사하며 훨씬 더 좋습니다. 일부 RAM을 매개변수를 사용하여 예약할 수 있다는 점 crashkernel
을 감안할 때 kdump
이 메커니즘이나 다른 커널 메커니즘을 활용하여 작업을 수행할 수도 있다고 생각합니까?
답변1
사용 사례의 경우 mlockall
시스템 호출을 사용하여 특정 프로세스가 절대 스왑되지 않도록 하여 스왑 스래싱 속도 저하를 방지해 보세요.
earlyoom
이 해킹에 대한 사용자 정의 규칙을 권장합니다 .
답변2
스왑 파티션이나 연속 스왑 파일이 필요합니다.
스왑 공간은 프로그램이 실제 메모리를 모두 할당하고 더 많은 메모리가 필요할 때 발생하는 상황을 제어하는 데 사용할 수 있습니다. 해제 가능한 캐시(일부 캐시 블록이 "사용 중"이며 해제할 수 없음)가 모두 해제되면 시스템은 Out-Of-Memory 상태가 됩니다. 메모리가 부족한 상황에서는 스와핑을 통해 특정 작업에 대한 메모리가 디스크에 기록되고(스왑 아웃) 재사용을 위해 해제된 다음 작업이 실행되는 동안 메모리로 반환됩니다(스왑 인). 교체하지 않으면 시스템이 정지될 수 있으며 무서운 OOM-Killer(커널에 하드 코딩된 의사 프로세스)가 실행되어 메모리를 확보하기 위해 종료할 프로세스를 선택합니다. OOM-Killer는 불편한 옵션으로 유명합니다.
시스템 최대 절전 모드에는 RAM 크기의 연속 스왑 영역이 필요합니다.
읽다 man mkswap fallocate filefrag swapon fstab
.