이 주제디스크 액세스 성능을 향상시키는 방법으로 HDD의 NTFS 압축을 논의하고 그 성능이 좋지 않은 경우가 많다는 결론을 내렸습니다. 하지만 저는 항상 압축을 공간을 절약하는 방법으로 여겨 왔으며 그 효율성을 배웠습니다. 이제 공간이 비싸고 클러스터 1개가 아닌 2개를 읽고 쓰는 경우 성능 저하가 훨씬 낮은 SSD가 있습니다.
반면에 SSD는 HDD보다 훨씬 빠르기 때문에 처리량이 높을수록 CPU 사용량도 높아질 것으로 예상됩니다. 이것이 문제가 될 수 있나요? 이 문제에 대해 다른 생각은 없나요?
공간 절약 효과가 마음에 듭니다. 크지는 않지만 있을 정도입니다. 하지만 성능이 중요하다면 이 기능을 끄는 것이 좋습니다.
답변1
마이크로소프트얼마 전에 블로그에 이런 글을 썼어요:
NTFS는 데이터 스트림을 CU로 나누어 파일을 압축합니다(이는 스파스 파일이 작동하는 방식과 유사합니다). 스트림 콘텐츠가 생성되거나 변경되면 데이터 스트림의 각 CU가 개별적으로 압축됩니다. 압축으로 인해 하나 이상의 클러스터가 감소하는 경우 압축된 단위는 압축 형식으로 디스크에 기록됩니다. 그런 다음 정렬 목적을 위해 희소 VCN 범위가 압축된 VCN 범위의 끝에 추가됩니다(아래 예 참조). 데이터가 하나의 클러스터만큼 크기를 줄일 만큼 충분히 압축되지 않으면 전체 CU가 압축되지 않은 형식으로 디스크에 기록됩니다.
파일에 있는 단일 VCN에 액세스하려면 단 하나의 CU만 압축해제하면 되므로 이 설계를 통해 무작위 액세스가 매우 빨라집니다. 불행하게도 순차 작업(예: 백업)을 수행하려면 많은 CU의 압축을 풀어야 하므로 대규모 순차 액세스는 상대적으로 느려집니다.
NTFS 파일 시스템 압축은 디스크 공간을 절약할 수 있지만 데이터를 압축하면 성능에 부정적인 영향을 미칠 수 있습니다.NTFS 압축에는 다음과 같은 성능 특성이 있습니다. 압축된 NTFS 파일을 다른 폴더로 복사하거나 이동하면 NTFS는 파일의 압축을 풀고 파일을 새 위치로 복사하거나 이동한 다음 파일을 다시 압축합니다. 이 문제는 동일한 컴퓨터의 폴더 간에 파일을 복사하거나 이동하는 경우에도 발생합니다. 압축된 파일은 네트워크를 통해 복사하기 전에도 확장되므로 NTFS 압축은 네트워크 대역폭을 절약하지 않습니다.
NTFS 압축은프로세서 집약적이기 때문에 성능 비용은 종종 프로세서에 바인딩되는 서버에서 더 두드러집니다. 쓰기 트래픽이 많고 로드가 많은 서버는 데이터 압축에 적합하지 않습니다.그러나 읽기 전용, 대부분 읽기 또는 로드가 적은 서버에서는 성능이 크게 저하되지 않을 수 있습니다.
트랜잭션 로깅을 사용하고 지속적으로 데이터베이스나 로그에 기록하는 프로그램을 실행하는 경우 해당 파일을 압축되지 않은 볼륨에 저장하도록 프로그램을 구성하십시오. 프로그램이 압축 파일의 매핑된 섹션을 통해 데이터를 수정하는 경우 프로그램은 매핑된 기록기가 쓸 수 있는 것보다 더 빠르게 "더티" 페이지를 생성할 수 있습니다. Microsoft Message Queuing(MSMQ라고도 함)과 같은 프로그램은 이 문제로 인해 NTFS 압축에서 작동하지 않습니다.
사용자 홈 폴더와 로밍 프로필은 많은 읽기 및 쓰기 작업을 사용하므로 Microsoft에서는 상위 폴더나 볼륨 루트에 NTFS 압축이 적용되지 않은 볼륨에 사용자 홈 폴더와 로밍 프로필을 배치할 것을 권장합니다.
요약:
읽기는 빠르기 때문에 변경되지 않는 작은 파일만 압축합니다(읽기만 하고 쓰기는 안 함). 그러나 쓰기에는 압축 해제가 필요하고 CPU 성능을 사용하는 새로운 압축이 필요하며 저장 유형은 그다지 중요하지 않습니다.
답변2
클라우디오가 자세히 얘기를 많이 하니까 나도 그의 의견을 다시 시작하겠다. 나도 그의 말을 시도해 본 결과 같은 효과를 보았다.
SSD의 경우 NTFS 압축을 사용하면 안 됩니다.
이제 나는 그러한 확언의 몇 가지 동기를 열거하겠습니다.
동기 Nº1: 두 번의 쓰기를 수행하므로 SSD를 훨씬 더 빠르게 종료합니다. NTFS 압축은 RAM에서 압축을 시작하기 전에 항상 압축되지 않은 데이터를 쓴 다음 최소 4KiB의 이득이 있는 경우에만 압축된 데이터를 다시 씁니다.
동기 Nº2: SSD에서 NTFS 4KiB 클러스터를 사용하면 SSD 속도가 50% 감소합니다. 벤치마크를 확인하면 128KiB 블록이 SSD를 4KiB 블록을 사용하는 것보다 두 배 더 빠르게 만들고 NTFS 압축은 4KiB 클러스터 NTFS 파티션에서만 사용할 수 있습니다.
동기 Nº3: 즉시 압축 및/또는 암호화로 표시되는 컨테이너를 생성할 수 있는 컨테이너(PISMO 파일 마운트와 같은)가 있습니다. 이러한 컨테이너는 RAM에서 압축을 수행하고 다시 쓰기 전에 압축되지 않은 데이터를 디스크로 보내지 않습니다. 또한 압축 형식에서는 PISMO가 NTFS보다 더 나은 압축률을 얻습니다.
훨씬 더 많은 동기가 있지만 이것이 가장 중요한 동기입니다.
다른 점은 SPEED입니다. 모든 압축은 CPU에서 수행되므로 매우 빠른 CPU가 없는 경우(NTFS에서는 모노 스레드가 사용되고 일부 컨테이너에서는 멀티 스레드가 사용됨) 읽기/쓰기가 매우 느려집니다. 압축되면; 최악의 경우 매우 빠른 CPU를 가질 수 있지만 다른 작업(렌더링, 트랜스코딩 등)에 사용 중인 경우 압축할 CPU가 남아 있지 않으므로 다시 성능이 저하됩니다.
NTFS 압축은 CPU를 많이 사용하지 않는 기존의 느린 디스크에만 적합하지만, 각 64KiB 블록(압축 여부에 관계없이)이 64KiB 위치의 배수에 기록되기 때문에 각 쓰기 후에(파일 수준에서) 적절한 조각 모음이 필요합니다. 이러한 조각을 압축하는 유일한 방법은 압축 후(또는 압축 폴더에 쓰기) 해당 파일의 조각 모음을 수행하는 것입니다.
PD: 가상 머신 내부가 아닌 실제 하드웨어의 Windows에 대해 이야기하고 있다는 점에 유의하세요. 중요한 것은 누가 물리적 매체에 쓰는지이고, 다른 매체에는 영향을 완화하고 많은 것을 개선할 수 있는 캐시 레이어가 있을 수 있습니다.
답변3
다른 사람들의 의견을 보면 NTFS 파일/폴더 압축이 SSD에서 큰 이점을 갖는 가장 유용한 시나리오인 최신 개발 도구를 사람들이 종종 잊어버리는 것 같습니다. 나의대학 라이선스 Matlab일반 사용자의 경우 읽기 전용 설치 폴더에는 다음과 같은 양의 데이터가 있습니다.
28.5GB 데이터 30.6GB 디스크 크기 729.246개의 파일과 15.000개의 폴더 포함(!!!)
이것은 Windows 파티션이 200GB인 500GB SSD가 장착된 내 노트북에 있습니다.
나는 Matlab이 이 점에 있어서 약간 극단적이라는 것을 알고 있지만 많은 devtool은 비슷한 속성을 가지고 있습니다. 즉, 작고 압축률이 높은 텍스트 파일(헤더, 코드, XML 파일)이 많이 있습니다. 설치하기 전에 지금 Matlab을 압축하고 있습니다.인텔 Quartus FPGA개발자 도구 및옥타브이미 다음과 같이 압축되어 있습니다.
1.55GB 디스크의 데이터 크기: 839GB 34.362개 파일 1.955개 폴더 포함
이 내용은 한 번 작성되고 프로젝트 빌드 중에 수십억 번 읽혀집니다. 지출하는 것이 완벽하게 합리적입니다.일부압축을 풀고 귀중한 SSD 공간의 절반을 절약할 수 있는 CPU 성능입니다.
답변4
알아 보려면 두 번 벤치마킹해야합니다. 압축. 압축되지 않음. SSD의 마모는 잊어버리세요. 병목 현상이 발생하지 않도록 빠른 SSD와 CPU가 필요합니다.
요즘 512GB SSD가 50달러입니다. 지금까지 가장 빠른 디스크 액세스는 가능한 경우 Linux와 LIFO 디스크 대기열 메커니즘을 사용하는 것입니다. CFQ보다는요.
Windows 10은 내 노트북에 12GB RAM을 설치하면 무한한 디스크 활동을 생성합니다. Linux Mint가 로드되고 이후에는 디스크 액세스가 거의 발생하지 않습니다. 당신이 시작하지 않는 한. Windows에는 눈에 보이는 작업 없이도 계속 바쁜 상태를 유지하는 방법이 있습니다.