이 문제시스템이 응답하지 않는 이유는 무엇입니까?닫다. 대답은 무슨 일이 일어나고 있는지 설명하지만 적어도 80년대 이후로 이 문제가 해결되지 않은 이유를 이해할 수 없습니다. 이론적인 이유가 있나요?
특히, 브라우저에 탭이 많을 때(Firefox와 Chrome 모두에서 발생) 눈에 띄는 성능 저하 없이 시스템이 잘 작동하지만 가끔 새 탭을 열거나 다른 브라우저를 실행하면 HDD에서 지속적인 소음이 발생하고 마우스 /keyboard 입력 응답이 너무 늦어서 콜드 재부팅을 하고 싶습니다. 이 방법으로 10분을 절약할 수 있었고 흰머리도 많이 줄었습니다.
스왑을 완전히 비활성화했는데 같은 일이 일어났습니다. 커널이 물리적 메모리 한계에 도달한 첫 번째 프로세스나 가장 큰 프로세스를 종료하면 안 되나요?
커널은 가장 빠른 해결 방법이 콜드 재부팅인 지점까지 어떤 프로세스(Firefox/Chrome은 물론이고 버그가 있거나 악의적인 프로세스라도)가 응답하지 않도록 허용해서는 안 됩니다. 이유가 무엇이든. 이유는 무엇입니까? 쓰레기를 식별할 수 없나요? 사용자가 다시 시작하고 저장되지 않은 데이터를 잃어 수동으로 모든 프로세스를 종료하도록 하는 대신 너무 "탐욕스러운" 프로세스가 자동으로 종료되어야 하지 않습니까?
SysRq 키 조합과 pkill(>10분)에 대해 알고 있지만 둘 중 하나를 사용하고 싶지 않습니다. 이 문제가 자동으로 해결되기를 바랍니다.
내가 관심 있는 것은 왜 이 문제가 Linux에서 해결되지 않는가 하는 것입니다.
답변1
스래싱 문제에 대한 해결 방법이 있습니다. 프로세스 사용자당 시스템 리소스를 자동으로 제한하려면 Linux(CentOS 및 유사)에서 pam_limits 모듈(limit.conf를 통해)을 사용하거나 FreeBSD에서 로그인과 유사한 함수 데이터베이스를 사용할 수 있습니다( login.conf). 하나의 프로세스가 모든 리소스를 차지하는 상황을 피하기 위해 메모리 사용량, 파일 및 프로세스 수, CPU 시간 등과 같은 일반적인 리소스를 제한할 수 있습니다.
일반적으로 컴파일 타임에 설정된 커널 리소스 외에는 기본적으로 제한이 설정되지 않습니다.
Linux에서 제어 그룹(cgroup)을 활성화하면 복잡성으로 인한 비용을 보다 효율적으로 제어할 수 있습니다(예:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/ch01)