NTFS 압축을 사용하는 파일이 디스크 나 메모리에 압축 해제됩니까?


14

Windows에서 NTFS 압축 해제는 어떻게 작동합니까? Microsoft에 따르면 NTFS 압축 해제는 파일을 확장 한 다음 사용하여 수행됩니다. 맞습니다.하지만 제 질문은이 프로세스가 기술적으로 어떻게 발생하는지입니다.

Windows가 압축 파일을 메모리에로드하고 메모리에서 확장하고 메모리에서 읽습니까? 아니면 압축 파일을 메모리에로드하고 디스크 나 메모리로 확장 한 다음 디스크에 쓴 다음 읽습니까?

NTFS 압축을 사용하여 컴퓨터의 성능을 향상시킬 수 있는지 알아 내려고 노력 중입니다. 그렇게하면 많은 쓰기 작업을 처리 할 수없는 느린 디스크 드라이브 또는 SSD는 항상 읽고 쓸 데이터가 적으며, 대부분의 시간 동안 유휴 상태 인 강력한 프로세서는 파일을 압축 해제하여 저장 속도와 상태를 개선 할 수 있습니다. .


1
파일이 메모리 또는 디스크로 압축 해제되는지에 더 집중하기 위해 귀하의 질문을 편집했습니다. 그렇게 하면 다른 측면에 더 많은 영향을주는 이 다른 질문 의 복제본으로 닫힐 가능성이 훨씬 줄어 듭니다 .
Ben N

답변:


19

Windows는 파일을 메모리로 압축 해제합니다. 디스크에 저장하면 속도 향상이 완전히 없어지고 불필요한 디스크 쓰기가 많이 발생합니다. NTFS 스파 스 파일 및 압축에 대한이 Microsoft 블로그 기사 끝을 참조하십시오 .

  1. NTFS는 액세스중인 압축 장치를 결정합니다.
  2. 압축 장치의 전체 할당 범위를 읽습니다.
  3. 장치가 압축되지 않으면 5 단계로 건너 뜁니다. 그렇지 않으면 NTFS는 압축 해제 된 CU를 디스크에 다시 쓰는 데 필요한 공간을 예약하려고하지만 할당하지는 않습니다. 디스크에 여유 공간이 충분하지 않으면 응용 프로그램이 읽는 동안 ERROR_DISK_FULL을 얻을 수 있습니다.
  4. CU는 메모리에서 압축 해제 됩니다 .
  5. 압축 해제 된 바이트 범위는 캐시에 매핑되어 요청하는 응용 프로그램으로 반환됩니다.
  6. ...

물론 메모리가 부족하면 압축 해제 프로세스에서 사용하는 메모리로 인해 다른 메모리가 페이지 아웃되어 페이지 파일의 디스크에 기록 될 수 있습니다. 다행히도, 프로그램에서 실제로 읽은 섹션이 포함 된 청크 만 압축 해제됩니다. NTFS는 몇 바이트 만 필요한 경우 전체를 압축 해제 할 필요가 없습니다.

SSD가 빠르면 NTFS 압축으로 속도가 향상되지 않을 수 있습니다. 프로세서가 데이터를 압축 해제하는 데 걸리는 시간과 디스크가 압축 된 데이터를 읽는 데 소비하는 시간은 SSD가 압축되지 않은 데이터를 읽는 데 걸리는 시간보다 더 길어질 수 있습니다. 또한 작업하는 파일의 크기에 따라 다릅니다. 압축 가능한 파일의 최소 크기는 클러스터 크기에 따라 8KB에서 64KB입니다. 해당 크기보다 작은 파일은 전혀 압축되지 않지만 소량의 부기가 추가됩니다.

압축 파일을 많이 쓰면 압축 알고리즘 사용 (LZ)으로 인해 속도가 많이 변할 수 있습니다.

추가 자료 : NTFS 압축은 성능에 어떤 영향을 줍니까?


1
> 메모리가 부족한 경우 압축 해제 된 데이터를 페이지 파일에서 디스크에 기록하고 디스크에 쓸 수 있습니다 [인용 필요]. 스마트 알고리즘은 압축 해제 된 데이터를 버리고 다음 액세스시 다시 압축 해제를 수행합니다. (압축) 압축의 가정은 페이징보다 수십 배 빠릅니다. 사실, 그것은 이미 페이지 캐시에서 일어나는 일입니다. Windows는이 압축 해제 된 데이터를 동일한 캐시에 넣을 것이라고 기대합니다. (Windows에서는 모든 파일 r / w가 페이지를 통해 기록하더라도 페이지 캐시를 통과합니다.)
Bob

실제로, 그것은 아마도 그렇게 할 것입니다. 답변의 해당 부분을 조정했습니다. 감사합니다.
Ben N

"압축 해제 된 바이트 범위는 캐시에 매핑됩니다. "캐시 정의가 무엇인지 알고 있습니까? 그냥 궁금해서 ----- "그렇지 않으면 NTFS는 압축 해제 된 CU를 디스크에 다시 쓰는 데 필요한 공간을 확보하려고합니다." 우리는 이것에 대한 정확한 이유를 알고 있습니까? Microsoft는 파일을 수정해도 전체 압축 크기가 원래의 압축되지 않은 크기를 초과하는 크기를 추가하지 않는다고 가정합니까? 짜증나는 가정처럼 보입니다.
CausingUnderflowsEverywhere

요약하면 우리는 디스크에서 읽기,-> MFT를 읽어서 압축을 풀기에 충분한 공간을 확인하고,-> 메모리에서 압축을 풀고,-요청하는 응용 프로그램의 캐시에 넣습니까? 우리는 응용 프로그램의 개인 바이트에 대해 이야기하고 있습니까? 그냥 궁금 해서요 ---------- 이것이 우리가보고있는 것입니까?
CausingUnderflowsEverywhere

1
@CausingUnderflowsEverywhere 해당 캐시는 IO 캐시 이므로 디스크에서 여러 번의 읽기를 모두 처리 할 필요는 없습니다. NTFS는 새 데이터가 기존 CU에 적합하기를 희망하지만 그렇지 않은 경우 공간이 있는지 확인합니다. IO 캐시는 하나의 응용 프로그램에만 국한되지 않지만 데이터는 필요할 때 프로그램의 개인 메모리에 저장됩니다.
벤 N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.