programing

Linux free는 높은 메모리 사용량을 표시하지만 top은 그렇지 않습니다.

nasanasas 2020. 12. 11. 08:17
반응형

Linux free는 높은 메모리 사용량을 표시하지만 top은 그렇지 않습니다.


RedHat Linux 6.2에서 실행 중이며 free -m거의 모두 8GB사용됨

             total       used       free     shared    buffers     cached
Mem:          7989       7734        254          0         28       7128
-/+ buffers/cache:        578       7411
Swap:         4150          0       4150

그러나 동시에이 top -M모든 메모리를 사용하는 프로세스를 볼 수 없습니다.

top - 16:03:34 up  4:10,  2 users,  load average: 0.08, 0.04, 0.01
Tasks: 169 total,   1 running, 163 sleeping,   5 stopped,   0 zombie
Cpu(s):  0.7%us,  0.3%sy,  0.0%ni, 98.6%id,  0.4%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  7989.539M total, 7721.570M used,  267.969M free,   28.633M buffers
Swap: 4150.992M total,    0.000k used, 4150.992M free, 7115.312M cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1863 sroot     20   0  398m  24m 9.8m S  0.3  0.3   3:12.87 App1
    1 sroot     20   0  2864 1392 1180 S  0.0  0.0   0:00.91 init
    2 sroot     20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 sroot     RT   0     0    0    0 S  0.0  0.0   0:00.07 migration/0
    4 sroot     20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    5 sroot     RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    6 sroot     RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
    7 sroot     RT   0     0    0    0 S  0.0  0.0   0:00.08 migration/1
    8 sroot     RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/1

나는 또한이 ps mem 스크립트를 시도했지만 약 400MB 메모리가 사용되고 있음을 보여줍니다.


"Mem"줄을 보지 말고 그 아래 줄을보세요.

Linux 커널은 I / O 캐시 (및 기타 중요하지 않은 버퍼를 제공하기 위해 가능한 한 많은 메모리를 사용하지만 캐시는이 용도의 대부분이 될 것입니다). 이 메모리는 요청시 프로세스에 양도됩니다. "-/ + buffers / cache"행은 I / O 캐시가 고려 된 후 조정 된 값, 즉 프로세스에서 사용하는 메모리 양과 프로세스에 사용 가능한 양 (이 경우 578MB 사용 및 7411MB 여유 공간).

"Mem"과 "-/ + buffers / cache"줄 사이에 사용 된 메모리의 차이는 캐싱을 위해 커널이 얼마나 많은 양을 사용하고 있는지 보여줍니다. I / O 캐시에서 7734MB-578MB = 7156MB. 프로세스에이 메모리가 필요한 경우 커널은 단순히 I / O 캐시의 크기를 줄입니다.


또한 첫 번째 줄이 보여 주듯이 total used free shared buffers cached Mem: 7989 7734 254 0 28 7128 -/+ buffers/cache: 578 7411

(cached [7128] + buffers [28] + free [254])를 추가하면 대략 두 번째 줄의 free [7411] 값을 얻을 수 있습니다. 7128 + 28 + 254 = 7410


캐시 된 파일이 작은 경우 다음 명령을 시도하십시오.

ps aux --sort -rss

참고 URL : https://stackoverflow.com/questions/17618737/linux-free-shows-high-memory-usage-but-top-does-not

반응형