저는 Linux 4.15를 사용하고 있는데 RAM 사용량이 최고조에 달할 때 이런 일이 여러 번 발생합니다. 전체 OS가 응답하지 않고 정지되고 쓸모 없게 됩니다. 제가 생각하기에 이 기능이 작동한다고 생각되는 유일한 것은 많이 사용되는 디스크(기본 시스템 파티션)입니다.
이 문제가 OS 특정인지, 하드웨어 특정인지, 구성 특정인지는 알 수 없습니다.
어떤 아이디어가 있나요?
답변1
Linux가 응답하지 않는 원인은 무엇입니까?
사용 가능한 RAM을 과도하게 사용하여 많은 교체가 발생하면 확실히 이 문제가 발생합니다. 기계식 HDD의 랜덤 액세스 I/O에는 읽기/쓰기 헤드를 움직여야 하며, 이는 초당 약 100개의 검색만 수행할 수 있다는 점을 명심하십시오.
RAM을 "너무 많이" 오버커밋하면 Linux는 종종 점심을 완전히 가져가게 됩니다. 회전 디스크와 8GB RAM도 있습니다. 여러 소프트웨어를 사용하는 동안 메모리 누수가 발생했습니다. 즉, 메모리 사용량은 시간이 지남에 따라 계속 증가하고 절대 줄어들지 않으므로 이를 제어할 수 있는 유일한 방법은 소프트웨어를 중지했다가 다시 시작하는 것입니다. 이 기간 동안의 내 경험에 따르면 3GB 이상의 스왑을 생성하면 10분 이상의 지연이 발생해도 별로 놀랍지 않습니다.
스왑 공간이 3GB를 초과하는 경우 모든 경우에 이 내용이 표시되는 것은 아닙니다. 이론은 핵심 개념이 다음과 같다는 것이다.이기다. 반면, 두 개의 서로 다른 작업 세트 간에 전환을 시도하고 100MB/s 속도로 3GB를 입출력해야 하는 경우 완벽하게 최적화된 I/O 패턴을 사용하더라도 최소 60초가 소요됩니다. 실제로 I/O 패턴은 최적과는 거리가 멀습니다.
이런 어려움을 겪은 후 스왑 공간을 2GB(이전보다 몇 배 작은 크기)로 다시 포맷했기 때문에 시스템이 딥 스왑을 할 수 없게 되었습니다. mkswap
선택적 크기 매개변수가 필요하므로 파티션 크기를 조정하지 않고도 이 작업을 수행할 수 있습니다 .
대략적인 균형은 메모리가 부족하여 프로세스가 종료되는 것과 시스템이 너무 오랫동안 정지되어 포기하고 다시 시작되는 것 사이에 있습니다. 4GB 스왑 파티션이 너무 큰지는 모르겠습니다. 아마도 수행 중인 작업에 따라 다를 것입니다. 디스크 변동이 시작되면 기록하고, 메모리 사용량을 확인하고 그에 따라 대응하는 것이 중요합니다.
다중 프로세스 애플리케이션의 메모리 사용량을 확인하는 것은 어렵습니다. 공유 메모리를 이중으로 계산하지 않고 각 프로세스의 메모리 사용량을 보려면 , 및 를 sudo atop -R
누른 다음 PSIZE 열을 볼 수 있습니다. . 를 사용하면 모든 Firefox 프로세스의 PSS와 전체 PSS 줄이 표시됩니다. 이는 Firefox 또는 Chrome 기반 브라우저의 총 메모리 사용량을 측정하는 올바른 방법입니다. (단, 개별 탭을 표시하는 메모리 사용량을 표시하는 브라우저별 기능도 있습니다.)Mmsmem
smem -t -P firefox
답변2
AFAIK, bloatware로 인해 OS가 응답하지 않게 되어서는 안 되므로 bloatware가 문제의 근본 원인이라고 생각하거나 받아들이지 않을 것입니다.
당신은 이것을 좋아하지 않을 것이지만 내 생각에는 bloatware예귀하의 문제입니다(메모리 문제인지 디스크 문제인지는 확실하지 않지만). 불행하게도 Linux 커널은 높은 메모리 부족 상황을 잘 처리하지 못하며 메모리가 소진되면 본질적으로 재부팅이 필요한 것으로 알려져 있습니다. 귀하의 문제가 자원 고갈이라고 생각하게 만드는 세 가지 이유는 다음과 같습니다.
- 루트(/) 및 DATA의 디스크 공간이 거의 가득 찼습니다. DATA에 대한 귀하의 목적이 무엇인지 잘 모르겠지만 이전에는 루트 파티션의 크기가 너무 작게 조정되어 시스템이 실행되지 않는 문제가 있었습니다.
- 메모리 부족이 심해 RAM이 거의 가득 찼습니다. RAM이 꽉 차기 시작하면 페이지 폴트가 발생하기 시작합니다. 페이지 오류는 커널이 프로세스에 충분한 메모리를 할당할 수 없어 일부 시스템의 훨씬 느린 스왑 공간을 사용해야 할 때 발생합니다. 이는 우리의 최종 관찰로 이어집니다:
- 스왑 공간이 거의 가득 찼습니다. RAM과 스왑 영역이 거의 꽉 찼기 때문에 시스템에서 메모리 부족 현상이 분명히 발생하고 있습니다.
기본적으로 이 세 가지를 합치면 시스템에 대부분의 작업을 수행하기에 충분한 리소스가 없습니다. 불행하게도 Linux는 Windows의 NT 커널과 비교하여 메모리 부족 상황을 잘 처리하지 못하지만 그런 것 같습니다. 더 많은 토론을 찾을 수 있습니다.이 Reddit 게시물에서그리고 링크된 메일링 리스트.
문제를 해결하는 방법에 관해서는 스왑 크기를 늘리는 것이 좋은 생각이지만 디스크 공간이 부족하여 문제가 될 것입니다. Minecraft 서버에 사람이 많지 않은 이상 메모리를 1024m 정도로 줄이는 것이 안전하다고 생각합니다. (저는 개인적으로 10명 정도에서 1024m를 사용하는데 아주 잘 작동합니다.) 또한 Minecraft 서버에 수도꼭지나 종이가 더 성능이 좋은 경향이 있으므로 이를 사용하겠습니다.
행운을 빌어요!
답변3
의 출력은 무엇입니까 free -m
? 얼마나 많은 메모리를 사용하는지 모른다면 가지고 있는 메모리의 양은 아무 의미가 없습니다. 스왑 공간이 얼마나 사용되고 있는지 알고 싶습니다.
그래도 당신이 자신의 질문에 대답했다고 생각합니다. 브라우저에 "많은 탭"이 열려 있으면 절대로 닫지 않으면 시스템 속도가 확실히 느려질 것입니다. 시스템이 정지될 때 계속해서 메모리를 소모하게 되기 때문입니다. 한 번에 몇 개나 열려 있습니까?
이는 "매우 복잡한 UML 다이어그램에서 매우 큰 다이어그램 생성"과 같은 메모리 집약적인 다른 작업으로 인해 시스템이 정지되는 경우에도 의미가 있습니다. 차트를 생성할 때 시스템 속도가 확실히 느려지므로 이는 놀라운 일이 아닙니다.
확실히 이것이 시스템이 작동하는 방식인 것처럼 들립니다. 여기서 뭔가를 놓치고 있습니다.
그런데 시스템이 응답하지 않을 때 하드 드라이브 통계는 중요하지 않습니다. 메모리 부족이 거의 항상 원인이기 때문입니다.
답변4
htop 출력은 RAM에 대한 수요가 용량(총 RAM + SWAP)보다 높다는 것을 보여줍니다. 따라서 가장 먼저 고려해야 할 사항은 RAM 사용량을 줄이거나 RAM 가용성을 높이는 것입니다.
최신 Firefox 버전은극도로창/탭에 프로세스와 메모리 공간이 제공되는 방식으로 인한 리소스 부족. 아이디어는 전체 브라우저를 중단시키는 탭 충돌을 방지하는 것입니다. 이게 가격만큼 가치가 있는 걸까요? 누구든지 말해 줄 수 있나요... 어쨌든, 위의 이유로 Pentium 4 마더보드가 2GB RAM만 지원했기 때문에 비슷한 문제가 있었습니다. 가능한 메모리 고갈 충돌을 방지하기 위해 예비 SSD에 약 800M의 스왑 공간을 추가했습니다. 이는 분명히 가능한 한 적게 사용하기 위한 것입니다. 커널이 메모리 페이지를 얼마나 교환하는지를 결정하는 swappability라는 설정을 변경하여 이 작업을 수행했습니다. 몇 가지 유용한 명령은 다음과 같습니다.
현재 교환 여부를 확인하십시오.cat /proc/sys/vm/swappiness
이는 대략 60 정도의 결과를 제공할 가능성이 높으며, 이는 부하가 적은 시스템에서 최대 성능을 발휘하기에는 상당히 높은 수치입니다. 분명히 이것은 비생산적이므로 예를 들어 sysctl vm.swappiness=1
시스템이 실행되는 동안 명령을 사용하여 설정을 변경할 수 있습니다.
이러한 변경 사항을 저장하려면 이 파일을 찾아야 합니다 /etc/sysctl.conf
. 해당 파일에서 값을 변경하거나 줄을 추가합니다 vm.swappiness=1
.
이는 귀하의 상황에 대한 해결책은 아니지만 실행 가능한 해결 방법이어야 합니다.
생산 직원 https://askubuntu.com/questions/103915/how-do-i-configure-swappiness
추가 설명을 포함하여 위 답변의 출처입니다. 내 상황에서 이 기사가 매우 도움이 되었다고 생각합니다.