free 명령에서 사용 가능한 메모리가 사용 가능한 메모리보다 적은 이유는 무엇입니까?

free 명령에서 사용 가능한 메모리가 사용 가능한 메모리보다 적은 이유는 무엇입니까?

CentOS 7을 사용하고 있는데 여유 메모리가 사용 가능한 메모리보다 적습니다. 그런데 이유는 무엇입니까?

root@localhost:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           251G        1.9G        249G        9.2M        260M        248G
Swap:           64M         49M         14M

같은 질문이 있었지만 대답은 왜 무료보다 사용 가능한 것이 적은지 설명하지 않고 캐싱에 대해서만 이야기했습니다.

centos7 무료 명령이 사용 가능한 값을 무료 값보다 작게 출력하는 이유는 무엇입니까?

답변1

사용 가능한 메모리는 시스템에서 프로그램을 로드하기 위해 메모리가 실제로 어떻게 사용되는지에 대한 추정치일 뿐이므로 이는정확한 값.

당신도 이미 알고 있듯이정상적인 행동즉, 사용 가능한 메모리가 사용 가능한 메모리보다 큽니다.그러나 귀하의 경우에는 그 반대가 발생합니다, 이 추정치를 계산하는 데 사용되는 통계는 더 큰 캐시/버퍼 값에 의해 도움이 되지만, 높은 캐시나 버퍼가 없고 다른 모든 요소를 ​​고려하여 음수를 고려하기 때문에 시스템에서는 불이익을 받기 때문입니다. , 사용 가능한 메모리가 더 부정적인 영향을 받게 됩니다... 따라서 사용 가능한 모든 메모리의 이 비율이 단순히 로더(특히 프로그램을 로드할 때, 시스템 프로세스 등에 대한 정보를 저장하려면 점점 더 많은 메모리가 필요합니다. 또한 합리적인 캐시 및 버퍼 값을 갖는 것과 같습니다...).

github에서:

사용 가능한 메모리:추정교체하지 않고 새 응용 프로그램을 시작하는 데 사용할 수 있는 메모리의 양입니다. MemFree, SReclaimable, 파일의 LRU 목록 크기 및 각 지역의 최저 워터마크를 기준으로 계산됩니다.추정시스템이 제대로 작동하려면 일부 페이지 캐싱이 필요하며 프로젝트가 사용 중이므로 모든 재활용 가능한 슬래브가 재활용 가능한 것은 아닙니다. 이러한 요소의 영향은 시스템마다 다릅니다. 더 자세한 답변을 얻으려면 /proc/meminfo의 내용을 게시해야 합니다.

답변2

CentOS 7 매뉴얼 페이지를 읽으면 이 필드는 캐시 및 여유 필드와 달리 일부 항목(예: 커널에서 사용 가능한 메모리)에서 사용 중이기 때문에 회수 가능한 모든 메모리가 회수되지는 않는다는 점을 고려한다고 free설명합니다 . available나는 이것이 당신이 보고 있는 차이의 이유라고 믿습니다.

사용 가능: 교체 없이 새 애플리케이션을 시작하는 데 사용할 수 있는 메모리 양에 대한 추정치입니다. 캐시 또는 free 필드에서 제공하는 데이터와 달리 이 필드는 페이지 캐시를 고려하며 프로젝트가 사용 중이므로 모든 회수 가능한 메모리 보드가 회수되는 것은 아닙니다(MemAvailable in /proc/meminfo, 커널 3.14에서 사용 가능, 사용 가능) 커널 2.6 .27+, 그 외의 경우 무료 버전과 동일)

관련 정보