운영 체제용으로 예약된 RAM

운영 체제용으로 예약된 RAM

나는 많은 개방형 애플리케이션(예: PhpStorm, Android Studio, Chrome, Firefox, FileZilla, Evince, SublimeText)을 동시에 사용합니다.

하드웨어가 한계에 도달하는 경우가 점점 늘어나고 있습니다. 작업 표시등이 켜지고, 하드웨어가 작동하는 것 같은 느낌이 들고, 시스템이 매우 느려지고, 몇 분이 지나야 마우스를 움직이거나 아무것도 할 수 없고, 일부 프로그램이 충돌한 후. 때때로 나는 몇 가지 킬을 수행하여 터미널이 열릴 때까지 기다려야 합니다.

운영 체제가 정지되는 것을 방지하기 위해 특정 양의 RAM을 예약할 수 있는 방법이 있습니까? 다른 애플리케이션이 약간 느려지더라도 빠르고 반응성이 뛰어난 운영 체제가 필요합니다.

저는 Ubuntu를 사용하고 있으며 SSD 드라이브의 홈 디렉터리에 약 5GB의 여유 공간이 있습니다.

free -m:

              total        used        free      shared  buff/cache   available
Mem:           7,8G        4,4G        1,6G        204M        1,8G        2,9G
Swap:          2,0G        1,7G        344M

편집하다:

composer updateSymfony 프로젝트용 PHPStorm에서 작업 하는 데 필요하기 때문에 스왑용 2GB RAM을 수동으로 설정했습니다 .

감사해요

답변1

가장 간단한 대답은 스왑 공간을 줄이는 것입니다(참조이것은 또 다른 질문입니다).

설명하다:

RAM이 가득 차면 커널은 스왑 공간을 더 자주 사용하기 시작하고(훨씬 느린 디스크 드라이브에서) 응용 프로그램은 메모리에 액세스하기 위해 더 오랜 시간을 기다려야 하므로 해당 응용 프로그램의 성능이 저하됩니다. 스왑 공간이 가득 차고 커널이 애플리케이션을 종료하기 시작할 때까지(OOM이라고도 불리는 메모리 부족 오류) 성능 저하가 계속됩니다. 따라서 스왑 공간이 클수록 애플리케이션 성능 저하가 더 오랫동안 발생합니다. 스왑 크기를 줄이면 커널이 애플리케이션을 종료하는 데 걸리는 시간이 줄어들어 일부 메모리가 확보됩니다.

불행하게도 데스크탑 환경(마우스 커서와 창 표시를 담당)은 브라우저와 마찬가지로 "응용 프로그램"으로 간주됩니다. 따라서 커널은 데스크탑 환경을 다른 응용 프로그램과 구별할 수 없으며 "데스크탑 환경 메모리를 교체해서는 안 된다"와 같은 결정을 내리고 다른 응용 프로그램보다 응답성이 더 뛰어나도록 만듭니다.

다른 답변은 다음과 같습니다.

  • RAM을 많이 사용하는 애플리케이션을 내부에 배치 cgroup하고 메모리 사용을 제한합니다.
  • 추가 메모리 구입
  • ZRAM 사용

이 슈퍼유저의 답변상황과 가능한 해결 방법이 자세히 설명되어 있습니다.

답변2

시스템의 교체 가능성과 캐시 압력을 조정하는 것을 고려해 보겠습니다.

sysctl vm.swappiness=XX가 0에서 100 사이인 경우 실행하여 교환성을 조정할 수 있습니다 . 이 설정은 사용 가능한 RAM 스왑 비율이 사용되기 시작하면 변경됩니다. swappiness가 0이면 시스템은 RAM이 부족할 때까지 스왑하지 않으며, 100으로 설정하면 항상 스왑한다는 의미입니다. 이것은 지나치게 단순화된 설명이지만 이것이 기본입니다. 일반적으로 저는 10의 교환성을 사용합니다.

cache_pressure시스템이 inode 및 dentry(파일 시스템) 데이터를 캐시하는 빈도를 결정하는 이를 조정할 수도 있습니다 . 이는 종종 성능 집약적이며 캐싱할 가치가 있습니다. 0에서 100 사이의 값은 시스템이 캐시하도록 선택할 양을 나타냅니다.

이것이 Jason C.에게 도움이 되기를 바랍니다.

답변3

악명 높은 "메모리 부족"(OOM) 오류가 발생했습니다. 이 문제는 16년 넘게 지속되어 왔으며 2019년 중반이 되어서야 버그가 주목을 받기 시작했으며 그 이후로는 확실한 수정이 이루어지지 않았습니다. 이는 Linux의 나쁜 캐싱 습관, 너무 많은 RAM을 과도하게 사용하고 실제로 가지고 있는 재활용 불가능한 캐시/버퍼의 양을 알 수 없기 때문입니다.

그러나 OOM 오류가 발생하지 않도록 놀라운 효과를 발휘할 수 있는 몇 가지 간단한 방법이 있습니다.누오항.

OOM이 발생하는 이유를 알아보고 이 링크에서 ppa를 다운로드하여 설치하세요. 이것이 버그를 고치지는 못하지만, 지금 당장 할 수 있는 최선의 방법입니다.

또한 더 많은 로드로 실행하는 각 소프트웨어는 더 많은 RAM을 사용하므로 더 적은 RAM을 사용하는 데스크탑 환경을 사용하는 것을 고려하십시오. 또한 Gnome 3은 Mate(GTK 3를 기반으로 한 Gnome 2의 부활)보다 훨씬 덜 강력하지만 Cinnamon 다음으로 가장 강력한 버전이며 KDE와 Mate가 그 뒤를 따릅니다.

KDE의 1.3GB 이상의 RAM(7년 전의 오래된 Gnome 3이 그만큼 많은 메모리를 차지했는데 지금은 더 많아져야 합니다)과 달리 저는 약 600MB의 RAM만 차지하는 XFCE를 사용하는 것을 권장합니다.

브라우저에서도 마찬가지입니다. 모든 Chrome/Chromium 기반 브라우저는 리소스 집약적입니다(Windows의 Edge 제외). Electron 또는 JavaScript 기반 "앱"은 수행할 수 있는 작업을 수행하기 위해 너무 많은 RAM을 소비하거나 매우 적은 기능(예: 완전한 기능을 갖춘 텍스트)을 달성하기 위해 많은 RAM을 사용하는 모든 앱을 피하십시오. 편집기는 30MB 이상을 사용해서는 안 됩니다. RAM 등).

duthils가 말한 것은 좋지만(ZRAM 및 CGroups) 때때로 소프트웨어 최적화를 원하지 않는 나쁜 개발자를 수용하기 위해 더 많은 RAM을 구입하는 것은 적합한 솔루션이 아닙니다.

또한 Firefox의 "자동 탭 삭제" 확장 프로그램과 Chromium 기반 브라우저가 정말로 필요한 경우 사용할 수 있는 매우 강력한 Chromium 기반 브라우저인 Vivaldi와 같은 브라우저용 탭 행거를 고려하세요. 기본적으로 수동 탭 삭제 기능이 있습니다.

당신은 개발자이므로 사용하지 않는 RAM을 기억하십시오.아니요RAM 낭비(반대의 잘못된 가정은 거의 항상 웹 개발자에 의해 만들어집니다.)

이는 대부분의 캐시 RAM이 실제로 회수 가능한 RAM이 아닌 경우 특히 그렇습니다. 이는 OOM 문제가 발생하는 이유입니다. 일반적으로 캐시가 많이 남아 있는 캐시가 아직 남아 있는지 확인하기 위해 top"사용 가능한" RAM을 보면 쉽게 확인할 수 있습니다 .echo 3 > /proc/sys/vm/drop_caches

관련 정보