2009-08-28 4 views
1

디스크 I/O를 최적화하고 디스크 캐시 크기를 알아 내려고합니다. system_profiler가 내게 말하고 있지 않습니다. 어디에서 볼 수 있습니까?osx : 디스크 I/O 캐시 (예 : 쓰기 캐시)의 크기는 어떻게 찾습니까?

편집 : 내 프로그램이 전체 볼륨을 처리 중입니다. 볼륨에있는 모든 블록을 반복하여 읽고 데이터를 무작위로 작성하고 쓰기를 수행합니다 ... 읽기/쓰기가 4k 인 경우 IO 작업 당 블록 수는 작업 당 r/wa 단일 블록보다 훨씬 빠릅니다. 그래서 내 질문은 r/w 작업의 이상적인 크기 (성능 : 속도면에서 이상적)를 찾기 위해 내 검색에서 유래합니다. 제발 닦는 프로그램을 위해 내가 읽기 작업을 필요로하지 않는다는 것을 지적하지 마라. 고마워.

+0

OSX의 파일 시스템 캐시 또는 실제 HDD 컨트롤러의 RAM 칩을 의미합니까? – MSalters

+0

@MSalters : 하드웨어 캐시 크기가 내가 찾는 길이라고 생각합니다. 좀 더 구체적인 질문을 편집했습니다. 고마워. – kent

답변

7

Mac OS X은 통합 버퍼 캐시를 사용합니다. 이것이 의미하는 바는 커널에서 VM 객체와 파일은 어느 정도 수준이며 동일하며 캐싱에 사용 가능한 메모리의 크기는 시스템의 다른 부분에서 VM 압력에 전적으로 의존한다는 것입니다. 또한 읽기 캐시의 항목이 그것에 쓰여지는 경우 읽기 및 쓰기 캐싱이 통합됨을 의미하며 변경 사항이 커밋 될 때 디스크에 기록됩니다.

그래서 디스크 캐시는 매우 작거나 기가 바이트 크기 일 수 있으며 시스템이 사용될 때 동적으로 변경됩니다. 이 때문에 캐시 크기를 결정하고 그것을 기반으로 최적화를 잃는 싸움이다. 기본 장치의 최적 IO 크기를 확인하거나 캐시해서는 안되는 데이터를 식별하고 F_NOCACHE를 사용하는 것과 같이 캐시를 더 잘 작동하는 방법을 알려주는 일을하는 것이 좋습니다.

+0

매우 유익한 답변을 해주신 루이에게 감사드립니다. 후속 질문은 다음과 같습니다. 기본 장치의 최적 IO 크기를 어떻게 감지합니까? ! \ | K < – kent

+0

@ 루이스 : 다시 : "글쓰기에서 플래시 칩까지"아주 좋은 글. infos에 감사드립니다! – kent

+0

가장 좋은 방법은 statfs() 시스템 호출을 사용하고 반환 된 구조체의 f_iosize 멤버를 보는 것입니다. –

관련 문제