나는 어제 OSX와 관련하여 이와 비슷한 것을 읽었으며 파일 시스템의 압축입니다. 기본적으로 답은 압축하려는 대상을 중심으로합니다.이 예에서는 "FAT"데이터에 대해 이야기하고 있습니다. 파일 구조, 속성, 메타 데이터 등을 함께 저장하면 압축하여 공간을 절약하고 CPU로 빠르게 읽을 수있어 각 파일의 데이터를 찾기 위해 모든 곳에서 헤드를 찾는 것보다 빠릅니다.
그러나 압축은 디스크 공간을 절약하는 것만이 아닙니다. 또한 I / O 대기 시간 및 대역폭 감소를위한 CPU 사이클 거래의 전형적인 예입니다. 지난 수십 년 동안 디스크 성능이 향상되는 것보다 훨씬 빠른 속도로 CPU 성능이 향상되었습니다 (그리고 나중에 컴퓨팅 리소스가 더 풍부 해짐). 최신 하드 디스크 탐색 시간과 회전 지연은 여전히 밀리 초 단위로 측정됩니다. 1 밀리 초 안에 2GHz CPU는 2 백만주기를 거칩니다. 물론 실제로 고려해야 할 실제 데이터 전송 시간이 남아 있습니다.
물론 OS 및 하드웨어 전체에 걸쳐 여러 수준의 캐싱이 이러한 지연을 숨길 수 있도록 강력하게 작동합니다. 그러나 캐시를 채우려면 어느 시점에서 해당 비트가 디스크에서 나와야합니다. 압축은 더 적은 비트가 전송되어야 함을 의미합니다. 일반적인 멀티 코어 Mac에서 거의 코믹한 CPU 리소스가 정상적으로 사용되면 디스크에서 압축 된 페이로드를 전송하고 CPU를 사용하여 내용을 메모리로 압축 해제하는 데 필요한 총 시간은 여전히 시간보다 훨씬 짧습니다. 압축되지 않은 형식으로 데이터를 전송하는 데 소요됩니다.
적은 양의 데이터를 전송하면 잠재적 인 성능 이점을 설명 할 수 있지만 확장 된 속성을 사용하여 파일 내용을 저장하면 실제로 작업 속도가 빨라질 수 있습니다. 그것은 모두 데이터 지역 성과 관련이 있습니다.
많은 양의 데이터를 전송하는 것보다 하드 디스크 속도를 늦추는 것이 있다면 헤드를 디스크의 한 부분에서 다른 부분으로 옮기는 것입니다. 움직일 때마다 헤드가 움직이기 시작한 다음 정지 한 다음 원하는 위치에 올바르게 위치했는지 확인한 다음 회전 디스크가 원하는 비트를 그 아래에 놓을 때까지 기다립니다. 이것들은 모두 실제적이고 육체적이며 움직이는 부분이며, 그들이하는 것처럼 빠르고 효율적으로 춤을 추는 것은 놀라운 일이지만 물리학에는 한계가 있습니다. 이러한 동작은 하드 디스크와 같은 회전 스토리지의 실제 성능 저하 요인입니다.
HFS + 볼륨 형식은 파일에 대한 모든 정보 (메타 데이터)를 디스크의 두 가지 기본 위치 (파일 날짜, 권한, 소유권 및 기타 호스트를 저장하는 카탈로그 파일)와 "명명 된 포크를 저장하는 속성 파일"에 저장합니다. "
HFS +의 확장 된 속성은 속성 파일에서 명명 된 포크로 구현됩니다. 그러나 파일 시스템에서 지원하는 최대 파일 크기까지 매우 큰 리소스 포크와 달리 HFS +의 확장 된 특성은 특성 파일에 "인라인"으로 저장됩니다. 실제로 이것은 속성 당 약 128 바이트의 제한을 의미합니다. 그러나 이는 또한 디스크 헤드가 실제 데이터를 얻기 위해 디스크의 다른 부분으로 이동할 필요가 없음을 의미합니다.
상상할 수 있듯이 카탈로그 및 속성 파일을 구성하는 디스크 블록은 자주 액세스되므로 대부분 어딘가에 캐시에있을 가능성이 높습니다. 이 모든 것은 B- 트리 구조화 된 카탈로그 및 속성 파일 내에서 데이터의 메타 데이터를 포함하여 파일의 전체 스토리지를 전체 성능상 승리로 만들기 위해 노력하고 있습니다. 일반 데이터 스토리지의 할당 블록 크기보다 작고 속성 파일의 B- 트리 노드 내에있는 한 25 바이트로 확장되는 8 바이트 페이로드도 문제가되지 않습니다. OS는 어쨌든 전체를 읽어야합니다.
Snow Leopard의 디스크 설치 공간 감소 (예 : 불필요한 지역화 및 "designable.nib"파일 제거)에 대한 다른 중요한 기여가 있지만 HFS + 압축은 기술적으로 가장 흥미 롭습니다.