시스템 모니터를 보니 메모리의 48%만 사용하고 있는 것으로 나타났습니다. gkrellm과 동일합니다. 그러나 모든 명령줄 유틸리티는 다르게 보고합니다. 이것은 free 및 /proc/meminfo의 출력입니다. 내가 생각할 수 있는 유일한 이유는 그래픽 유틸리티가 캐시 수를 무시한다는 것입니다. 하지만 여전히 물리적 메모리에 저장되어 있지 않습니까? 둘(그래픽 및 명령줄) 사이에 왜 그러한 차이가 있습니까? 캐싱이 중요하지 않나요?
미리 감사드립니다
무료로
total used free shared buffers cached
Mem: 1915936 1831836 84100 0 11280 874072
Swap: 3866620 146944 3719676
고양이/proc/meminfo
MemTotal: 1915936 kB
MemFree: 81740 kB
Buffers: 11900 kB
Cached: 869224 kB
SwapCached: 4128 kB
Active: 722020 kB
Inactive: 887300 kB
Active(anon): 669976 kB
Inactive(anon): 235424 kB
Active(file): 52044 kB
Inactive(file): 651876 kB
Unevictable: 50812 kB
Mlocked: 0 kB
SwapTotal: 3866620 kB
SwapFree: 3719680 kB
Dirty: 460 kB
Writeback: 0 kB
AnonPages: 776964 kB
Mapped: 52052 kB
Shmem: 126384 kB
Slab: 77824 kB
SReclaimable: 37580 kB
SUnreclaim: 40244 kB
KernelStack: 2800 kB
PageTables: 33836 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 4824588 kB
Committed_AS: 2622452 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 560312 kB
VmallocChunk: 34359122920 kB
HardwareCorrupted: 0 kB
AnonHugePages: 118784 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 12288 kB
DirectMap2M: 1949696 kB
답변1
/proc/meminfo의 세부 사항은 다음과 같습니다.
MemTotal: 사용 가능한 총 메모리 양(예: 물리적 메모리에서 일부 예약된 비트 및 커널 바이너리 코드를 뺀 값)
MemFree: LowFree+HighFree의 합계입니다(전체 통계).
메모리 공유: 호환성상의 이유로 0이지만 항상 0입니다.
SwapCache: 한 번 스왑 아웃된 메모리는 다시 스왑 아웃되지만 여전히 스왑 파일에 있습니다(메모리가 필요한 경우 이미 스왑 파일에 있으므로 다시 스왑 아웃할 필요가 없습니다. 이렇게 하면 I/O가 절약됩니다).
/proc/meminfo에 설명된 캐시는 메모리에서 페이지 캐시(diskcache)의 SwapCache를 뺀 값입니다.여기그리고 이 설명은여기
gkrellm은 사용 가능한 메모리와 사용된 메모리를 계산하도록 지시합니다.
여기에서 사용된 메모리와 사용 가능한 메모리는 커널에서 보고된 사용된 메모리와 사용 가능한 메모리에서 버퍼와 캐시를 뺀 값을 기준으로 계산됩니다. 추가 정보 파일을 보고 free 명령의 "-/+ buffers/cache:" 줄과 비교해 보세요. 3개의 메모리 크렐이 표시된 경우 커널 "원시 사용 가능"은 가장 오른쪽 크렐 뒤의 공간입니다.
실행하면 free -m
커널이 파일 시스템 버퍼 등에 사용하는 메모리 양을 알려주는 "버퍼" 및 "캐시" 열이 표시됩니다.
이 캐시된 데이터는 애플리케이션이 "사용 가능한" 것보다 더 많은 데이터를 할당하려고 시도할 때 커널에 의해 해제됩니다. 이것이 바로 "-/+ buffers/cache" 라인이 실제로 사용할 때 주의해야 하는 중요한 라인인 이유입니다. 그것. 시스템에서 사용 가능한 메모리를 확인합니다. 바라보다여기
답변2
캐싱은 성능 측면에서 중요합니다. 그러나 여유 메모리의 경우: 사용 가능한 것보다 더 많은 메모리가 필요한 경우 일부 캐시 메모리가 자동으로 해제됩니다.