시스템이 지연되고 로드가 심한 경우 RAM 사용량이 75%를 넘지 않습니다.

시스템이 지연되고 로드가 심한 경우 RAM 사용량이 75%를 넘지 않습니다.
Linux matrix 5.15.2-xanmod1-1 #1 SMP Wed, 17 Nov 2021 02:36:25 +0000 x86_64 GNU/Linux
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                           
├─sda1 btrfs        swap  477dd81e-6a88-4987-b830-47bea1ec1f5d       0    87% /swap
└─sda2 btrfs        root  2067df62-8ff6-4b52-9814-e4d5d8cf1577   55.3G    48% /
zram0                                                                         [SWAP]
               total        used        free      shared  buff/cache   available
Mem:           1.8Gi       1.2Gi       111Mi        56Mi       557Mi       446Mi
Swap:          5.5Gi       1.6Gi       3.9Gi

vm.swappiness = 10

따라서 내 문제는 시스템에 부하가 걸릴 때, 즉 Firefox에 너무 많은 탭이 열려 있거나 vscode와 Firefox를 동시에 실행하면 시스템이 매우 느려진다는 것입니다.

그런데 RAM 사용량을 확인해 보니 75%에 머물고 그 이상으로 올라가지 않습니다. 따라서 사용되지 않은 RAM의 25%가 있습니다.

교체하기 전에 더 많은 메모리를 사용하게 하려면 어떻게 해야 합니까?

답변1

첫째, 속도 저하가 full 때문이라고 가정 RAM하지만 이것이 반드시 근본 원인은 아닙니다. 이론적으로는 숫자가 많거나 I/OCPU가 너무 많을 것으로 예상하는 등 속도 저하를 유발할 수 있는 다른 원인과 병목 현상이 있어야 합니다. processes원인이 메모리라고 판단하기 전에 먼저 다른 원인을 배제해야 합니다. 다음과 같은 명령을 사용할 수 있습니다 vmstat.

$ vmstat -w 1 
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 0  0            0    120951240         9412      8313416    0    0     0     2    0    0   0   0 100   0   0
 0  0            0    120951248         9412      8313416    0    0     0     0  143  210   0   0 100   0   0
 0  0            0    120950980         9412      8313416    0    0     0    20  116  238   0   0 100   0   0
 0  0            0    120950980         9412      8313416    0    0     0     0  180  315   0   0 100   0   0
 0  0            0    120951232         9412      8313416    0    0     0     0  145  285   0   0 100   0   0

( ) 또는 ( ) 섹션 아래에 상대적으로 높은 숫자가 표시되면 swap시스템이 메모리 페이지를 교체하고 있음을 나타낼 수 있습니다. 값이 낮으면 속도가 느려지는 데 다른 이유가 있을 수 있습니다. , 또는 ).siswap insoswap outRAMswapprocsiocpu

swap in/out에 더 높은 값이 있다고 가정하면 vmstat병목 현상이 실제로 RAM채워지고 있음을 나타냅니다.

swappiness에서 나온 설명입니다리눅스 커널 문서:

교환성

이 컨트롤은 커널이 메모리 페이지를 얼마나 적극적으로 교환하는지 정의합니다. 값이 높을수록 공격성이 증가하고, 값이 낮을수록 교환량이 감소합니다. 값이 0이면 사용 가능한 페이지 및 파일 지원 페이지 수가 해당 영역의 최고 수위 표시보다 작아질 때까지 스왑을 시작하지 않도록 커널에 지시합니다.

기본값은 60입니다.

먼저, swappiness값( 10)이 기본값( 60)보다 훨씬 낮다는 점에 유의하세요.

firefox탭이 많이 있다고 가정해 보겠습니다 . 대부분은 유휴 상태이고 많이 사용되지 않습니다. 낮 으면 swappiness기계는 가능한 한 많은 데이터를 RAM에 유지하려고 시도하며 RAM이 나올 때까지 교체를 피합니다.진짜새 페이지를 위해 일부 메모리를 비워야 합니다. 이는 시스템이 필요할 때만 스왑을 시작하고 너무 늦게 시작하여 이전 메모리 페이지가 스왑될 때까지 약간의 지연이 발생할 수 있음을 의미합니다.

이 값 이 swappiness더 높으면 시스템은 이전 메모리 페이지와 사용 가능한 메모리 페이지를 더 자주 조기에 교체하여 새 페이지에 더 많은 메모리를 사용할 수 있도록 합니다. 이 탭에 다시 액세스하면 디스크에서 RAM으로 메모리가 페이징되므로 속도가 느려질 수 있지만 이러한 탭을 자주 사용하지 않으므로 스왑 상태로 유지하고 새 프로세스를 위해 저장하는 것이 더 많은 여유 메모리를 확보하는 것이 좋습니다. 페이지.

swappiness메모리가 한계에 도달할 때뿐만 아니라 오래되고 사용되지 않는 메모리 페이지를 더 자주 교체하도록 페이지 수를 늘리는 것이 좋습니다 .

관련 정보