
이것들 질문버퍼는 디스크에 기록해야 하는 커널 메모리이고 캐시는 디스크에 기록할 필요가 없는 파일 데이터라는 점을 언급하면서 free 명령의 형식을 간략하게 나열합니다.
내 시스템에서는 대부분의 여유 공간과 달리 버퍼가 RAM의 10% 이상을 차지합니다. 일반적으로 버퍼는 작은 토큰에 가까운 값입니다.
내 질문은 버퍼라고 불리는 영역에 정확히 무엇이 있습니까? 로 찾아볼 수 있나요 lsof
? 플러시되지 않은 열린 파일 영역으로 구성되어 있습니까? 메모리 매핑된 파일 영역인가요? 그것은 무엇입니까?
시스템이 잘 실행되고 스왑이 거의 사용되지 않아 성능이 좋습니다.
답변1
free
다음에서 데이터를 가져옵니다./proc/meminfo
slkwr133701:/usr/src/linux # free
total used free shared buffers cached
Mem: 2053456 434572 1618884 0 77888 201820
slkwr133701:/usr/src/linux # cat /proc/meminfo
MemTotal: 2053456 kB
MemFree: 1618736 kB
Buffers: 77928 kB
....
임시 블록 I/O 저장에 사용되는 메모리를 말합니다. 커널은 블록 I/O 전송, 네트워크 패킷 및 소켓 버퍼와 같이 동일한 크기의 단위를 지속적으로 할당하고 해제해야 합니다.
다음을 실행하여 캐시 및 버퍼 할당을 더 잘 볼 수 있습니다.slabtop
사용 질문에 대한 답변: 시스템은 일반적으로 필요한 것보다 더 많은 블록을 할당하지만 "메모리 압력"이 증가하면 이러한 추가 블록이 해제됩니다.
답변2
"버퍼"는 메모리 부족 시 회수 가능합니다. 따라서 이는 페이지 캐시("캐시" 열)와 유사합니다. 큰 우려는 아닙니다. "버퍼" 값은 작거나 클 수 있으며 시스템이 수행하는 작업에 따라 다릅니다 :-). 여기에서 계산된 여러 유형의 캐시를 찾을 수 있습니다.
버퍼 캐시는 말 그대로 블록 장치의 페이지 캐시입니다. Linux는 이를 별도로 보고합니다.[*] 프로그램이 블록 장치 노드를 읽고 쓰는 동안 "버퍼" 사용을 확인할 수 있습니다 dd status=progress if=/dev/sda of=/dev/null
. 분명히 사람들은 DVD 플레이어 프로그램을 실행할 때에도 이를 알아차립니다.
증거를 보려면 다음을 참조하세요.RAM의 30%는 "버퍼"입니다. 그것은 무엇입니까?
블록 장치 노드에 액세스한 적이 없다면 "버퍼"는 아마도 모두 파일 시스템일 것입니다.메타데이터. 파일 시스템은 편의를 위해 내부적으로 버퍼 캐시를 사용합니다. 파일이 절대 복제되지 않는지 확인합니다.데이터- 파일 내용 - 메인 페이지 캐시에 저장됩니다. 파일 시스템이 버퍼 캐시를 사용하는 정확한 목적은 파일 시스템에 따라 다릅니다.
적은 양의 물리적 RAM이 있는 시스템에서 ext3/ext4 파일 시스템을 사용하면 "버퍼"가 높게 보일 수 있다는 것을 알았습니다. 이는 저널에 대한 쓰기가 버퍼 캐시를 통과하기 때문입니다. (위 링크 참조). ext3/4 파일 시스템은 또한 디렉토리 내용을 버퍼 캐시에 저장합니다.
둘째, 명령으로 표시되는 "버퍼"에는 free
SReclaimable도 포함됩니다. 이는 회수 가능한 슬래브를 의미합니다. (여기서 설명:Linux 메모리를 다시 모니터링하는 올바른 방법).
슬래브 메모리는~ 아니다페이지/버퍼 캐시의 일부입니다. 그러나 함께 세는 것이 편리합니다. 둘 다 회수 가능하며 회수 가능 슬래브의 주요(유일한?) 용도는 파일 시스템 캐싱입니다. 예를 들어 파일 메타데이터(inodes) 및 경로 조회(dentry's)는 회수 가능한 슬래브에 캐시됩니다. "회수 가능한 슬래브 메모리는 파일이 많고 대부분 유휴 시스템에서 시스템 메모리의 상당 부분을 차지할 수 있습니다.."
에서 원시 Buffers
및 값을 볼 수 있습니다 . 실행하여 슬래브 목록을 볼 수도 있습니다 . AFAICT는 슬래브에 대한 재생 가능 여부에 대한 통계를 제공하지 않습니다. 하지만 보통은 추측할 수 있고, 의심스러운 석판이 있으면 이름으로 찾아보면 될 것 같아요.SReclaimable
cat /proc/meminfo
slabtop
slabtop
Buffers
[*] 이 답변의 목적에 따라 "버퍼 캐시" 는 에서 계산된 캐시입니다 /proc/meminfo
. 그러나 다른 소스에서는 전체 페이지 캐시를 통합 버퍼 캐시라고 부를 수도 있습니다. 역사적인 설명을 원하시면 첫 번째 링크를 참조하세요.
또한 Linux 개발자는 파일 시스템 구현에 관해 논쟁을 벌일 때 "버퍼 캐시"를 다른 의미로 사용했을 수도 있습니다.
답변3
둘째, free 명령으로 표시되는 "버퍼"에는 SReclaimable도 포함됩니다.
free 명령(버전 3.3.15)의 매뉴얼 페이지에 따르면: "페이지 캐시 및 슬랩에서 사용하는 캐시 메모리(/proc/meminfo의 캐시 및 SReclaimable)"
따라서 버퍼가 아닌 SReclaimable을 포함하는 캐시입니다.