무료 출력의 버퍼 열은 무엇입니까?

무료 출력의 버퍼 열은 무엇입니까?

이것들 질문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 메모리를 다시 모니터링하는 올바른 방법).

태블릿 메모리는아니요페이지/버퍼 캐시의 일부입니다. 그러나 함께 세는 것이 편리합니다. 모두 재활용 가능하며 재활용 가능한 태블릿의 주요(유일한) 용도는 파일 시스템 캐싱입니다. 예를 들어 파일 메타데이터(인덱스 노드) 및 경로 조회(디렉터리 항목)는 회수 가능한 슬래브에 캐시됩니다. "파일이 많고 대부분 유휴 상태인 시스템에서는 회수 가능한 태블릿 메모리가 시스템 메모리의 대부분을 차지할 수 있습니다.".

에서 원본 BuffersSReclaimable값을 확인할 수 있습니다 cat /proc/meminfo. 실행하여 slabtop보드 목록을 볼 수도 있습니다 . AFAICT는 slabtop정제의 재활용 가능 여부에 대한 통계 정보를 제공하지 않습니다. 하지만 일반적으로 의심스러운 부분이 있으면 이름으로 찾아보면 될 것이라고 짐작할 수 있습니다.


[*] 이 답변의 목적에 따라 "버퍼 캐시"는 count 의 Buffers캐시 입니다 /proc/meminfo. 그러나 다른 소스에서는 전체 페이지 캐시를 통합 버퍼 캐시라고 부를 수도 있습니다. 역사적인 설명을 원하시면 첫 번째 링크를 참조하세요.

또한 Linux 개발자는 파일 시스템 구현에 대해 토론할 때 "버퍼 캐시"를 다른 의미로 사용할 수 있습니다.

답변3

둘째, free 명령으로 표시되는 "버퍼"에는 SReclaimable도 포함됩니다.

free 명령(버전 3.3.15)에 대한 매뉴얼 페이지에 따르면: "태블릿에서 사용하는 캐시 페이지 캐시 및 메모리(/proc/meminfo에서 캐시 및 SReclaimable)"

따라서 SReclaimable을 포함하는 것은 버퍼가 아닌 캐시입니다.

관련 정보