tar.xz 압축 속도 5배 더 빠르게(멀티 코어 적용) 하는 방법

xz의 기본 옵션으로는 단일 코어만 사용하기 때문에 압축하는데 시간이 오래 걸립니다. xz 압축에 멀티 코어를 적용해서 xz 압축 속도를 5배 더 빠르게 만드는 방법 알아보겠습니다.

개요

xz의 압축 성능이 좋은 건 사용해 본 분들은 다들 아는 내용입니다. 하지만 기본 옵션으로는 단일 코어만 사용하기 때문에 속도가 빠르지 않습니다. 압축을 빨리 하고 싶은 분들은 멀티 코어를 사용하는 옵션을 아셔야 합니다.

xz 압축 속도 개선: 멀티 코어 적용

xz man 페이지를 확인하면 아래와 같은 -T 옵션의 설명이 있습니다.

그림 1. xz 압축 속도 개선을 위한 스레드 수 지정 옵션
그림 1. xz 압축 속도 개선을 위한 스레드 수 지정 옵션

xz 명령어에서는 -T 옵션을 사용해서 멀티 코어를 압축하는 데 이용할 수 있습니다. T는 threads의 약자이며 -T 옵션의 기본값은 1입니다. 즉, 기본값으로는 CPU 코어를 하나만 사용합니다.

-T 0은 가용한 CPU 코어를 최대한 사용하겠다는 것입니다. 이렇게 한다고 해서 모든 코어를 다 쓰는 것은 아니기 때문에 너무 크게 걱정 하지 않으셔도 됩니다. 만약 너무 많은 코어를 사용해서 현재 작업에 지장이 생긴다면 적절하게 스레드 수를 변경해 주시면 됩니다.

아래의 그림 2는 두 번 모두 -T 0 옵션을 이용한 결과인데, 모든 코어를 다 사용하지는 않는 모습을 볼 수 있습니다. -T 0 옵션을 이용하면 가장 빠르게 압축할 수도 있을 것 같습니다.

그림 2. xz 압축시 -T 0 옵션 사용했을 때의 CPU 자원 사용 현황
그림 2. xz 압축시 -T 0 옵션 사용했을 때의 CPU 자원 사용 현황

그래서 제가 5배 더 빠르게 적용하는 정도가 좋겠다고 생각했습니다. -T 5 라고 옵션을 주면 5개의 CPU 코어를 사용해서 압축할 것입니다.

사용하는 컴퓨터의 CPU 코어수에 맞춰서 조절해서 사용하시기 바랍니다. 코어가 24코어나 그 이상이라면 -T 16 정도로 이용하셔도 충분히 괜찮을 것입니다.

tar.xz 압축 시 멀티 코어 적용 옵션

보통 xz만 단독으로 쓰기보다는 tar 명령어를 함께 사용하는 경우가 더 많죠? 그래서 tar를 이용해서 xz 압축 효율과 속도를 개선하는 방법을 알려드립니다. 바로 -I 옵션을 사용하는 것입니다. -I 옵션을 이용하면 외부 압축 프로그램을 따로 활용할 수가 있습니다.

tar -c -I 'xz -T 5' -f comp_files.tar.xz text_files
ShellScript

따옴표 안에 xz 명령어를 입력해 주시면 됩니다. 또는 환경변수로 옵션을 주는 방법이 있습니다.

XZ_OPT='-T 5' tar cJf comp_files.tar.xz text_files
ShellScript

아래의 CPU 사용 상황을 보면 멀티 코어를 사용해서 xz 압축 속도를 높인 결과 압축 시간이 줄어들고 CPU 코어 5개는 열심히 일하는 장면을 확인할 수 있습니다.

그림 3. 멀티 코어 적용해서 tar.xz 파일 압축시 멀티 코어 옵션 적용한 결과
그림 3. 멀티 코어 적용해서 tar.xz 파일 압축시 멀티 코어 옵션 적용한 결과

압축 속도가 빨라지지 않는 경우

참고로 -9 옵션과 같은 압축 최적화 옵션을 사용하는 경우에 저는 멀티 스레드를 이용하는 -T 옵션이 적용되지 않고 단일 코어로만 압축이 진행됐습니다. 빠르고 압축이 가장 잘 되게 하려다가 압축 속도가 별로 빨라지지 않았다면 이런 이유일 수 있습니다.

관련 자료

xz man 페이지를 확인하면 xz의 다양한 옵션들을 확인할 수 있습니다.

같이 읽으면 좋은 글

Leave a Comment