initrd
PXE를 통해 디스크 이미지를 부팅했는데 램디스크의 전체 시스템 이었습니다 . 시스템의 실제 사용 가능한 메모리(버퍼 및 파일 시스템 캐시 제외)를 측정하고 싶습니다. 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 정도의 여유 공간이 있는 것을 알 수 있습니다.