free 출력의 buffers 열은 무엇입니까?

free 출력의 buffers 열은 무엇입니까?

이것들 질문버퍼는 디스크에 기록해야 하는 커널 메모리이고 캐시는 디스크에 기록할 필요가 없는 파일 데이터라는 점을 언급하면서 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 파일 시스템은 또한 디렉토리 내용을 버퍼 캐시에 저장합니다.

둘째, 명령으로 표시되는 "버퍼"에는 freeSReclaimable도 포함됩니다. 이는 회수 가능한 슬래브를 의미합니다. (여기서 설명:Linux 메모리를 다시 모니터링하는 올바른 방법).

슬래브 메모리는~ 아니다페이지/버퍼 캐시의 일부입니다. 그러나 함께 세는 것이 편리합니다. 둘 다 회수 가능하며 회수 가능 슬래브의 주요(유일한?) 용도는 파일 시스템 캐싱입니다. 예를 들어 파일 메타데이터(inodes) 및 경로 조회(dentry's)는 회수 가능한 슬래브에 캐시됩니다. "회수 가능한 슬래브 메모리는 파일이 많고 대부분 유휴 시스템에서 시스템 메모리의 상당 부분을 차지할 수 있습니다.."

에서 원시 Buffers및 값을 볼 수 있습니다 . 실행하여 슬래브 목록을 볼 수도 있습니다 . AFAICT는 슬래브에 대한 재생 가능 여부에 대한 통계를 제공하지 않습니다. 하지만 보통은 추측할 수 있고, 의심스러운 석판이 있으면 이름으로 찾아보면 될 것 같아요.SReclaimablecat /proc/meminfoslabtopslabtop


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

또한 Linux 개발자는 파일 시스템 구현에 관해 논쟁을 벌일 때 "버퍼 캐시"를 다른 의미로 사용했을 수도 있습니다.

답변3

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

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

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

관련 정보