답변:
실제로 나는 평균 탐색 시간을 줄이기 위해 같은 크기의 많은 파일 할당을 조정하기 위해 슬래브가 만들어지지 않았다고 생각합니다.
내 의견은 볼륨에 공간을 할당해야 할 때 병렬 스레드가 너무 많은 동시 액세스를 발생시키는 큰 볼륨에 대한 할당 대기 시간을 줄이는 데 사용된다는 것입니다. 이는 볼륨 할당의 동일한 부분을 잠그기 때문입니다 비트 맵. 큰 비트 맵을 처리하지 않으려면 동일한 비트 맵 조각을 사용하여 디스크의 연속 영역을 비트 단위의 크기로 나타내는 "슬라브"로 세분화 할 수 있습니다 (최소한 하나 이상의 클러스터를 차지합니다. 클러스터 크기가 4KB 인 경우 비트 맵의 클러스터는 4K * 8 = 32K 할당 가능한 클러스터, 즉 128MB OS 스토리지; 볼륨의 실제 슬래브 크기는 33에서 64 사이로 조정되어 약 33 개의 동시 스레드가 서로를 차단하지 않고 dist의 비트 맵에 공간을 할당 할 수 있습니다)
따라서 많은 파일을 생성하는 스레드가 잠금을 해제하고 다른 슬래브를 시도하거나 시도하기 전에 현재 슬래브에 적은 양을 할당하려고 시도하기 전에 자체 슬래브 내에서 가장 자주 수행한다고 가정하면 슬래브는 볼륨의 공간 할당 속도를 높이는 데 사용됩니다. 또 다른 사용 가능한 비 잠금 슬래브와 동시에 다른 스레드에서 현재 사용하는 슬래브에 대한 액세스를 시도합니다.
디스크에서 할당이 볼륨 전체에 "확산"되는 이유를 설명합니다. 또한 이것은 NTFS의 MFT에 볼륨을 사용하는 많은 스레드간에 심각한 잠금을 피하기 때문에 다른 슬래브에 속하는 조각이 2 개 이상인 이유를 설명합니다. MFT 조각 모음을 수행 할 수 있지만 NTFS 볼륨에서 I / O 차단을 수행하지 않아야하는 동시 할당을 위해 "예약 된 영역"에 하나 이상의 조각이 유지됩니다.
과거에는 NTFS 볼륨이 여러 개의 슬래브로 세분화되지 않았으며 커널에서 I / O 완료를 기다리는 많은 스레드 차단 및 너무 많은 스레드 스위치로 인해 큰 성능 저하가 발생했습니다 (비트 맵의 할당이 실제로는 극도로 심각하더라도) 비트 맵의 흥미로운 부분이 메모리에 이미 캐시되어 있기 때문에 빠르고 나노초가 걸립니다. 볼륨에 대한 쓰기가 플러시되고 저널링 될 때 저널에 할당되어 다른 잠금이 발생하므로 저널은 볼륨에서 별도의 슬래브도 사용합니다 (가능한 경우).
그러나 NTFS는 특정 크기의 파일에 슬래브를 전용으로 사용한다고 생각하지 않습니다. NTFS는 내부적으로 데이터가 제거되고 할당 된 크기가 임계 값 아래로 떨어지고 두 개의 슬래브가 병합 될 때 슬래브를 약간 조각 모음합니다.
다음과 같이 슬래브 크기에 대한 정보를 얻을 수 있습니다.
fsutil fsinfo ntfsinfo c:
분명히 슬래브는 성능을위한 튜닝 매개 변수입니다. 그러나 많은 타사 조각 모음 도구는이 설정을 무시하고 최적의 배치를 사용하지 않습니다. 슬래브가 재 할당되지 않고 안정적으로 유지되어야하는 파일과 인덱스로 가득 찬 경우가 아니면 볼륨의 각 슬래브에 여유 공간이 있어야합니다. 지속적으로 작성 및 재활용되는 많은 작은 임시 파일 및 트랜잭션의 경우 동시 스레드 수에 따라 충분한 슬래브에 배치하고 볼륨이 하드 디스크 또는 RAID 어레이 (SSD에서는 중요하지 않음).
슬래브는 원격 파일 시스템에도 유용 할 수 있지만 최적의 크기는 예측하기 어렵습니다. 반대쪽의 슬래브는 계층 적 가상화 볼륨의 다른 볼륨에 대해 매우 작으며 배치 전략이 매우 다르므로 할당이 가상이고 다른 물리적 위치로 다시 매핑됩니다.
레지스트리의 다음 튜닝 매개 변수에 대한 Microsoft의 정보가 여전히 필요합니다.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\SlabifyFunction]
MinimumReclaimSlabsMB = REG_DWORD: 10240
MinimumReclaimSlabsPercent = REG_DWORD: 10
SlabEvictUpperBoundKB = REG_DWORD: 204800
SlabEvictUpperBoundPercent = REG_DWORD: 20
Microsoft는 여전히 배치 전략 변경에 대해 생각하고 있으며 시간이 지남에 따라 변경 될 수 있기 때문에 이들은 의도적으로 문서화되지 않은 것으로 생각합니다. 그것들은 API에 의해 노출되지 않으며 레지스트리와 NTFS 드라이버의 내부 소스 코드 구현에서만 증거를 찾을 수 있습니다.
우리가 아는 것은 슬래브가 DEFRAG.EXE 명령 줄 도구의 "/ K"매개 변수에 의해 잠깐 노출된다는 것입니다. 그러나 / K 최적화가 Windows를 처음 설치 한 후 (6 번의 재부팅 및 측정 후 Bootvis 최적화가 수행되기 전에도) 성능이 크게 향상되고 있음을 쉽게 알 수 있습니다. SSD 트리밍과 관련된 / L 매개 변수도 있습니다.