안녕하세요 블루TM입니다 ^^;;
오늘은 요즘 제가 푹 빠진 NVENC에 관한 간단한 트랜스코딩 테스트 결과를 알려드립니다..
그동안 인텔 내장 GPU를 이용한 VAAPI 트랜스코딩을 주로 사용했습니다..
QSV도 사용 가능하지만.. I3 이상이라는 제약 때문에.. 대세는 VAAPI 였죠...
모 카페의 회원님이 NVENC에 대해 소개해주셨고...
호기심을 참지 못하고.. 그쪽으로 발을 담궜습니다... ^^;;
참고로 지원되는 그래픽카드는 아래의 링크를 참고해주시면 됩니다..
https://developer.nvidia.com/video-encode-decode-gpu-support-matrix
NVNEC 가운데 hevc_nvenc 를 지원하는 그래픽카드는 파스칼 기반의 GTX 시리즈와 쿼드로 P 시리즈 입니다..
참고로 GT1030 은 NVENC를 지원하지 않습니다..
최소 지원은 GTX1050 부터입니다..
맥스웰인 GTX9X0 시리즈는 아쉽게도 h264_nvenc 만 지원합니다..
그래서 NVENC (hevc_nvenc) 를 지원하는 최소사양의 그래픽카드 3종을 모아서 테스트를 진행했습니다..
1. GTX1050 2GB
2. GTX1050Ti 4GB
3. Quadro P400 2GB
참고로 GTX1050Ti와 GTX1050은 TDP가 75W 입니다..
P400은 TDP가 30W 입니다..
신품 구매는 가성비가 떨어져서.. 모두 중고구매를 했습니다...
제일 마지막에 구매한 것이 P400 인데...
소비전력 때문에 P400을 구매했다라 할 수있네요..
0. 테스트 환경
Asrock J4105-ITX
RAM 8GB
x1 to x16 젠더
데비안 9.7 (아래의 테스트는 모두 데비안 9.7 기준입니다.. 윈도우로 착각은 안하셨으면..)
테스트에 사용된 소스 뉴스채널 YxN 녹화파일 500MB
동시 트랜스코딩 제한 패치 (무제한)
우선 NVENC를 이용한 트랜스코딩에는 2가지 방식이 있습니다..
a. CPU 디코딩 을 하고 이것을 GPU 인코딩 하는 방식입니다..
CPU의 성능에 많은 영향을 받고.. GPU의 잠재력을 모두 끌어다 쓸 수 없습니다...
이것은 TVH의 네이티브 트랜스코딩에서 사용하고, Plex 에서도 사용 합니다..
b. GPU 디코딩 을 하고 GPU 인코딩을 하는 방식입니다..
진정한 GPU 트랜스코딩이라 할 수 있습니다..
CPU의 성능에 영향을 거의 받지 않고, GPU의 성능에 의해 트랜스코딩 능력이 결정됩니다..
TVH에서는 네이티브 트랜스코딩이 불가능하고, SPAWN으로 외부 ffmpeg 를 이용해서 커맨드 라인으로 트랜스코딩을 합니다..
Plex는 아직 정식으로 지원되지 않고 있고, 베타버전에서는 가능하다는 이야기가 있습니다..
정식으로 지원될 날이 멀지 않았다는 것이네요...
c. VAAPI 대비 화질은?
확실히 같은 비트레이트 기준 NVENC의 화질이 좋습니다..
눈에 띄게 차이가 나는 것을 알 수 있습니다..
QSV에 견줄 수 있는 화질이라 생각됩니다..
특히 Plex 에서의 트랜스코딩 화질은 아주 좋다는게 느껴질 정도입니다...
이제부터테스트 결과 알려드립니다..
1. CPU 디코딩 + GPU 인코딩 1080 ->1080 테스트 (hevc_nvenc)
GTX1050Ti = 3.45 배속
GTX1050 = 3.45배속
P400 = 3.38 배속
2. GPU 디코딩 + GPU 인코딩 1080 ->1080 테스트 (hevc_nvenc )
GTX1050Ti = 12.1 배속
GTX1050 = 11.7 배속
P400 = 7.95 배속
결과적으로 본다면...
가성비는 GTX 시리즈가 더 좋습니다.. (아.. 중고 기준입니다.. 신품은 모두 가성비를 논하기 어렵네요 ㅠㅠ)
하지만.. 전성비는 P400이 제일이네요....
인스펙터로 체크 해본 결과... GTX1050 / GTX1050Ti의 절반의 소비전력입니다..
성능이나 가성비 등등을 생각한다면.. P400은 참 선택하기 어려울 수도 있습니다..
중고나라에도 잘 안떠서 구하기도 힘들고.. (저도 못구해서 GTX 먼저 구매하고... 잠복해서 겨우 하나 건졌습니다.)
여기서 하나 아셔야 할 것이 있습니다..
바로 그래픽카드의 비디오 메모리입니다..
TVH에서 NVENC로 ffmpeg 를 이용하면.. 대충 200-250MB의 비디오 메모리를 버퍼 메모리로 사용합니다..
메인 메모리를 사용하는 VAAPI와는 다르죠...
2GB 의 비디오 메모리를 사용하는 GTX1050 같은 경우.. 250MB를 사용한다라면.. 8채널로 트랜스코딩이 제한됩니다..
모든 성능을 다 이용하려면 4GB가 되어야 하네요...
중고 가격도 크게 차이 나지 않기 때문에..
가성비는 GTX1050Ti 4GB가 갑중에 갑이라 할 수 있습니다...
그리고 인텔 내장 GPU와 외장 NVIDIA GPU를 동시에 사용도 가능합니다...
TVH는 NVENC를.. Plex는 VAAPI를... 이런 조합으로도 가능하죠..
Plex 같은 경우 2개의 GPU가 있을 경우.. 인텔 GPU가 우선이라서 무조건 VAAPI로 동작합니다...
GPU의 부하를 분산해서 정책을 만든다면.. 2개의 GPU도 나름 좋은 선택입니다... ^^;;;
NVENC.. 나름 괜찮습니다...
저는 요즘 녹화시.. henc_nvenc 1920X1080 3Mbps 로 무조건 트랜스코딩해서 녹화합니다..
화질도 네이티브와 큰 차이가 나지 않고.. HDD 용량도 많이 절약할 수 있어서...
모바일로 보는 것은 대부분 트랜스코딩으로 녹화합니다..
동시 8채널도 문제없이 처리해주기 때문에.. 인텔 GPU로는 꿈도 못꾸던 것이죠...
하지만 아쉽게도 늘어난 소비전력은 배보다 배꼽이 큽니다...
J4105-ITX 메인보드의 소비전력 보다 GTX1050 / GTX1050Ti의 소비전력이 높습니다..
물론 트랜스코딩시에만 그렇고 평소에는 약 7W 정도 의 idle 소비전력이 추가되네요..
처음에는 소비전력에 대해 많이 걱정을 했는데...
지금은 그냥 그러려니 하고 사용합니다...
트랜스코딩을 주로 하신다면.. VAAPI도 좋지만 NVENC도 한번 고민해보세요 ^^;;
-블루TM-
한가지 궁금한것이
현재 1050ti와 1070 여유분이있어 두개로 테스트해보는중인데 배속이나 동시트랜스코딩 가능한 갯수나 성능차이가 거의 없다시피합니다
구글링좀 해보니 nvenc 성능은 세대별 아키텍쳐(?)가 동일하면 모두 동일한성능이고 비디오 인코딩 디코딩 성능은 그래픽 성능이랑 무관하다고 하는데
제가이해한 이것이 맞는건지 궁금합니다
전성비 상관없이 동시에 더많은 트랜스코딩 가능한 제품으로 사용하고자하는데 궁금합니다~
앗 그렇군요
제가본 글들이 해외 포럼에서 얻은정보다보니 혹시나 제가 잘못번역을한건가 아님 다른 설정방법이 있는건가싶어 여쭤보게됬습니다
아무래도 제가 이해한부분이 맞는거같네요
아무리 구글링을 해봐도 더나은 성능을 얻을방법이 없는거같습니다...
Nvenc 용으로 한정했을때는 1050이 베스트인듯 하네요 좋은정보 감사합니다~
근데 문제는 전기세가...
굳이 nvenc를 이용하실 거라면 소비가 높은 그래픽을 굴리는 대신
CPU디코딩 + GPU인코딩을 하시는 게 나아 보입니다.
화질에서 qsv_hevc가 제일 좋다는거네요
전력소모도 제일적고
nvenc가 요즘 화질이 좋아졌다는 얘기는 들었지만
같은 해상도 같은 비트레이트에서요..
/Vollago
nvenc는 아니지만 1030 테스트할때 그냥 gpu로 4k 구동시는 전력소모가 증가하지 않았고 3d게임 구동시에만 전력소모가 크게 증가를 했던 기억이 있어서요.