FFmpeg에서 SVT-AV1 인코딩 시 Xeon E5-2697 v4 듀얼(총 72스레드) 활용 가능 여부
SVT-AV1(Scalable Video Technology for AV1)은 Intel이 개발한 고성능 AV1 인코더로, 멀티스레드 및 대규모 병렬 연산에 최적화된 구조를 가지고 있습니다. 하지만 CPU의 전체 스레드를 100% 활용할 수 있는지는 SVT-AV1의 스레드 확장성, 작업 부하, FFmpeg의 옵션 설정에 따라 달라집니다.
1. SVT-AV1의 멀티스레딩 구조
SVT-AV1은 멀티코어 CPU를 최대한 활용하기 위해 여러 개의 병렬 프로세스를 사용합니다. 특히, 인코딩 파이프라인이 여러 개의 스레드로 분산되므로 코어 수가 많을수록 성능 향상이 발생합니다.
하지만, 72스레드(36코어 × 2)의 모든 스레드를 100% 활용할 수 있을지는 몇 가지 요인에 의해 달라집니다.
SVT-AV1의 주요 병렬 처리 요소
- Frame Parallelism (프레임 병렬 처리)
- 여러 개의 프레임을 동시에 처리하는 방식.
- 많은 코어를 활용할 수 있지만, 비디오가 너무 짧거나 단일 프레임이 너무 작으면 한계를 가질 수 있음.
- Tile Parallelism (타일 병렬 처리)
- AV1은 프레임을 여러 개의 타일(Tile)로 나누어 처리할 수 있음.
- 타일 개수를 증가시키면 더 많은 스레드를 사용할 수 있음.
- Segment Parallelism (세그먼트 병렬 처리)
- 하나의 프레임을 여러 개의 세그먼트로 나누어 병렬로 처리.
- 다중 코어 환경에서 중요한 역할을 함.
2. SVT-AV1의 스레드 활용 한계
(1) 단일 인코딩 작업의 최대 스레드 활용률
SVT-AV1은 기본적으로 다중 코어 활용에 최적화되어 있지만, 현실적으로 72스레드를 모두 100% 활용하는 것은 쉽지 않습니다. 그 이유는 다음과 같습니다.
- 단일 인코딩 프로세스의 스레드 확장성:
- SVT-AV1은 최대 64스레드까지 효율적으로 활용할 수 있도록 설계되었음.
- 하지만 그 이상이 되면 **오버헤드(스레드 간 동기화 비용)**가 증가하여 효율이 낮아질 가능성이 큼.
- 실제로 50~60스레드 정도가 현실적인 최대 활용 스레드 수임.
- 프레임 크기와 복잡도:
- 4K 이상의 고해상도 영상에서는 더 많은 스레드를 활용할 수 있지만,
- 1080p 이하에서는 72스레드를 모두 활용하는 것이 거의 불가능함.
- 일반적으로 4K 인코딩은 많은 코어를 활용할 수 있지만,
- 1080p 이하의 해상도에서는 30~40스레드 정도로 충분한 경우가 많음.
(2) 멀티 인코딩 작업 (병렬 인코딩)으로 해결 가능
단일 인코딩 프로세스가 72스레드를 완전히 활용하지 못한다면, 여러 개의 인코딩 프로세스를 병렬로 실행하는 방식으로 활용도를 극대화할 수 있습니다.
예를 들어:
ffmpeg -i input1.mp4 -c:v libsvtav1 -preset 4 -b:v 5000k -threads 36 output1.mp4 &
ffmpeg -i input2.mp4 -c:v libsvtav1 -preset 4 -b:v 5000k -threads 36 output2.mp4 &
위와 같이 두 개의 독립적인 FFmpeg 프로세스를 실행하면, 각각 36스레드를 활용하여 전체 72스레드를 효과적으로 사용할 수 있습니다.
3. FFmpeg에서 SVT-AV1 인코딩 시 72스레드 활용 설정 방법
FFmpeg에서 SVT-AV1을 사용할 때 옵션을 조정하면 멀티스레딩 활용도를 최적화할 수 있습니다.
(1) -threads 옵션 사용
기본적으로 SVT-AV1은 자동으로 스레드를 할당하지만, 명시적으로 설정할 수도 있습니다.
ffmpeg -i input.mp4 -c:v libsvtav1 -preset 4 -b:v 5000k -threads 72 output.mp4
하지만, 위에서 설명했듯이 64스레드 이상에서는 효율성이 떨어질 수 있으므로 64로 제한하는 것이 좋음.
ffmpeg -i input.mp4 -c:v libsvtav1 -preset 4 -b:v 5000k -threads 64 output.mp4
(2) -tile-columns, -tile-rows 설정
타일 기반 병렬 처리를 활용하면 더 많은 스레드를 활용할 수 있습니다.
예를 들어, 4K 해상도라면 다음과 같이 설정할 수 있습니다.
ffmpeg -i input.mp4 -c:v libsvtav1 -preset 4 -b:v 5000k -tile-columns 2 -tile-rows 2 -threads 64 output.mp4
이렇게 하면 한 프레임을 4개의 타일로 나누어 병렬 처리할 수 있으므로 CPU 활용도가 향상됩니다.
(3) -svtav1-params 추가 설정
SVT-AV1의 내부 설정을 직접 제어할 수도 있습니다.
ffmpeg -i input.mp4 -c:v libsvtav1 -preset 4 -b:v 5000k -svtav1-params tune=0:lp=2 output.mp4
여기서:
- tune=0 → 인코딩 품질/속도 밸런스 설정
- lp=2 → 논리적 프로세서 활용 정도 조절
4. 최종 결론: 72스레드 완전 활용 가능 여부
✅ 가능한 경우:
- 4K 이상의 고해상도 영상을 인코딩할 때
- -threads 옵션을 조절하여 64~72스레드로 설정할 때
- -tile-columns, -tile-rows 옵션을 적절히 조정할 때
- 동시에 여러 개의 인코딩 작업을 실행할 때
❌ 불가능한 경우:
- 1080p 이하의 영상에서는 72스레드를 100% 활용하기 어려움
- 단일 인코딩 프로세스에서는 64스레드 이상 사용 시 성능 향상이 크지 않음
- 너무 낮은 프리셋(preset 8~12)을 사용하면 CPU 활용도가 낮아질 수 있음
결론적으로 단일 인코딩 작업으로 72스레드를 100% 활용하는 것은 현실적으로 어렵지만,
- 적절한 옵션 조절 (-threads 64, -tile-columns 2 -tile-rows 2 등)
- 멀티 인코딩 작업 수행
을 통해 CPU 자원을 최대한 활용할 수 있습니다.
'IT생활' 카테고리의 다른 글
iOS에서 크로미움 기반 브라우저가 존재하지 않는 이유와 기술적 배경 (0) | 2025.02.01 |
---|---|
iOS (아이폰, 아이패드) 에서 강제로 키보드를 띄우는 방법 (0) | 2025.02.01 |
윈도우를 초기화 할때 확인해야 할 체크리스트 (0) | 2025.02.01 |
윈도우에서 시스템 사운드를 비활성화 해도 계속 활성화 되는 문제, 그리고 해결 방법 (0) | 2025.02.01 |
코어나 램 할당을 나중에 ESXi 콘솔에서 줄이거나 키울 수 있을까? (0) | 2025.02.01 |