캐싱 외에 Linux 커널은 또 어떤 용도로 많은 메모리를 사용합니까?

캐싱 외에 Linux 커널은 또 어떤 용도로 많은 메모리를 사용합니까?

컴퓨터가 너무 느린 것 같아요. 에 따르면 freeRAM이 약 200M 정도 남았고 1GB 이상을 교체해야 합니다. 캐싱을 위해 메모리를 사용하는 것이 좋은 일이라는 것은 알지만 실제로는 RAM이 부족한 것 같습니다.

root@desktop:/proc free -h
               total       used        free      shared  buff/cache   available
Mem:           3.9G        3.4G        132M         44M        378M        213M
Swap:          8.0G        1.2G        6.7G

smem -tk보고서에 따르면 애플리케이션은 최대 2GiB(RSS 열)를 사용합니다. smem -wk사용된 모든 메모리를 고려합니다. 분명히 커널은 캐싱이 아닌 1.8GiB를 사용합니다.

root@desktop:/proc smem -wk
Area                           Used      Cache   Noncache 
firmware/hardware                 0          0          0 
kernel image                      0          0          0 
kernel dynamic memory          1.9G      74.3M       1.8G 
userspace memory               1.8G     250.9M       1.6G 
free memory                  173.9M     173.9M          0 

이 동작이 예상됩니까? 그렇다면 커널은 어떤 작업에 그렇게 많은 메모리를 필요로 합니까?

답변1

다음을 시도해 볼 수도 있습니다.

사용남자 이름시간 경과에 따른 컨텍스트 스위치 및 irq 사용량을 보고합니다. Sar는 훌륭하지만 들어본 적이 없는 시스템 모니터링 도구입니다. 하루 동안 실행하고 다양한 보고서를 사용하여 이상 현상을 찾아보세요.

속도:

sysstat 패키지를 설치합니다. 다음과 같이 cron 작업을 설정합니다( /etc/cron.d/이러한 파일이 있는지 확인).

* * * * * root /usr/lib64/sa/sa1 -S XALL 10 6

이렇게 되면 많은 데이터가 생성됩니다.-- 하루 약 300MB. 시스템 통계의 스냅샷을 찍습니다.6초마다. ("10 6"을 "2 30"으로 변경하면 빈도를 분당 2회로 줄일 수 있습니다)

캡처 빈도를 변경하는 경우 해당 날짜의 파일을 삭제해야 합니다 /var/log/sa/sa$(date +%d). 그렇지 않으면 보고서가 손상될 수 있습니다.

좋습니다. 데이터를 캡처한 후 다음을 시도해 보세요(힌트: 항상 파이프를 통과하세요 less).

sar -q

로드 평균 및 실행 대기열 크기를 가져옵니다. 이 시간이 낮으면 IO 대기 시간을 살펴보세요.

sar -P ALL

%iowait에서 점프가 보이지 않거나 %idle에서 딥이 보이지 않으면 컨텍스트 스위치를 확인하십시오.

saw -w

대부분의 유휴 시스템에서는 초당 500개의 컨텍스트 전환이 정상입니다.

-s <hh:mm:ss>활성 파일을 지정하고 시작 및 종료 시간( 및 각각 -e <hh:mm:sss>)과 선택적 간격 -i <secs>(cron 작업에서 설정한 캡처 해상도보다 커야 함)을 지정하여 sar 보고서를 제한할 수 있습니다.

예:

sar -f /var/log/sa/sa$(date +%d -d yesterday) -s 09:15:00 -e 12:15:00 -i 600

CPU 요약 정보는 어제 오전 9시 15분부터 12시 15분까지 10분 간격으로 제공됩니다.

더 많은 것이 있습니다... 훨씬 더 많은 것이 있습니다. 이 정보를 얻을 수 있습니다 man sar.

답변2

free -h출력 명령 편집에 해당 줄이 누락된 이유가 무엇인지 모르겠습니다 -/+ buffers/cache. 중요합니다. 어쨌든 우리는 계속할 수 있습니다.

"Free" 열(Mem: 행) > 0인 한 실제로 RAM이 부족하지는 않습니다.절대 사용되지 않는 메모리. Linux는 얻을 수 있는 모든 RAM을 캐시로 사용하는 것으로 알려져 있습니다(더 나은 성능을 기대하면서).

스왑 부분은 전체 진실을 말하지 않습니다. 한 번만 실행되고 한동안 사용되지 않았기 때문에 많은 코드 + 데이터를 디스크로 스왑하는 것이 일반적입니다. Linux의 또 다른 부분은 RAM 성능에 대한 탐욕을 보여줍니다. 즉, 중요하지 않을 수 있는 항목을 빠르게 제거합니다(성능 측면에서도 마찬가지입니다). 조정 가능하지만(sysctl vm.swappiness) 대부분의 배포판은 기본적으로 "스왑 없이 스왑"합니다.

사용 가능한 RAM 부족으로 인해 속도가 느리다는 가정을 확인하는 중요한 요소는 현재 디스크로의 스왑 인 또는 아웃이 일어나고 있는지 여부입니다. 대부분의 경우 느린 현상을 컴퓨터에서 미친 듯이 깜박이는 디스크와 연관시키기 쉽습니다. 그렇지 않으면 실행하여 top시간 경과에 따른 교환 데이터의 변화를 확인하세요. 더 간단한 것은 vmstat 1초당 교환 IO 데이터를 직접 인쇄하는 것입니다(swap si/so).

관련 정보