커널 및 GUI 정지 방지

커널 및 GUI 정지 방지

성능보다 안정성을 우선시하고 싶습니다. 따라서 하드웨어 제한에 도달하면 전체 OS 대신 내 프로세스가 중단되기를 원합니다.

필요한 경우 항상 커널에 일부 리소스를 제공하고 싶습니다. 데스크톱 세션일 수도 있지만 너무 무겁고 리소스를 너무 많이 차지할 수 있으므로 확실하지 않습니다.

그러나 일반적으로 내 리소스의 95%는 세션에서 실행되는 프로그램에 의해 소비됩니다. WM과 커널에 숨을 쉬고 마우스를 계속 움직일 수 있는 리소스가 있는 한, 멈춤을 의미하더라도 더 적은 리소스를 차지하기를 원합니다. GUI 터미널 또는 최소한 TTY에서 명령을 실행하는 것이 이상적입니다.

나는 OOM 킬러가 내 모든 작업을 사라지게 하거나 전체 시스템을 재부팅하도록 강요하는 것을 원하지 않습니다.

리소스 사용을 제한하면 일부 리소스가 남아 있고 커널이 중단되지 않아 재부팅할 필요가 없으므로 작업이 손실되지 않으므로 OOM이 절전 모드로 전환됩니다.

나는 우리가 제공하는 자원으로 프로그램이 실행될 수 있다는 것을 알고 있습니다. 저는 미니컴퓨터와 메인프레임 모두에서 동일한 프로그램을 사용하며 항상 실행됩니다. 그러니 그들이 덜 사용하고 좋은 방향으로 나아갈 수 있는 방법이 있어야 합니다.

나는 그것이 남용되고 있다는 사실을 부정하고 싶지 않으며 많은 소프트웨어가 심지어 작동하기 위해 그것에 의존합니다. 난 한계를 선호해, 그들이 더 잘 처리해

답변1

vm.overcommit_memory설정을 통해 메모리 오버커밋을 비활성화할 수 있습니다 2.

2 - 자신에게 너무 많은 것을 맡기지 마세요. 시스템의 총 주소 공간 커밋은 스왑 영역 + 구성 가능한 물리적 RAM 양(기본값은 50%)을 초과할 수 없습니다. 사용량에 따라 대부분의 경우 페이지에 액세스할 때 프로세스가 종료되지 않지만 적절한 상황에서는 메모리 할당 오류가 발생함을 의미합니다.

이렇게 하면 커널은 프로세스에 대해 실제로 보장할 수 있는 메모리만 응용 프로그램에 할당합니다. 반면에 오버커밋이 활성화되면 커널은 대부분의 응용 프로그램이 실제로 사용하는 것보다 더 많은 메모리를 요청한다고 가정하여 실제보다 더 많은 메모리를 할당합니다. 오버커밋이 비활성화되면 애플리케이션이 추가 메모리를 요청하지 못할 수도 있습니다. 요청하는 애플리케이션이 충돌할 수 있습니다( malloc()return 을 처리하는 방법에 따라 다름 NULL).

바라보다https://www.kernel.org/doc/Documentation/vm/overcommit-accounting

관련 정보