나는 지속적으로 파일을 RAM(/tmp/ 아래)에 저장하고 처리한 다음 삭제하는 시스템을 가지고 있습니다.
RAM에 보관해야 하는 파일도 있고 그렇지 않은 파일도 있습니다.
내 문제는 파일을 저장하는 데 사용할 수 있는 RAM의 양을 보고하고 싶다는 것입니다.
"무료"를 사용하면 다음과 같은 보고서를 받을 수 있습니다.
free: 10000 (KB)
그러나 달리면 cat /proc/meminfo
다른/더 의미 있는 이야기를 듣게 됩니다.
memfree: 10000 (KB)
Cached: 100000 (KB)
SwapCached: 0 (KB)
Active: 59000 (KB)
Inactive: 41000 (KB)
좋습니다. 명확성을 위해 이러한 값을 대략적으로 계산/반올림했습니다.
이 기사에서:리눅스 비활성 메모리, "비활성" 메모리를 사용할 수 있음을 알 수 있으므로 – 제가 아는 한 – 그것은 무료입니다.
따라서 10000KB + 41000KB의 여유 메모리("무료"는 아니지만 사용 가능한) 메모리를 보고할 수 있어야 합니다.
총 "사용 가능한" 메모리를 보고하는 데 사용할 수 있는 명령(또는 다른 방법)이 있습니까?
내가 이해한 바로는 사용 가능한 총 공간은 "무료" + "비활성"이라고 생각합니다.
감사해요
답변1
3.14부터 Linux 커널은 사용 가능한 실제 메모리 양을 추적합니다.즉회수 가능한 메모리를 포함하여 할당을 위해 스왑을 실행할 필요가 없습니다 . 여기 MemAvailable
에는 /proc/meminfo
이미 비활성으로 추적되는 회수 가능한 메모리가 포함되어 있으므로 추가할 필요도 없습니다.
이전 코어에서는 답변에 제공된 공식을 사용할 수 있습니다배포판에서 이식 가능한 사용 가능한 메모리 양을 얻는 방법은 무엇입니까?:
awk -v low=$(grep low /proc/zoneinfo | awk '{k+=$2}END{print k}') \
'{a[$1]=$2}
END{
print a["MemFree:"]+a["Active(file):"]+a["Inactive(file):"]+a["SReclaimable:"]-(12*low);
}' /proc/meminfo