반응형

 

 

zstd는 리눅스에서 많이 쓰이는 압축 방식이다. 이름은 Zstandard고, Facebook에서 만들었다.

기본 목표는 단순하다. gzip보다 빠르게, 그리고 더 잘 압축하는 것.

속도는 확실히 빠른 편이다. 특히 CPU 코어 여러 개를 같이 쓰기 때문에 큰 파일에서 차이가 크게 난다. gzip처럼 한 코어만 쓰는 방식이 아니라서 대용량에서 체감이 확 온다.

압축률도 괜찮다. gzip보다는 확실히 더 잘 줄어들고, bzip2랑 비슷하거나 그 이상 나오는 경우도 많다. 대신 xz보다는 보통 조금 덜 줄어든다. 근데 xz는 너무 느려서 실사용에서는 잘 안 쓰게 된다.

zstd는 압축 레벨을 조절할 수 있다. 낮은 레벨은 속도가 빠르고, 높은 레벨은 용량을 더 줄인다. 보통은 3~10 정도를 많이 쓰고, 최대 압축은 19 이상까지 올린다. tar랑 같이 쓰는 경우가 많다. 파일을 묶는 건 tar가 하고, 압축은 zstd가 한다.

예를 들면 이런 식이다.

tar --zstd -cf archive.tar.zst dir/
 

실사용에서는 백업이나 빌드 결과물 압축에 많이 쓴다. 속도랑 용량 둘 다 적당히 챙길 수 있어서 이런 용도에 잘 맞는다.

단점도 있다. 레벨을 높이면 CPU를 많이 쓴다. 그리고 xz나 7z에 비하면 압축률이 조금 떨어지는 편이다.

그래서 정리하면, 빠르게 압축하고 적당히 줄이고 싶을 때 쓰는 방식이다.

150GB 정도 되는 오픈소스 빌드 디렉토리를 실제로 압축해봤다. 약 5GB 정도 차이가 난다.

 

 

zstd 기본 압축 레벨 : 124G

tar --zstd -cvf  archive.tar.zst  target/

 

 

zstd 압축 레벨 19 : 119G 

tar -cvf archive.tar.zst -I "zstd -19" target/

 

 

1개 코어를 이용하여 기본 압축레벨로 압축할 경우 경우 10분도 안 걸렸으나, 압축 레벨 19로 압축하니 6시간 넘게 걸렸다.  전체 CPU 코어를 다 사용할 경우 압축 시간을 단축할 수 있다.

tar -cvf archive.tar.zst -I "zstd -19 -T0" target/

 

 

 

 

https://engineering.fb.com/2018/12/19/core-infra/zstandard/

 

5 ways Facebook improved compression at scale with Zstandard

Two years ago, Facebook open-sourced Zstandard v1.0, a landmark data compression solution that offers best-in-kind performance. Since then, we’ve released a variety of enhancements and advanc…

engineering.fb.com

 

728x90
반응형

+ Recent posts