상위 메모리 요약 및 프로세스 RES 합계가 합산되지 않습니다.

상위 메모리 요약 및 프로세스 RES 합계가 합산되지 않습니다.

보고된 메모리 사용량을 이해하는 데 어려움을 겪고 있습니다 top. 메모리 요약 섹션에는 다음이 나열됩니다. 의 모든 숫자 MiB.

MiB Mem :  31884.1 total,  13562.7 free,   7881.9 used,  10439.4 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  22665.9 avail Mem

그러나 열 값을 합산하면 요약에 보고된 값 RES과 합산되지 않습니다 . 의 used합 은 RES입니다 15225.7. 을 추가하면 을 얻습니다 . 따라서 이제 의 합은 의 합보다 큽니다 .used7881.9usedbuff/cache18321.3usedbuff/cacheRES

더 많은 발견:

  • top메모리 요약은 거의 동일합니다 . free아래는 free -m출력입니다.
               total        used        free      shared  buff/cache   available
Mem:           31884        7881       13555         886       10446       22658
Swap:           2047           0        2047

보시다시피, used, free, buff/cache, 및 available모두 거의 동일한 값을 갖습니다.

  • free필드를 추가 하면 출력 에서 used​​. 이것은 단지 합계 가 아닙니다 ! 그러나 이는 요약 관점에서 의 출력과 일치 에 동의하므로 이는 예상됩니다 .sharedbuff/cache19213RESfreetop

  • 문서에 개인 및 공유 부분의 각 프로세스에 대한 메모리 요소가 나열되어 있으므로 RESsum(from )이 , 및 (from ) 의 top합계와 같거나 가까울 것으로 예상합니다 .usedsharedbuff/cachefreetop

사분면 다이어그램 메모리 유형

      RES  - anything occupying physical memory which, beginning with
            Linux-4.5, is the sum of the following three fields:
            RSan - quadrant 1 pages, which include any
                   former quadrant 3 pages if modified
            RSfd - quadrant 3 and quadrant 4 pages
            RSsh - quadrant 2 pages
  • 시스템 캐시를 지울 때마다 RES합계는 항상 예상 합계보다 큽니다. 시스템 캐시를 지우는 방법은 다음과 같습니다 sudo sync && sudo sysctl -w vm.drop_caches=1. 흥미롭게 RES도 그 합은 18175.2! 아래는 top캐시를 지운 후의 메모리 요약 입니다 . 예상한 대로 상당한 감소를 확인할 수 있습니다 buff/cache. 하지만 used분야가 크게 늘어날 거라고 는 예상하지 못했습니다 ! 출력에서 used, , 및 의 합 shared은 입니다. 이는 전체보다 약 5GiB 적습니다!buff/cachefree13533RES
MiB Mem :  31884.1 total,  19358.2 free,   8795.6 used,   3730.2 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  21626.5 avail Mem
  • 시도했지만 smem이들 값 중 어느 것도 , 또는 !의 합과 일치하지 않습니다.topfreeRES

나는 이 숫자를 이해할 수 없다! 그리고 저는 소프트웨어 응용 프로그램으로서 제가 작성 중인 응용 프로그램에 실제로 얼마나 많은 메모리가 필요한지 전혀 모르고 메모리 문제가 발생하면 조사할 수도 없습니다! 나는 여기서 완전히 길을 잃었습니다. 누군가 무슨 일이 일어나고 있는지 알려줄 수 있다면 크게 감사하겠습니다!

다른 질문도 살펴봤지만 실제로 문제가 해결된 것은 없습니다. 좋다:"top"의 메모리 사용량이 합산되지 않는 이유는 무엇입니까?.이것다행히 그들의 숫자는 잘 확인되었습니다. ..잠깐만 기다려도 여전히 명확한 답변을 찾을 수 없습니다!

또한 다음 내용을 읽어보세요:top 명령의 총 RES가 사용된 메모리와 일치하지 않는 이유는 무엇입니까? [반복하다]이것도 마찬가지 (Linux에서 메모리 사용량을 올바르게 결정) 질문에 답해 보세요.

관련 정보