NUC로 부족한 NAS의 성능을 보완하였습니다.

Intel NUC Kit NUC6CAYH를 받은지 두달만에 사용/구축기를 적게되네요..

일단 NUC6CAYH의 용도는 Plex Media Server의 용도로 특정하였습니다. 많이 부족한 NAS(Synology DS216+)의 트랜스코딩 성능을 보완하고자 하는 목적으로 말입니다. 이를 위해 NUC6CAYH에는 NAS의 역할이 전혀 필요없어 리눅스나 Xpenology가 아닌 Windows를 설치하였고 Windows 자체의 네트워크 드라이브 기능을 통해서 NAS의 동영상 데이터를 연결한 후 이를 Plex Media Server의 라이브러리로 구성해야겠다는 설계를 하였습니다.

네트워크 드라이브로 NAS와 연결하여 동영상 데이터를 당겨오기 때문에 실질적으로 NUC6CAYH에는 영상자료를 저장할 필요가 없어서 Windows 구성파일과 유지보수용 애플리케이션, Plex 라이브러리가 저장될 최소의 용량인 120GB SSD를 장착하였고 메모리는 4GB DDR3L-1600 2개를 장착하였습니다. 어차피 Windows용 Plex Media Server는 32bit용밖에 없으므로 서버 애플리케이션 자체가 8GB 메모리를 다 활용할 수는 없지만 다른 용도도 생각하여 넉넉하게 장착하였습니다.

NUC6CAYH의 CPU는 Intel Celeron J3455 입니다. PassMark 스코어가 2000대를 겨우 넘는 성능으로 CPU에 내장된 그래픽코어를 이용한 하드웨어 가속 즉, 하드웨어 트랜스코딩을 이용하지 않으면 1080p 영상 기준 하나도 간당간당하게 처리할 수준밖에 되지 않으므로 Plex Pass – Life Time 가입을 하여 하드웨어 트랜스코딩을 활성화 하였습니다. 실제 테스트시 영상에 따라 다르긴 하지만 1080p 기준 3~4개 동시 트랜스코딩도 무리없이 가능하였습니다.

Feb 08, 2018 22:03:44.233 [0992] DEBUG – TPU: hardware transcoding: final decoder: dxva2, final encoder: qsv

Feb 08, 2018 22:03:44.254 [0992] DEBUG – Job running: EAE_ROOT=’\\?\C:\Users\jaegw\AppData\Local\Plex Media Server\Cache\Transcode\Sessions\EasyAudioEncoder’ FFMPEG_EXTERNAL_LIBS=’\\\\?\\C\:\\Users\\jaegw\\AppData\\Local\\Plex\ Media\ Server\\Codecs\\b077134-1269-windows-i386\\’ XDG_CACHE_HOME=’C:\Users\jaegw\AppData\Local\Plex Media Server\Cache\’ XDG_DATA_HOME=’C:\Program Files (x86)\Plex\Plex Media Server\Resources\’ X_PLEX_TOKEN=’xxxxxxxxxxxxxxxxxxxx’ C:\Program Files (x86)\Plex\Plex Media Server\PlexTranscoder.exe -codec:#0x01 h264 -hwaccel:#0x01 dxva2 -hwaccel_fallback_threshold:#0x01 10 -codec:#0x02 aac -ihttp://127.0.0.1:32400/library/parts/64571/1517385739/file.mp4?X-Plex-Token=xxxxxxxxxxxxxxxxxxxx -filter_complex [0:#0x01]scale=w=720:h=406[0];[0]format=pix_fmts=nv12[1] -filter_complex “[0:#0x02] aresample=async=1:ocl=’stereo’:osr=48000[2]” -map [1] -codec:0 h264_qsv -b:0 1009k -maxrate:0 1346k -bufsize:0 2692k -r:0 29.969999999999999 -force_key_frames:0 expr:gte(t,0+n_forced*8) -map [2] -codec:1 aac_mf -b:1 162k -segment_format mpegts -f ssegment -individual_header_trailer 0 -segment_time 8 -segment_start_number 0 -segment_copyts 1 -segment_time_delta 0.0625 -segment_listhttp://127.0.0.1:32400/video/:/transcode/session/b66b5f1c61aebb8a-com-plexapp-android/088a17f7-97e9-4c6b-aa68-19e025890df8/seglist -segment_list_type csv -segment_list_size 2147483647 -segment_list_separate_stream_times 1 -max_delay 5000000 -avoid_negative_ts disabled -map_metadata -1 -map_chapters -1 media-%05d.ts -start_at_zero -copyts -vsync cfr -y -nostats -loglevel quiet -loglevel_plex error -progressurlhttp://127.0.0.1:32400/video/:/transcode/session/b66b5f1c61aebb8a-com-plexapp-android/088a17f7-97e9-4c6b-aa68-19e025890df8/progress

Plex Media Server 재생로그 중…

특히 Windows로 Plex Media Server를 구성하면 별다른 세팅 없이 QSV가속을 지원하므로 하드웨어 트랜스코딩시 움직임이 빠른 장면에서 심각한 화질저하가 발생하지 않는 이점도 있습니다. 게다가 이 CPU는 HEVC 트랜스코딩도 지원하죠.

NUC6CAYH에 Windows 10 Pro를 설치하고 Windows Update, 하드웨어 드라이버 설치, 정품인증까지 마친 상태에서 NAS의 동영상이 저장되어있는 공유폴더를 Windows 자체기능인 네트워크 드라이브를 통해 하나하나 연결을 해주었습니다. 여기서 주의할 점은 네트워크 드라이브를 NetDrive나 RaiDrive를 통해 연결하면 미디어를 불러올때마다 해당 용량이 캐시로 쌓여 SSD가 금방 꽉 차는 현상이 생기고 안정성이 일부 저하되므로 외부 클라우드를 이용하지 않는 이상 사용하지 않는것이 좋습니다. (물론 이를 이용하여 사용하다 캐시로 인해 SSD가 꽉 차면 재부팅해주는것으로 캐시를 비울 수는 있습니다.)

네트워크 드라이브 연결을 모두 마치면 Plex Media Server를 설치합니다. 저는 NAS에서 Plex를 구축하여 사용중이었기 때문에 NAS에서 사용했던 Plex Media Server 라이브러리를 NUC6CAYH에 복사해 넣었습니다. 이렇게 하면 다시 메타를 불러오지 않고도 NAS에서 구성했던 라이브러리를 그대로 사용할 수 있습니다. 이후 각 라이브러리의 경로를 해당 네트워크 드라이브 경로로 수정해주었습니다.

Tautulli (구 PlexPY)는 NAS에 설치하여 NUC6CAYH나 설치된 Plex Media Server에 문제가 발생하면 즉각 모바일 TauTulli앱이나 텔레그램으로 알림를 보낼수 있게도 설정하였습니다. NAS에도 동시에 문제가 생기지 않는 이상 Plex Media Server 접속이 불가능한 경우 NAS에 설치된 Tautulli가 알림을 보낼것입니다. 또한 어떤 사용자가 어느 미디어를 무슨방식으로 재생하였는지도 통계로 볼 수도 있죠.

이 모든 세팅을 끝내고 AIDA64를 설치하여 리모트센서를 활성화 함으로써 시스템 모니터링 페이지를 표시할 수 있게 한 후 HDMI에 연결된 디스플레이를 제거합니다. 앞으로는 RDP(Microsoft Remote Desktop 또는 Guacamole)를 통해 원격으로 접근할것이기 때문이죠.

이로써 NUC6CAYH는 Plex Media Server만을 위한 전용기기가 되었습니다. 성능이 좀 아쉽지만 동시접속의 가능성이 적기 때문에 그리고 적게 잡아도 2~3개의 동시접속 동시 트랜스코딩도 견딜 수 있기 때문에 당분간은 충분히 사용할 수 있을것으로 생각이 됩니다.

18개의 댓글

    1. 성능만 받쳐준다면 화질저하가 가장 적은 CPU빨로 트랜스코딩 하는편이 더 나을꺼 같아요. QSV를 지원해도 화질면에서는 약간 손해를 보거든요.. 요즘은 고성능 CPU일지라도 아이들시에는 저전력으로 유지되기에 전력소모면에서도 크게 걱정할 부분도 아닌거 같구요..

      다만 저의경우 예산과 공간이 한정되어 있어 이게 최선이었네요.
      NUC본체 $129.99 에 Plex Pass Life Time $79.99 램과 SSD는 집에 안쓰고 방치되어 있던걸 활용… 나름 저렴하게 구성했다고 봅니다

    1. Plex Pass 등록했다면 당연히 가능하고 문제없습니다…
      다만 Plex 버전이 올라가면서 VAAPI의 향상도 있는지는 모르겠지만 예전에는 하드웨어 트랜스코딩시 화질저하가 상당히 심했습니다. 지금은 어떨지 궁금하군요.

      리눅스계열에서는 커널수정으로 QSV를 사용할 수 있다고는 하는데 이게 가능하다해도 커스텀된 기성NAS의 OS에서는 불가능할꺼기에 VAAPI밖에 사용할 수 없거든요…

  1. 안녕하세요.
    저도 nuc 같은 모델 구매해서 윈도우 설치후 나스를 네트워크 드라이브로 연결해서 plex 사용중입니다.

    그런데 만약 nuc나 나스중 하나가 재부팅 시킬 경우가 생기면 재부팅후 네트워크 드라이브가 X 표시가 되면서 자동으로 재연결이 안되더군요.

    이럴때 꼭 nuc의 네트워크 드라이브를 클릭해서 X 표시를 없애줘서 다시 연결시켜야 하더군요.

    혹시 여기에 대한 해결책을 아시나 궁금해서 댓글 남깁니다.

    계속 켜놓는 방법밖에 없을까요?

    1. 저의 경우는 재부팅 이후에 재연결이 잘 되고 있습니다.
      NAS만을 재부팅할 경우도 재부팅 과정에서 네트워크 드라이브에 X가 표시되고 부팅이 완료되면 자동으로 X표시가 사라지면서 재연결되더군요…
      (재연결이 안되더라도 단순히 새로고침 하면 X표시가 사라졌었습니다.)

      같은 증상이 발생한적이 없어서 해결책을 드리기는 불가능할꺼 같습니다.
      만약 증상이 발생하고 이에대한 해결방법을 발견한다면 다시 답변드리겠습니다.

  2. 안녕하세요, 저도 포스팅 보고 똑같이 구성하여 사용중입니다.
    크게 도움이 됐습니다. 감사합니다.

    나린이라 잘 몰라서 그런데 4K는 언감생심이고 1080p h.265 10비트 영상을
    트랜스코딩시 몇초 재생후 멈추고 다시 재생되다 멈추는게 반복되는데
    이건 j3455의 한계일까요?

    1. Intel Celeron J3455의 CPU 및 내장그래픽 파워로 4K H.265 10비트 영상을 재생할 수는 있습니다만 sw 및 hw트랜스코딩으로는 버티질 못합니다. (물론 영상에 따라 다를순 있습니다.)
      제가 테스트한 영상의 경우 영상 1080p H.265 10bit 음성 ac3으로 테스트 시 0.4x ~ 0.8x 정도가 나왔습니다. hw트랜스코딩 적용이구요. CPU는 100%까지 올라가지는 않았습니다.(70~80%), 그래픽코어는 450MHz까지 상승했구요…
      0.4x~0.8x으로 트랜스코딩이 되면 당연히 끈길수밖에 없습니다. 1080p H.264 영상으로는 2.2x~2.6x 정도 나오는거와 대조적이죠..

      H.265 10bit 형식을 포기하거나 적어도 하스웰 i3 이상급 시스템으로 올라가야 그나마 쓸만하게 사용 가능할꺼로 생각됩니다. (10bit 영상을 메인으로 활용하기 위해서는 카비레이크 i3 이상급이 필요할 수도 있습니다. 카비레이크에 내장된 그래픽이 Main10비트를 인코딩이 가능한 최소사양이거든요.)

      제가 J3455를 탑제한 NUC로 별도의 미디어서버를 구축한 이유가 최소 전력으로 NAS의 성능(특히 트랜스코딩)을 어느정도 적절선에서 보완하기 위한것이지 고사양에서나 돌릴 수 있는 영상을 처리하여 스트리밍하기위한 목적과는 거리가 멉니다. 수집하는 영상도 720p 또는 1080p의 H.264(30프레임 이하)가 대부분이구요.

  3. 그렇군요, 감사합니다. 혹시 제 셋팅이 뭔가
    잘못된게 아닌가 의문이 들었었습니다.

    차기 스컬캐년으로 기변하게 되면 다른 시도를
    해봐야겠군요~

  4. 안녕하세요.

    30기가(비트레이트: 40Mbps) 내외의 블루레이 리핑 영상에 이미지 자막(pgs 등)을 입히기 위해 트랜스코딩하는 것에도 하드웨어 트랜스코딩이 원할하게 작동하는지 궁금합니다.
    현재 제가 가진 J1900으로는 하드웨어 트랜스코딩이 0.8배속 정도밖에 나오지 않아 자꾸 끊기네요..
    20Mbps 이하로 설정하면 거의 끊기지 않고 재생이 가능하기는 하지만 오리지널 영상에 자막을 입혀서 재생이 가능했으면 좋겠습니다.

    J3455에서 트랜스코딩이 원활하다면 7세대 셀러론이나 펜티엄 NUC 구매를 고려하고 있습니다.

    1. 전혀 원할하지 않습니다.
      만약 h.264라면 영상에 따라 1.2x까지 나오기도 하지만 h.265면 답 없습니다.
      게다가 이번에 출시한 저전력 저가형 JUNE CANYON NUC (Intel Celeron J4005)를 생각하신다면 J3455보다 성능이 꽤 낮게 나옵니다. (아무래도 코어가 두개 줄어서 나타나는 성능차인거 같습니다. 그래픽 성능도 별반 다르지 않아 hw트랜스코딩시 차이점도 없습니다.)

      일단 h.265까지 커버하려면 카비레이크 이상을 생각하셔야 합니다.(h.265 hw인코딩처리가 가능한게 카비레이크부터죠) 브라스웰/아폴로레이크/제미니레이크 같은 아톰 하위라인 말구요..

      저렴한 셀러론/펜티엄 J라인 또는 N라인을 생각하신다면 720p/1080p까지이고 이상은 생각하지 않는게 좋아보입니다.

    2. 허걱,, 상세한 답변과 추가정보 감사합니다.

      다행히도(?) 아직 UHD Blu-ray ODD를 구비하지 못한 관계로 리핑 영상은 h.264 1080p가 전부입니다.
      사실 쉴드tv를 가지고 있지만 이미지 자막을 포함한 영상은 하드웨어 트랜스코딩이 되지 않는다더군요… 그래서 펜티엄 NUC와 같은 저전력 소형pc 구매를 고려하고 있었습니다만,, 4k h.265도 고려해 i3-7100U 이상으로 가야겠군요..! (재생이 원활한 것은 알겠으나 트랜스코딩도 가능할지는 잘 모르겠네요..)

      조금 더 알아보니 HD 620이상부터는 HDR도 지원한다는 것 같습니다. 슬슬 4k 블루레이도 모아야 할 것 같습니다.

      다시 한번, 답변 감사드립니다.

    3. Plex 에서는 아직 HDR 영상 트랜스코딩을 정상적으로 지원하지 못한다더군요…
      혹시나 10bit 4K H.265 까지 생각한다면 좀 더 고사양으로 가는게 좋아보여요..

    4. 주말동안 Plex forum을 들락거리며 알아본 결과 레이븐릿지도 hw트랜스코딩이 된다는 것 같습니다.
      https://forums.plex.tv/discussion/comment/1629530
      하지만 Ryzen 5 2400G에서도 4k H.265 트랜스코딩은 0.7배속밖에 나오지 않는 것 같아 여전히 아쉽네요..
      https://forums.plex.tv/discussion/comment/1664372#Comment_1664372

      사실 plex support에도 amd를 언급을 하는 문구가 있기는 했었습니다만,,, 제가 워낙 영어실력이 짧다보니 그동안 착각해왔던 모양입니다..
      (고자질 하는 것은 아닙니다만,, 연초 모 사이트 나스당에서 plex는 인텔의 QSV를 이용하므로 암드는 현재 지원이 어려울 것이다라는 글이 있었기에 따로 정보를 찾아보지 않고 저도 오해하고 있었습니다.)

      plex support에 따르면 AMD 그래픽카드는 윈도우 환경에서만 hw 트랜스코딩이 가능하다고 합니다.
      https://support.plex.tv/articles/115002178853-using-hardware-accelerated-streaming/

    5. amd나 nvidia 칩셋을 사용한 hw트랜스코딩은 제한사항도 좀 있고 특히 리눅스에서는 VAAPI밖에 사용할 수 없는데 Plex에서 VAAPI를 이용하여 hw트랜스코딩 하는경우 빠른 움직임이 있는 곳에서 화질저하가 상당히 심합니다. (일명 깍뚜기, 잔상 등) amd그래픽카드는 언급하신 OS제약도 있고 기타 몇가지 제약이 더 있습니다. 드라이버에 따라 hw트랜스코딩이 전혀 안되기도 하는 등등… nvidia의 경우 hw와 드라이버의 제약으로 동시트랜스코딩에 제약이 있구요…(재대로 사용하려면 지포스보다는 쿼드로를 사용해야 제약이 없는데 가격적면에서 좌절을 봅니다.) 인텔 그래픽과 Windows를 고집한 이유가 Plex에서 가장 나은 hw트랜스코딩 환경이 구축되고 QSV를 이용할 수 있다는 점이죠… 동시트랜스코딩 제약도 없고 의외로 인텔 내장그래픽의 동영상 인코딩 능력도 꽤나 우수합니다.

      특히나 H.265의 경우 카비레이크에 내장된 그래픽 부터 인코딩 및 디코딩시 hw를 지원하기 때문에 Plex 포럼에서도 그런식으로 언급이 되었구요.

  5. 보노보니님의 홈피를 보고 저도 나스 를 구매했네요
    좋은 정보 감사드립니다

    저도 NUC를 구매 하여 시놀로지 PLEX 폴더에 있는 Library 폴더를 윈도우 PLEX 폴더에 넣을려고 하니 어느 위치에 넣어야 되는 지 잘 모르겠네요
    그냥 윈도우 PLEX 폴더에 넣으며 되는지요?
    정보가 없어 여쭈어 봅니다.

댓글 남기기