커널 버전 3.10에서 /proc/meminfo에 MemAvailable이 표시되는 이유는 무엇입니까?

커널 버전 3.10에서 /proc/meminfo에 MemAvailable이 표시되는 이유는 무엇입니까?

저는 CentOS 7을 사용하고 있으며 커널 버전은 3.10입니다. 커널 버전을 확인하기 위해 "uname -r"을 입력하고 다음 명령을 표시했습니다.3.10.0-957.1.3.el7.x86_64

내가 아는 한 MemAvailableLinux 커널 버전 3.14에는 메트릭이 도입되었습니다.

하지만 /proc/meminfo이 명령을 실행했는데 미터법이 표시되었습니다 MemAvailable.

MemTotal:       3880620 kB
MemFree:        3440980 kB
MemAvailable:   3473820 kB

Linux에 MemAvailable측정항목이 표시되는 이유는 무엇입니까? 내 Linux 커널이 3.14보다 낮습니다.

답변1

커널은 RHEL 7(및 CentOS 7)에 대해 유지 관리되는 기본 ABI이기 때문에 자신을 3.10으로 식별합니다. ABI는 이전 버전의 RHEL 7로 구축된 커널 모듈이 후속 버전에서도 그대로 작동하도록 유지됩니다.

그러나 ABI를 중단하지 않고 이를 달성할 수 있다면 유용한 커널 기능이 새 커널에서 RHEL 커널로 백포트됩니다. 여기에는 MemAvailable가 포함되며 백포트되기도 했습니다.RHEL 6의 "2.6.32" 커널로! 각 커널 버전의 변경 사항은 릴리스 노트에 자세히 설명되어 있습니다.RHEL 7.6 커널 변경 사항.

자체 설명은 MemAvailable다음을 참조하세요.배포판에서 이식 가능한 사용 가능한 메모리 양을 얻는 방법은 무엇입니까?

답변2

이 지표는 스왑 없이 사용할 수 있는 최대 애플리케이션 메모리 크기의 추정치를 제공합니다.이 웹사이트에서

스왑 없이 새 응용 프로그램을 시작하는 데 사용할 수 있는 메모리 양을 추정합니다. MemFree, SReclaimable, 파일의 LRU 목록 크기 및 각 지역의 최저 워터마크를 기준으로 계산됩니다.

이 추정치는 시스템이 제대로 작동하려면 일부 페이지 캐싱이 필요하다는 점과 프로젝트가 사용 중일 때 모든 회수 가능 슬래브가 회수 가능하지는 않다는 점을 고려합니다. 이러한 요소의 영향은 시스템마다 다릅니다.

커널 개발자/RedHat 회사에 문의하는 것이 더 나은 이유에 대해서는

일반적으로 RH는 이전 버전의 커널에서 많은 백포트를 수행합니다.

관련 정보