"free" 명령이 올바른 값을 표시하지 않습니다.

"free" 명령이 올바른 값을 표시하지 않습니다.

우리 컴퓨터 중 하나인 redhat 7.2에서 매우 이상한 문제가 발생했습니다.

0이 무료인데 총 47개 중 43개가 사용되는 것이 어떻게 가능합니까?

[root@master ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:             47          43           0           0           3           3
Swap:             7           5           1
[root@master ~]# free -k
              total        used        free      shared  buff/cache   available
Mem:       49552508    45570336      296216      237396     3685956     3510224
Swap:       8093692     6053196     2040496

에서 top:

top - 17:34:40 up 10:39,  2 users,  load average: 0.77, 0.81, 0.83
Tasks: 789 total,   1 running, 788 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.7 us,  0.4 sy,  0.0 ni, 97.7 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 49552508 total,   831304 free, 45669236 used,  3051968 buff/cache
KiB Swap:  8093692 total,  2056872 free,  6036820 used.  3412568 avail Mem

답변1

칼럼을 잘못 읽으셨습니다. 첫 번째 출력에서는 여유 메모리, 즉 새 애플리케이션에 사용할 수 있는 RAM(스왑 사용 없음)이 available열에 표시됩니다. 이는 3Gb 또는 3510224Kb를 올바르게 보고합니다.

47Gb - 43Gb = (반올림 오류 있음) 3Gb

Linux는 디스크 캐싱을 위해 사용되지 않은 메모리를 빌려옵니다., 이것이 free해당 열에 0이 표시되는 이유입니다. 그러나 다른 애플리케이션이 디스크 캐시에 할당된 메모리를 요청하면 즉시 해제됩니다.

관련 정보