/proc/meminfo를 통해 사용 가능한 RAM을 측정하려면 ramdisk(initrd)를 사용하세요.

/proc/meminfo를 통해 사용 가능한 RAM을 측정하려면 ramdisk(initrd)를 사용하세요.

initrdPXE를 통해 디스크 이미지를 부팅했는데 램디스크의 전체 시스템 이었습니다 . 시스템의 실제 사용 가능한 메모리(버퍼 및 파일 시스템 캐시 제외)를 측정하고 싶습니다. MemFree, Buffers, Cached에 값을 추가하면 된다고 들었습니다 /proc/meminfo. 기존 시스템의 경우 이는 정확한 결과를 제공합니다.

그러나 내 램디스크 설정으로는 정확한 결과를 얻을 수 없습니다. 램디스크에서 사용하는 메모리가 "캐시됨" 값에 추가된다고 가정합니다.

[root@node1 ~]# cat /proc/meminfo
MemTotal:        8173700 kB
MemFree:         7443696 kB
Buffers:               0 kB
Cached:           650236 kB
SwapCached:            0 kB
MemCommitted:          0 kB
VirtualSwap:           0 kB
Active:            27156 kB
Inactive:         632204 kB
Active(anon):       4636 kB
Inactive(anon):     4616 kB
Active(file):      22520 kB
Inactive(file):   627588 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:          9156 kB
Mapped:             8712 kB
Shmem:               128 kB
Slab:              38548 kB
SReclaimable:      29420 kB
SUnreclaim:         9128 kB
KernelStack:         536 kB
PageTables:         1268 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4086848 kB
Committed_AS:      51216 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      288032 kB
VmallocChunk:   34359448036 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       10240 kB 
DirectMap2M:     8378368 kB

불행하게도 이는 내가 계산하려는 두 측정항목인 %MemUsed 및 AmountMemFreeActual에 대해 잘못된 값을 제공합니다. Ramdisk의 경우 "캐시" 값은 적어도 부분적으로는 재활용이 불가능하므로 실제 사용 가능한 메모리를 계산하는 데 사용할 수 없습니다.

둘 다 올바르게 계산하려면 램디스크의 메모리 사용량을 알아야 하며, 단순히 "캐시" 값을 사용할 수는 없을 것 같습니다. 여기에는 캐시된 다른 파일 시스템 데이터도 포함될 수 있기 때문입니다.

내가 아는 한 그것은 회수 불가능한 메모리이기 때문에 두 지표 모두에서 램디스크 메모리 사용량을 제외하는 것이 바람직합니다. 어디를 봐야할지 아이디어가 있나요?

편집: "무료"(@answer1)는 동일한 오류 값을 제공합니다. 어쨌든 "free" 출력의 "free" 값은 오해의 소지가 있습니다. "여유" 메모리는 일반적으로 "여유" + "버퍼" + "캐시"입니다. 내 문제는 일반적으로 캐시된 파일 시스템 데이터와 달리 램디스크를 회수 불가능한 메모리로 회수할 수 없다는 것입니다.

답변1

free사용 가능한 RAM의 양을 결정하기 위해 이 명령을 사용할 수 없는 이유가 있습니까 ?

# free output in MBs
$ free -m
             total       used       free     shared    buffers     cached
Mem:          7800       6724       1075          0        397       1952
-/+ buffers/cache:       4374       3425
Swap:         5823         27       5796

위 이미지를 보면 버퍼와 캐시가 없을 경우 약 3.4GB 정도의 여유 공간이 있는 것을 알 수 있습니다.

관련 정보