Skip to content

Latest commit

ย 

History

135 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

syno_nvidia_driver

Donate

NVIDIA driver for Synology DSM โ€” nothing to buy, nothing to sign in to (unlike vGPU).

Physical / passthrough GPUs. One command installs it, survives reboots, and enables hardware transcoding in Plex and Jellyfin.

Synology NVIDIA GPU Monitor

The companion Synology NVIDIA GPU Monitor package provides a lightweight, read-only floating dashboard for NVIDIA GPUs on DSM. It displays GPU and VRAM utilization, NVENC/NVDEC activity, temperature, fan speed, and clock rates using NVIDIA NVML. Install the SPK from the 0.6.2 release, then launch it from the DSM main menu.

Synology NVIDIA GPU Monitor floating dashboard


โš ๏ธ Prefer the .spk package over the curl | bash installer below.

The one-line install.sh installer writes the full driver (kernel modules + userspace, ~450MB) to /usr/local/nvidia, which lives on your system partition (/dev/md0) โ€” not your storage volume. On models with a small system partition this can eat most of the free space on its own (confirmed: #7), and every future driver update means uninstalling and reinstalling that same 450MB.

The .spk package installs through DSM's own Package Center mechanism instead. It's staged and stored entirely on your data volume (/volume1/@appstore/...) โ€” confirmed via synopkg's own install log โ€” so it never touches system-partition space at all, and upgrades are handled the normal DSM way (no manual uninstall/reinstall cycle).

Grab the right .spk for your platform and DSM version from the spk release and install it via Package Center โ†’ Manual Install.

Package Center manual-install confirmation screen for Synology NVIDIA Driver Synology NVIDIA Driver package shown as Running in Package Center, installed on Volume 1

The curl | bash installer below still exists for platforms without a matching .spk build, or for scripted/headless setups โ€” just be aware of the system-partition trade-off before reaching for it.


๐Ÿ’ก Why does that need saying?

The other way people get an NVIDIA GPU running on DSM goes through NVIDIA's vGPU stack โ€” a paid, licensed product that needs a license server on your network, which the driver checks in with periodically to keep working. It exists so one physical GPU can be split across many virtual machines.

A NAS doing transcoding needs none of that. This driver talks to the card directly, exactly the way a normal Linux desktop does. No license, no server, no account. The trade-off is that you can't partition the GPU across VMs โ€” which is not something home users do.




๐Ÿš€ Install

curl -sL https://github.com/PeterSuh-Q3/syno_nvidia_driver/releases/download/nvidia/install.sh | sudo bash

That's it. The installer detects your platform and GPU, picks the right driver, and refuses to run on anything it can't support.

install.sh installing driver 580.173.02 on an SA6400 with a Quadro P620


โš ๏ธ Restart Plex / Jellyfin afterwards

sudo /usr/syno/bin/synopkg restart PlexMediaServer

They scan for GPUs once at startup and cache the result. If the package was already running when you installed the driver, the GPU will simply not appear in its settings.

This is by far the most common "driver installed but transcoding doesn't work" cause โ€” not a CUDA or driver mismatch.


Requirements โ€” root/sudo, internet, an NVIDIA GPU, and a supported platform (see the matrix).

A boot hook (/usr/local/etc/rc.d/nvidia.sh) is installed automatically, so the driver reloads after every reboot.




โœ… Verify

nvidia-smi
sudo ls -l /dev/nvidia*

post-install verification: device nodes, loaded modules, compute capability

A healthy install has one /dev/nvidia<N> per physical GPU, plus nvidiactl and nvidia-uvm. If nvidia-smi works but CUDA apps fail, check that nvidia_uvm is in lsmod.

Device node reference โ€” what each node is for
Node Major What it is
/dev/nvidia0 195 The GPU itself โ€” one node per physical GPU. A second card appears as nvidia1.
/dev/nvidiactl 195 Driver control node; every client opens this first.
/dev/nvidia-uvm 240 Unified memory โ€” CUDA will not work without it.
/dev/nvidia-uvm-tools 240 Debug/profiling companion to UVM.
/dev/nvidia-caps/* 243 MIG capability nodes; unused outside datacenter GPUs.
/dev/nvidia-modeset 195 Mode-setting node.

Permissions are crw-rw-rw-, so unprivileged package users (Plex, Jellyfin, containers) can open them with no extra setup.

If the nodes are missing entirely, the modules did not load โ€” re-run the installer or check dmesg | grep -i nvrm.

โ“ /dev/dri is missing โ€” is that a problem?

No. On headless platforms it cannot exist, and nothing you install will change that. Synology builds no DRM subsystem on server platforms (epyc7002, epyc7003, icelaked, v1000nk, r1000nk โ€ฆ), so nvidia-drm.ko compiles into an effectively empty stub. Only the Intel iGPU platforms (geminilake, apollolake) have /dev/dri.

It does not matter for this driver's purpose: /dev/dri is for graphics output, Vulkan and VA-API. CUDA and NVENC/NVDEC use /dev/nvidia* only โ€” which is why hardware transcoding works fine without it.

If you saw /dev/dri with another solution on "the same box", that box was almost certainly running a different declared platform.




๐ŸŽฌ Jellyfin โ€” NVENC ffmpeg & auto-configuration

๐Ÿ†• New to Jellyfin? โ€” installing the package first (click to expand)

Everything below assumes the SynoCommunity Jellyfin package is already installed. If you've never used it, it's a free, open-source alternative to Plex/Emby, distributed through a third-party repository (not Package Center's default sources) โ€” this is normal and doesn't require unlocking anything on a genuine Synology unit beyond one settings toggle.

1. Add the SynoCommunity repository โ€” Package Center โ†’ โš™๏ธ Settings โ†’ Package Sources โ†’ Add, then enter https://packages.synocommunity.com.

Package Center settings showing the synocommunity package source added

2. Install Jellyfin โ€” Package Center โ†’ Community tab โ†’ search Jellyfin โ†’ Install.

Installed Jellyfin package info panel showing Running status and FFmpeg7 as a dependency

Note the FFmpeg 7 dependency in that panel โ€” that's the stock ffmpeg with no NVENC support the rest of this section replaces.


Answer y at Step 6 to install an NVENC-capable ffmpeg and point Jellyfin at it.

๐Ÿ’ก Plex needs none of this โ€” it has its own transcoder and works as soon as the driver is installed (just restart it).

The SynoCommunity package hardcodes its ffmpeg path as a launch argument, which outranks the Dashboard field โ€” so patching that argument is the only way to actually change it. The original is backed up to service-setup.pre-nvidia.bak.


๐Ÿช„ Automatic playback configuration

The installer then offers to configure Jellyfin's playback settings for you โ€” what Plex does automatically on detecting a GPU, except model-aware:

How it's decided
๐ŸŽฏ NVENC on/off Probed against your actual card
๐ŸŽž๏ธ HEVC / AV1 encoding Real 1-frame test encode โ€” a Pascal card never gets AV1, a Kepler card never gets HEVC
โšก Encoder preset slow โ€” measured on a P620, p1โ†’p7 differ by only ~17% throughput, so there's no reason to trade quality for speed on a fixed-function encoder
๐Ÿง  Transcode scratch /dev/shm/jellyfin-transcodes in RAM, with throttling + segment deletion enabled to keep it bounded

It runs once. A stamp file prevents it from ever overwriting settings you change afterward. If Jellyfin's setup wizard hasn't been completed yet, the same check happens automatically on the next boot.


๐Ÿ“ธ See exactly what changes โ€” real Dashboard screenshots, changed fields boxed in red

Everything outside the red boxes is either a Jellyfin default the script leaves alone, or a setting (CRF, tone-mapping algorithm/mode, deinterlacing โ€ฆ) that only applies to software encoding and doesn't matter once NVENC is on.

Hardware acceleration + decode codecs โ€” HardwareAccelerationType set to nvenc; the decode-codec checklist is written from a real capability probe (here: everything through VP9, no AV1 โ€” this GPU is Pascal).

Hardware acceleration set to Nvidia NVENC, decode codecs H264 through VP9 checked, AV1 unchecked

Encoding options โ€” NVDEC decoder, hardware encoding, HEVC/AV1 encoding, and tone mapping are each toggled based on what the card can actually do.

Enable enhanced NVDEC decoder, hardware encoding, HEVC encoding, and tone mapping all checked; AV1 encoding unchecked

FFmpeg + transcode paths โ€” points Jellyfin at the NVENC ffmpeg this installer just set up, and moves the transcode scratch directory into RAM.

FFmpeg path set to /usr/local/nvidia/bin/ffmpeg, transcode path set to /dev/shm/jellyfin-transcodes

Encoder preset โ€” the one non-toggle field, set to slow (see the table above for why that's not the performance trade-off it sounds like).

Encoding preset set to slow




๐Ÿณ Docker (Container Manager) GPU access

Optional Step 9 lets containers use the GPU โ€” Ollama, PyTorch, vLLM, and so on.

sudo /usr/syno/bin/synopkg restart ContainerManager   # once, after setup

docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all \
  nvidia/cuda:12.9.0-base-ubuntu24.04 nvidia-smi

โš ๏ธ Use --runtime=nvidia, not --gpus all. The --gpus flag needs Docker 25+ CDI support; Synology's Container Manager doesn't have it, and Synology controls that version โ€” not you.

Your existing daemon.json settings are preserved (merged, with a backup), and uninstall.sh reverses everything. Full design notes: docs/container-runtime-design.md.




๐Ÿ“‹ Supported platforms


Kernel 5.10.55 โ€” all four branches

Platform Example models 470 535 550 580
epyc7002 SA6400 โœ… โœ… โœ… โœ…
epyc7003 FS6420 โœ… โœ… โœ… โœ…
epyc7003ntb PAS7700 โœ… โœ… โœ… โœ…
icelaked FS3420 / RS3626xs / RS4826xs+ โœ… โœ… โœ… โœ…
v1000nk (Ryzen Embedded V1000, no-key) โœ… โœ… โœ… โœ…
r1000nk (Ryzen Embedded R1000, no-key) โœ… โœ… โœ… โœ…
geminilakenk DS225+ / DS425+ โœ… โœ… โœ… โœ…

Kernel 4.4 โ€” 550 only

Platform Example models DSM 7.0 / 7.1 DSM 7.2+
apollolake DS918+ / DS620slim / DS1019+ โœ… โœ…
broadwell DS3617xs / RS3617xs+ โœ… โœ…
broadwellnk DS3622xs+ / RS4021xs+ โœ… โœ…
broadwellnkv2 RS3621xs+ โœ… โœ…
broadwellntbap SA3400 โœ… โœ…
geminilake DS220+ / DS420+ / DS720+ โœ… โœ…
purley FS6400 / HD6500 โœ… โœ…
r1000 DS723+ / DS923+ / DS1522+ โœ… โœ…
v1000 DS1621+ / DS1821+ / DS2422+ โœ… โœ…

โš ๏ธ These 4.4 builds are not yet verified on real hardware. They compile cleanly with the correct vermagic, but no GPU-equipped 4.4 box has been tested. Reports welcome.

Not supported: denverton (DSM already ships a vanilla NVIDIA driver there for DVA) and kernel 3.10 platforms โ€” avoton / braswell / bromolow.

Why 550 is the ceiling on kernel 4.4

It's NVIDIA's limit, not a packaging choice. Every branch declares a kernel floor in common/inc/nv-linux.h:

Branch Declared floor
470 / 535 / 550 2.6.32
560 / 570 / 575 / 580 4.15 โ€” #error "This driver does not support kernels older than Linux 4.15!"

That was measured, not inferred โ€” 560/570/575/580 were each built against a 4.4.302 tree and all four stop at that #error. 550 builds through cleanly.

Modules are published per kernel version because the same platform ships a different kernel depending on DSM release (7.0/7.1 = 4.4.180, 7.2+ = 4.4.302) and vermagic must match exactly. The installer resolves from uname -r, not the platform name. Upgrade DSM across that boundary and the boot hook detects the mismatch, refuses to load, and logs why.


Driver branches

Branch GPU coverage Native CUDA Notes
470.256.02 Kepler โ€ฆ Ampere 11.4 Legacy LTSB โ€” for old GPUs 535+ dropped
535.230.02 Maxwell โ€ฆ Ada 12.2 Production/LTS. Verified on P620
550.163.01 Maxwell โ€ฆ Ada 12.4 Ceiling for kernel 4.4
580.173.02 Maxwell โ€ฆ Ampere 13.0 โญ Recommended. Last branch supporting Maxwell/Pascal/Volta

โญ 580 is the right choice for most GPUs. It supersedes 535/550 and raises what Pascal can run from CUDA 12.4 to 12.9. Only Kepler-era cards still need 470.

โš ๏ธ Ada (RTX 40) / Blackwell (RTX 50) need GSP firmware that NVIDIA doesn't bundle in the 580 .run โ€” the installer warns you. Use 535/550 on those cards. Turing / Ampere GSP firmware is bundled and deployed automatically.




๐ŸŽฏ CUDA โ€” what actually applies to your GPU

Two independent things decide which CUDA you can run:

Set by What it limits
Driver the branch you install the highest CUDA API the driver speaks
GPU architecture the silicon โ€” cannot be changed which toolkits can generate code for it
Compute cap. Architecture Example GPUs Max usable CUDA
6.0 / 6.1 Pascal Quadro P620 / P1000, Tesla P4 / P40, GTX 10xx 12.9
7.0 Volta Tesla V100 12.9
7.5 Turing Tesla T4, RTX 20xx 13.0
8.0 / 8.6 Ampere A100 / A10, RTX 30xx 13.0
8.9 Ada L4 / L40S, RTX 40xx 13.0
12.0 Blackwell RTX 50xx 13.0

7.5 is the dividing line โ€” CUDA 13.0 dropped code generation for everything below it. Installing 580 on a Pascal card does not unlock CUDA 13.

sudo nvidia-smi --query-gpu=name,compute_cap,driver_version --format=csv

โš ๏ธ Don't read the CUDA version off the nvidia-smi header. It shows the driver's maximum, not your GPU's. compute_cap is the value that decides.


๐Ÿ’ก CUDA is irrelevant for transcoding. Plex and Jellyfin use the dedicated NVENC/NVDEC engines, not the CUDA toolkit. If hardware transcoding is missing, it's almost always the stale device list above โ€” restart the package.




๐Ÿงน Uninstall

curl -sL https://github.com/PeterSuh-Q3/syno_nvidia_driver/releases/download/nvidia/uninstall.sh | sudo bash

uninstall.sh run




๐Ÿ› ๏ธ Building from source

See DEVELOPING.md for the build/producer side โ€” toolchain, 2-layer packaging, publishing, and compat-patch notes.


๐Ÿ’– Sponsor ยท PayPal




๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด (ํŽผ์ณ ๋ณด๊ธฐ)

syno_nvidia_driver

Synology DSM์šฉ NVIDIA ๋“œ๋ผ์ด๋ฒ„ โ€” (vGPU๋ฅผ ์œ„ํ•ด) ์‚ด ๊ฒƒ๋„, ๋กœ๊ทธ์ธํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ฆฌ / passthrough GPU ์ „์šฉ. ๋ช…๋ น ํ•œ ์ค„๋กœ ์„ค์น˜๋˜๊ณ , ์žฌ๋ถ€ํŒ…ํ•ด๋„ ์œ ์ง€๋˜๋ฉฐ, Plex์™€ Jellyfin์˜ ํ•˜๋“œ์›จ์–ด ํŠธ๋žœ์Šค์ฝ”๋”ฉ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.


โš ๏ธ ์•„๋ž˜ curl | bash ์„ค์น˜๊ธฐ๋ณด๋‹ค .spk ํŒจํ‚ค์ง€๋ฅผ ์šฐ์„  ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ์ค„์งœ๋ฆฌ install.sh ์„ค์น˜๊ธฐ๋Š” ๋“œ๋ผ์ด๋ฒ„ ์ „์ฒด(์ปค๋„ ๋ชจ๋“ˆ + ์œ ์ €์ŠคํŽ˜์ด์Šค, ์•ฝ 450MB)๋ฅผ /usr/local/nvidia์— ์”๋‹ˆ๋‹ค โ€” ์ด ๊ฒฝ๋กœ๋Š” ์ €์žฅ ๋ณผ๋ฅจ์ด ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ ํŒŒํ‹ฐ์…˜(/dev/md0)์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํŒŒํ‹ฐ์…˜์ด ์ž‘์€ ๋ชจ๋ธ์—์„œ๋Š” ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ ์—ฌ์œ  ๊ณต๊ฐ„ ๋Œ€๋ถ€๋ถ„์„ ์†Œ์ง„ํ•  ์ˆ˜ ์žˆ๊ณ (์‹ค์ฆ ์‚ฌ๋ก€: #7), ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ 450MB๋ฅผ ์–ธ์ธ์Šคํ†จ-์žฌ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

.spk ํŒจํ‚ค์ง€๋Š” DSM ์ž์ฒด์˜ ํŒจํ‚ค์ง€ ์„ผํ„ฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์ „ ๊ณผ์ •์ด ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ(/volume1/@appstore/...)์—์„œ๋งŒ ์Šคํ…Œ์ด์ง•ยท์ €์žฅ๋˜๋ฏ€๋กœ (synopkg์˜ ์„ค์น˜ ๋กœ๊ทธ๋กœ ์ง์ ‘ ํ™•์ธ) ์‹œ์Šคํ…œ ํŒŒํ‹ฐ์…˜ ๊ณต๊ฐ„์„ ์ „ํ˜€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ , ์—…๋ฐ์ดํŠธ๋„ DSM ํ‘œ์ค€ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค(์ˆ˜๋™ ์–ธ์ธ์Šคํ†จ-์žฌ์„ค์น˜ ๋ถˆํ•„์š”).

์‚ฌ์šฉ ์ค‘์ธ ํ”Œ๋žซํผ/DSM ๋ฒ„์ „์— ๋งž๋Š” .spk๋ฅผ spk ๋ฆด๋ฆฌ์ฆˆ ์—์„œ ๋ฐ›์•„ ํŒจํ‚ค์ง€ ์„ผํ„ฐ โ†’ ์ˆ˜๋™ ์„ค์น˜๋กœ ์„ค์น˜ํ•˜์„ธ์š”.

ํŒจํ‚ค์ง€ ์„ผํ„ฐ์˜ Synology NVIDIA Driver ์ˆ˜๋™ ์„ค์น˜ ํ™•์ธ ํ™”๋ฉด ํŒจํ‚ค์ง€ ์„ผํ„ฐ์—์„œ Synology NVIDIA Driver๊ฐ€ Running ์ƒํƒœ๋กœ Volume 1์— ์„ค์น˜๋œ ํ™”๋ฉด

์•„๋ž˜์˜ curl | bash ์„ค์น˜๊ธฐ๋Š” ์•„์ง .spk๊ฐ€ ์—†๋Š” ํ”Œ๋žซํผ์ด๋‚˜ ์Šคํฌ๋ฆฝํŠธ/ํ—ค๋“œ๋ฆฌ์Šค ์„ค์น˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ๋‚จ๊ฒจ๋’€์Šต๋‹ˆ๋‹ค โ€” ์‹œ์Šคํ…œ ํŒŒํ‹ฐ์…˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ฐ์•ˆํ•˜๊ณ  ์“ฐ์„ธ์š”.


๐Ÿ’ก ์ด ๋ง์ด ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

DSM์—์„œ NVIDIA GPU๋ฅผ ์“ฐ๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์€ NVIDIA์˜ vGPU ์Šคํƒ์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์œ ๋ฃŒ ๋ผ์ด์„ ์Šค ์ œํ’ˆ์ด๋ผ ๋„คํŠธ์›Œํฌ์— ๋ผ์ด์„ ์Šค ์„œ๋ฒ„๋ฅผ ๋„์›Œ์•ผ ํ•˜๊ณ , ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ทธ ์„œ๋ฒ„์— ํ™•์ธ์„ ๋ฐ›์•„์•ผ ๊ณ„์† ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ GPU ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐ€์ƒ๋จธ์‹ ์— ์ชผ๊ฐœ ์“ฐ๋ผ๊ณ  ๋งŒ๋“ค์–ด์ง„ ๋ฌผ๊ฑด์ž…๋‹ˆ๋‹ค.

ํŠธ๋žœ์Šค์ฝ”๋”ฉํ•˜๋Š” NAS์—๋Š” ๊ทธ๋Ÿฐ ๊ฒŒ ์ „ํ˜€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋“œ๋ผ์ด๋ฒ„๋Š” ์ผ๋ฐ˜ ๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ๊ณผ ๋˜‘๊ฐ™์ด ๊ทธ๋ž˜ํ”ฝ์นด๋“œ์™€ ์ง์ ‘ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด์„ ์Šค๋„, ์„œ๋ฒ„๋„, ๊ณ„์ •๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  GPU๋ฅผ ์—ฌ๋Ÿฌ VM์— ์ชผ๊ฐค ์ˆ˜๋Š” ์—†๋Š”๋ฐ, ๊ฐ€์ •์—์„œ ์“ธ ์ผ์ด ์—†๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.




๐Ÿš€ ์„ค์น˜

curl -sL https://github.com/PeterSuh-Q3/syno_nvidia_driver/releases/download/nvidia/install.sh | sudo bash

์ด๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ์„ค์น˜๊ธฐ๊ฐ€ ํ”Œ๋žซํผ๊ณผ GPU๋ฅผ ์ž๋™ ๊ฐ์ง€ํ•ด ๋งž๋Š” ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ณ ๋ฅด๊ณ , ์ง€์› ๋ถˆ๊ฐ€ํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” ์‹คํ–‰์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

Quadro P620์ด ์žฅ์ฐฉ๋œ SA6400์—์„œ install.sh ๊ฐ€ 580.173.02 ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•˜๋Š” ํ™”๋ฉด


โš ๏ธ ์„ค์น˜ ํ›„ Plex / Jellyfin์„ ์žฌ์‹œ์ž‘ํ•˜์„ธ์š”

sudo /usr/syno/bin/synopkg restart PlexMediaServer

์ด ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ๊ธฐ๋™ ์‹œ ํ•œ ๋ฒˆ๋งŒ GPU๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•  ๋•Œ ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ด์—ˆ๋‹ค๋ฉด, ์„ค์ • ํ™”๋ฉด์— GPU๊ฐ€ ์•„์˜ˆ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

"๋“œ๋ผ์ด๋ฒ„๋Š” ๊น”์•˜๋Š”๋ฐ ํŠธ๋žœ์Šค์ฝ”๋”ฉ์ด ์•ˆ ๋œ๋‹ค"์˜ ์••๋„์  1์œ„ ์›์ธ์ž…๋‹ˆ๋‹ค โ€” CUDA๋‚˜ ๋“œ๋ผ์ด๋ฒ„ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.


์š”๊ตฌ ์‚ฌํ•ญ โ€” root/sudo, ์ธํ„ฐ๋„ท, NVIDIA GPU, ๊ทธ๋ฆฌ๊ณ  ์ง€์› ํ”Œ๋žซํผ (๋งคํŠธ๋ฆญ์Šค ์ฐธ๊ณ ).

๋ถ€ํŒ… ํ›…(/usr/local/etc/rc.d/nvidia.sh)์ด ์ž๋™์œผ๋กœ ์„ค์น˜๋˜์–ด, ์žฌ๋ถ€ํŒ…ํ•  ๋•Œ๋งˆ๋‹ค ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋‹ค์‹œ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.




โœ… ์„ค์น˜ ๊ฒ€์ฆ

nvidia-smi
sudo ls -l /dev/nvidia*

์„ค์น˜ ๊ฒ€์ฆ: ๋””๋ฐ”์ด์Šค ๋…ธ๋“œยท๋กœ๋“œ๋œ ๋ชจ๋“ˆยทcompute capability

์ •์ƒ ์„ค์น˜๋ผ๋ฉด ๋ฌผ๋ฆฌ GPU ํ•˜๋‚˜๋‹น /dev/nvidia<N> ํ•˜๋‚˜์™€ nvidiactl, nvidia-uvm์ด ๋ณด์ž…๋‹ˆ๋‹ค. nvidia-smi๋Š” ๋˜๋Š”๋ฐ CUDA ์•ฑ์ด ์‹คํŒจํ•œ๋‹ค๋ฉด lsmod์— nvidia_uvm์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋””๋ฐ”์ด์Šค ๋…ธ๋“œ ๋ ˆํผ๋Ÿฐ์Šค โ€” ๊ฐ ๋…ธ๋“œ์˜ ์—ญํ• 
๋…ธ๋“œ ๋ฉ”์ด์ € ์„ค๋ช…
/dev/nvidia0 195 GPU ๋ณธ์ฒด โ€” ๋ฌผ๋ฆฌ GPU ํ•˜๋‚˜๋‹น ํ•˜๋‚˜. ๋‘ ๋ฒˆ์งธ ์นด๋“œ๋Š” nvidia1.
/dev/nvidiactl 195 ๋“œ๋ผ์ด๋ฒ„ ์ œ์–ด ๋…ธ๋“œ. ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์—ฝ๋‹ˆ๋‹ค.
/dev/nvidia-uvm 240 ํ†ตํ•ฉ ๋ฉ”๋ชจ๋ฆฌ โ€” ์ด๊ฒŒ ์—†์œผ๋ฉด CUDA๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
/dev/nvidia-uvm-tools 240 UVM ๋””๋ฒ„๊ทธ/ํ”„๋กœํŒŒ์ผ๋ง์šฉ ์ง.
/dev/nvidia-caps/* 243 MIG ๊ด€๋ จ ๋…ธ๋“œ. ๋ฐ์ดํ„ฐ์„ผํ„ฐ GPU ์™ธ์—๋Š” ์“ฐ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
/dev/nvidia-modeset 195 ๋ชจ๋“œ์…‹ ๋…ธ๋“œ.

๊ถŒํ•œ์ด crw-rw-rw-๋ผ ๋น„ํŠน๊ถŒ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ์ž(Plex, Jellyfin, ์ปจํ…Œ์ด๋„ˆ)๋„ ๋ณ„๋„ ์„ค์ • ์—†์ด ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ๊ฐ€ ์•„์˜ˆ ์—†๋‹ค๋ฉด ๋ชจ๋“ˆ์ด ๋กœ๋“œ๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค โ€” ์„ค์น˜๊ธฐ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ dmesg | grep -i nvrm์„ ํ™•์ธํ•˜์„ธ์š”.

โ“ /dev/dri๊ฐ€ ์•ˆ ๋ณด์ด๋Š”๋ฐ ๋ฌธ์ œ์ธ๊ฐ€์š”?

์•„๋‹™๋‹ˆ๋‹ค. ํ—ค๋“œ๋ฆฌ์Šค ํ”Œ๋žซํผ์—์„œ๋Š” ์กด์žฌํ•  ์ˆ˜ ์—†๊ณ , ๋ฌด์—‡์„ ์„ค์น˜ํ•ด๋„ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ๋†€๋กœ์ง€๋Š” ์„œ๋ฒ„ ํ”Œ๋žซํผ(epyc7002, epyc7003, icelaked, v1000nk, r1000nk ๋“ฑ)์— DRM ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ์•„์˜ˆ ๋นŒ๋“œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, nvidia-drm.ko๋Š” ์‚ฌ์‹ค์ƒ ๋นˆ ์Šคํ…์œผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. /dev/dri๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ Intel iGPU ํ”Œ๋žซํผ(geminilake, apollolake)๋ฟ์ž…๋‹ˆ๋‹ค.

์ด ๋“œ๋ผ์ด๋ฒ„์˜ ๋ชฉ์ ์—๋Š” ์•„๋ฌด ์ƒ๊ด€์ด ์—†์Šต๋‹ˆ๋‹ค. /dev/dri๋Š” ๊ทธ๋ž˜ํ”ฝ ์ถœ๋ ฅยทVulkanยท VA-API์šฉ์ด๊ณ , CUDA์™€ NVENC/NVDEC๋Š” /dev/nvidia*๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค โ€” ๊ทธ๋ž˜์„œ /dev/dri ์—†์ด๋„ ํ•˜๋“œ์›จ์–ด ํŠธ๋žœ์Šค์ฝ”๋”ฉ์ด ์ •์ƒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

"๊ฐ™์€ ๋ฐ•์Šค"์—์„œ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์œผ๋กœ๋Š” /dev/dri๊ฐ€ ๋ณด์˜€๋‹ค๋ฉด, ๊ทธ ๋ฐ•์Šค๋Š” ๊ฑฐ์˜ ํ™•์‹คํžˆ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ ์„ ์–ธ๋˜์–ด ๋™์ž‘ํ•˜๊ณ  ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.




๐ŸŽฌ Jellyfin โ€” NVENC ffmpeg & ์ž๋™ ๊ตฌ์„ฑ

๐Ÿ†• Jellyfin์„ ์ฒ˜์Œ ์“ฐ์‹œ๋‚˜์š”? โ€” ํŒจํ‚ค์ง€ ์„ค์น˜๋ถ€ํ„ฐ (ํŽผ์ณ ๋ณด๊ธฐ)

์•„๋ž˜ ๋‚ด์šฉ์€ SynoCommunity ๋ฐฐํฌํŒ Jellyfin ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋ผ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋“ค์–ด๋ณด์…จ๋‹ค๋ฉด, Plex/Emby์˜ ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค ๋Œ€์•ˆ ํ”„๋กœ๊ทธ๋žจ์ด๊ณ  ํŒจํ‚ค์ง€ ์„ผํ„ฐ ๊ธฐ๋ณธ ์ €์žฅ์†Œ๊ฐ€ ์•„๋‹Œ ์„œ๋“œํŒŒํ‹ฐ ์ €์žฅ์†Œ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค โ€” ์ •ํ’ˆ ์‹œ๋†€๋กœ์ง€ ์žฅ๋น„์—์„œ๋„ ์„ค์ • ํ•˜๋‚˜๋งŒ ๋ฐ”๊พธ๋ฉด ๋˜๋Š” ์ •์ƒ์ ์ธ ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค.

1. SynoCommunity ์ €์žฅ์†Œ ์ถ”๊ฐ€ โ€” ํŒจํ‚ค์ง€ ์„ผํ„ฐ โ†’ โš™๏ธ ์„ค์ • โ†’ ํŒจํ‚ค์ง€ ์†Œ์Šค โ†’ ์ถ”๊ฐ€, ๊ทธ๋‹ค์Œ https://packages.synocommunity.com ์ž…๋ ฅ.

synocommunity ํŒจํ‚ค์ง€ ์†Œ์Šค๊ฐ€ ์ถ”๊ฐ€๋œ ํŒจํ‚ค์ง€ ์„ผํ„ฐ ์„ค์ • ํ™”๋ฉด

2. Jellyfin ์„ค์น˜ โ€” ํŒจํ‚ค์ง€ ์„ผํ„ฐ โ†’ ์ปค๋ฎค๋‹ˆํ‹ฐ ํƒญ โ†’ Jellyfin ๊ฒ€์ƒ‰ โ†’ ์„ค์น˜.

์„ค์น˜๋œ Jellyfin ํŒจํ‚ค์ง€ ์ •๋ณด ํŒจ๋„ - Running ์ƒํƒœ์™€ ์ข…์† ํŒจํ‚ค์ง€ FFmpeg 7 ํ‘œ์‹œ

์ด ํŒจ๋„์˜ FFmpeg 7 ์ข…์† ํŒจํ‚ค์ง€๋ฅผ ๋ˆˆ์—ฌ๊ฒจ๋ณด์„ธ์š” โ€” ์ด๋ฒˆ ์„น์…˜์—์„œ ๊ต์ฒดํ• , NVENC๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋ณธ ffmpeg์ž…๋‹ˆ๋‹ค.


6๋‹จ๊ณ„์—์„œ y๋ฅผ ์„ ํƒํ•˜๋ฉด NVENC ์ง€์› ffmpeg๋ฅผ ์„ค์น˜ํ•˜๊ณ  Jellyfin์ด ๊ทธ๊ฒƒ์„ ์“ฐ๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Plex๋Š” ์ด ๊ณผ์ •์ด ์ „ํ˜€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค โ€” ์ž์ฒด ํŠธ๋žœ์Šค์ฝ”๋”๊ฐ€ ์žˆ์–ด์„œ ๋“œ๋ผ์ด๋ฒ„๋งŒ ์„ค์น˜ํ•˜๊ณ  ์žฌ์‹œ์ž‘ํ•˜๋ฉด ๋ฐ”๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

SynoCommunity ํŒจํ‚ค์ง€๋Š” ffmpeg ๊ฒฝ๋กœ๋ฅผ ์‹คํ–‰ ์ธ์ž๋กœ ํ•˜๋“œ์ฝ”๋”ฉํ•ด ๋‘๋Š”๋ฐ, ์ด ์ธ์ž๊ฐ€ ๋Œ€์‹œ๋ณด๋“œ ์„ค์ •๊ฐ’๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ์ธ์ž๋ฅผ ํŒจ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์›๋ณธ์€ service-setup.pre-nvidia.bak์— ๋ฐฑ์—…๋ฉ๋‹ˆ๋‹ค.


๐Ÿช„ ์žฌ์ƒ ์„ค์ • ์ž๋™ ๊ตฌ์„ฑ

์ด์–ด์„œ Jellyfin์˜ ์žฌ์ƒ ์„ค์ •๊นŒ์ง€ ์ž๋™ ๊ตฌ์„ฑํ• ์ง€ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค โ€” Plex๊ฐ€ GPU๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ•ด์ฃผ๋Š” ์ผ๊ณผ ๊ฐ™์ง€๋งŒ, GPU ๋ชจ๋ธ์„ ์‹ค์ œ๋กœ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค:

ํŒ์ • ๋ฐฉ์‹
๐ŸŽฏ NVENC ํ™œ์„ฑํ™” ์‹ค์ œ ์นด๋“œ์— ์‹œํ—˜ ์ธ์ฝ”๋”ฉ์„ ๋Œ๋ ค ํ™•์ธ
๐ŸŽž๏ธ HEVC / AV1 ์ธ์ฝ”๋”ฉ 1ํ”„๋ ˆ์ž„ ์‹ค์ œ ์‹œํ—˜ ์ธ์ฝ”๋”ฉ โ€” Pascal ์นด๋“œ์— AV1์ด, Kepler ์นด๋“œ์— HEVC๊ฐ€ ์ผœ์ง€๋Š” ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค
โšก ์ธ์ฝ”๋” ํ”„๋ฆฌ์…‹ slow โ€” P620 ์‹ค์ธก ๊ฒฐ๊ณผ p1โ†’p7 ์ฒ˜๋ฆฌ๋Ÿ‰ ์ฐจ์ด๊ฐ€ 17%์— ๋ถˆ๊ณผํ•ด, ๊ณ ์ •๊ธฐ๋Šฅ ์ธ์ฝ”๋”์—์„œ ํ’ˆ์งˆ์„ ์†๋„์™€ ๋งž๋ฐ”๊ฟ€ ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค
๐Ÿง  ํŠธ๋žœ์Šค์ฝ”๋“œ ์ž„์‹œ๊ฒฝ๋กœ RAM์˜ /dev/shm/jellyfin-transcodes. ์šฉ๋Ÿ‰์ด ๋ฌดํ•œ์ • ๋Š˜์ง€ ์•Š๋„๋ก ์Šค๋กœํ‹€๋ง๊ณผ ์„ธ๊ทธ๋จผํŠธ ์‚ญ์ œ๋ฅผ ํ•จ๊ป˜ ์ผญ๋‹ˆ๋‹ค

์ตœ์ดˆ 1ํšŒ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒฌํ”„ ํŒŒ์ผ์ด ์žˆ์–ด, ์ดํ›„ ์ง์ ‘ ๋ฐ”๊พผ ์„ค์ •์„ ๋ฎ์–ด์“ฐ๋Š” ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. Jellyfin ์„ค์น˜ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์•„์ง ๋งˆ์น˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๊ฐ™์€ ํ™•์ธ์ด ๋‹ค์Œ ๋ถ€ํŒ… ์‹œ ์ž๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.


๐Ÿ“ธ ์‹ค์ œ๋กœ ๋ฐ”๋€Œ๋Š” ๋ถ€๋ถ„ ๋ณด๊ธฐ โ€” ์‹ค๊ธฐ ๋Œ€์‹œ๋ณด๋“œ ์บก์ฒ˜, ๋ณ€๊ฒฝ๋˜๋Š” ํ•„๋“œ๋ฅผ ๋นจ๊ฐ„ ๋ฐ•์Šค๋กœ ํ‘œ์‹œ

๋นจ๊ฐ„ ๋ฐ•์Šค ๋ฐ–์€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์†๋Œ€์ง€ ์•Š๋Š” Jellyfin ๊ธฐ๋ณธ๊ฐ’์ด๊ฑฐ๋‚˜, NVENC๊ฐ€ ์ผœ์ง„ ๋’ค์—๋Š” ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง€๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ธ์ฝ”๋”ฉ ์ „์šฉ ์„ค์ •(CRF, ํ†ค๋งคํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ชจ๋“œ, ๋””์ธํ„ฐ๋ ˆ์ด์‹ฑ ๋“ฑ)์ž…๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด ๊ฐ€์† + ๋””์ฝ”๋“œ ์ฝ”๋ฑ โ€” HardwareAccelerationType์ด nvenc๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋””์ฝ”๋“œ ์ฝ”๋ฑ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Š” ์‹ค์ œ ์นด๋“œ ๋Šฅ๋ ฅ ํ”„๋กœ๋ธŒ ๊ฒฐ๊ณผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค (์ด GPU๋Š” Pascal์ด๋ผ VP9๊นŒ์ง€๋งŒ ์ผœ์ง€๊ณ  AV1์€ ๊บผ์ง‘๋‹ˆ๋‹ค).

ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์ด Nvidia NVENC๋กœ ์„ค์ •๋˜๊ณ , H264๋ถ€ํ„ฐ VP9๊นŒ์ง€ ๋””์ฝ”๋“œ ์ฝ”๋ฑ์ด ์ฒดํฌ๋˜๋ฉฐ AV1์€ ๋ฏธ์ฒดํฌ ์ƒํƒœ

์ธ์ฝ”๋”ฉ ์˜ต์…˜ โ€” NVDEC ๋””์ฝ”๋”, ํ•˜๋“œ์›จ์–ด ์ธ์ฝ”๋”ฉ, HEVC/AV1 ์ธ์ฝ”๋”ฉ, ํ†ค๋งคํ•‘์ด ๊ฐ๊ฐ ์นด๋“œ๊ฐ€ ์‹ค์ œ๋กœ ์ง€์›ํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ์ผœ์ง€๊ฑฐ๋‚˜ ๊บผ์ง‘๋‹ˆ๋‹ค.

ํ–ฅ์ƒ๋œ NVDEC ๋””์ฝ”๋”, ํ•˜๋“œ์›จ์–ด ์ธ์ฝ”๋”ฉ, HEVC ์ธ์ฝ”๋”ฉ, ํ†ค๋งคํ•‘์ด ๋ชจ๋‘ ์ฒดํฌ๋˜๊ณ  AV1 ์ธ์ฝ”๋”ฉ์€ ๋ฏธ์ฒดํฌ ์ƒํƒœ

FFmpeg ๊ฒฝ๋กœ + ํŠธ๋žœ์Šค์ฝ”๋“œ ๊ฒฝ๋กœ โ€” ๋ฐฉ๊ธˆ ์„ค์น˜๊ธฐ๊ฐ€ ์„ธํŒ…ํ•œ NVENC ffmpeg๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•˜๊ณ , ํŠธ๋žœ์Šค์ฝ”๋“œ ์ž„์‹œ๊ฒฝ๋กœ๋ฅผ RAM์œผ๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค.

FFmpeg ๊ฒฝ๋กœ๊ฐ€ /usr/local/nvidia/bin/ffmpeg ๋กœ, ํŠธ๋žœ์Šค์ฝ”๋“œ ๊ฒฝ๋กœ๊ฐ€ /dev/shm/jellyfin-transcodes ๋กœ ์„ค์ •๋จ

์ธ์ฝ”๋” ํ”„๋ฆฌ์…‹ โ€” ์œ ์ผํ•˜๊ฒŒ ํ† ๊ธ€์ด ์•„๋‹Œ ๊ฐ’ ํ•„๋“œ๋กœ, slow๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค (์™œ ์ด๊ฒŒ ์„ฑ๋Šฅ ์†ํ•ด๊ฐ€ ์•„๋‹Œ์ง€๋Š” ์œ„ ํ‘œ ์ฐธ๊ณ ).

์ธ์ฝ”๋”ฉ ํ”„๋ฆฌ์…‹์ด slow ๋กœ ์„ค์ •๋จ




๐Ÿณ Docker(Container Manager) GPU ์—ฐ๋™

์„ ํƒ 9๋‹จ๊ณ„์—์„œ ์ปจํ…Œ์ด๋„ˆ๋„ GPU๋ฅผ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค โ€” Ollama, PyTorch, vLLM ๋“ฑ.

sudo /usr/syno/bin/synopkg restart ContainerManager   # ์„ค์ • ํ›„ ํ•œ ๋ฒˆ

docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all \
  nvidia/cuda:12.9.0-base-ubuntu24.04 nvidia-smi

โš ๏ธ --gpus all์ด ์•„๋‹ˆ๋ผ --runtime=nvidia๋ฅผ ์“ฐ์„ธ์š”. --gpus ํ”Œ๋ž˜๊ทธ๋Š” Docker 25+์˜ CDI ์ง€์›์ด ํ•„์š”ํ•œ๋ฐ, ์‹œ๋†€๋กœ์ง€ Container Manager์—๋Š” ๊ทธ ๊ธฐ๋Šฅ์ด ์—†๊ณ  ๋ฒ„์ „์€ ์‹œ๋†€๋กœ์ง€๊ฐ€ ์ •ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž๊ฐ€ ์˜ฌ๋ฆด ์ˆ˜ ์—†์Œ).

๊ธฐ์กด daemon.json ์„ค์ •์€ ๋ณ‘ํ•ฉ ๋ฐฉ์‹์œผ๋กœ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๋ฉฐ(๋ฐฑ์—…๋„ ๋‚จ์Šต๋‹ˆ๋‹ค), uninstall.sh๊ฐ€ ์ „๋ถ€ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค. ์ „์ฒด ์„ค๊ณ„ ๋‚ด์šฉ์€ docs/container-runtime-design.md ์ฐธ๊ณ .




๐Ÿ“‹ ์ง€์› ํ”Œ๋žซํผ


์ปค๋„ 5.10.55 โ€” 4๊ฐœ ๋ธŒ๋žœ์น˜ ์ „๋ถ€

ํ”Œ๋žซํผ ์˜ˆ์‹œ ๋ชจ๋ธ 470 535 550 580
epyc7002 SA6400 โœ… โœ… โœ… โœ…
epyc7003 FS6420 โœ… โœ… โœ… โœ…
epyc7003ntb PAS7700 โœ… โœ… โœ… โœ…
icelaked FS3420 / RS3626xs / RS4826xs+ โœ… โœ… โœ… โœ…
v1000nk (Ryzen Embedded V1000, no-key) โœ… โœ… โœ… โœ…
r1000nk (Ryzen Embedded R1000, no-key) โœ… โœ… โœ… โœ…
geminilakenk DS225+ / DS425+ โœ… โœ… โœ… โœ…

์ปค๋„ 4.4 โ€” 550 ์ „์šฉ

ํ”Œ๋žซํผ ์˜ˆ์‹œ ๋ชจ๋ธ DSM 7.0 / 7.1 DSM 7.2+
apollolake DS918+ / DS620slim / DS1019+ โœ… โœ…
broadwell DS3617xs / RS3617xs+ โœ… โœ…
broadwellnk DS3622xs+ / RS4021xs+ โœ… โœ…
broadwellnkv2 RS3621xs+ โœ… โœ…
broadwellntbap SA3400 โœ… โœ…
geminilake DS220+ / DS420+ / DS720+ โœ… โœ…
purley FS6400 / HD6500 โœ… โœ…
r1000 DS723+ / DS923+ / DS1522+ โœ… โœ…
v1000 DS1621+ / DS1821+ / DS2422+ โœ… โœ…

โš ๏ธ ์ด 4.4 ๋นŒ๋“œ๋“ค์€ ์•„์ง ์‹ค๊ธฐ ๊ฒ€์ฆ์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ •์ƒ์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜๊ณ  vermagic๋„ ์˜ฌ๋ฐ”๋ฅด์ง€๋งŒ, GPU๊ฐ€ ์žฅ์ฐฉ๋œ 4.4 ๋ฐ•์Šค์—์„œ ํ…Œ์ŠคํŠธํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ œ๋ณด ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ์ง€์›: denverton(DSM์ด DVA์šฉ์œผ๋กœ ์ด๋ฏธ ์ •์‹ NVIDIA ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํƒ‘์žฌ), ๊ทธ๋ฆฌ๊ณ  ์ปค๋„ 3.10 ํ”Œ๋žซํผ โ€” avoton / braswell / bromolow.

์ปค๋„ 4.4์—์„œ 550์ด ์ƒํ•œ์ธ ์ด์œ 

ํŒจํ‚ค์ง• ์„ ํƒ์ด ์•„๋‹ˆ๋ผ NVIDIA๊ฐ€ ์ •ํ•œ ํ•œ๊ณ„์ž…๋‹ˆ๋‹ค. ๊ฐ ๋ธŒ๋žœ์น˜๋Š” common/inc/nv-linux.h์— ์ปค๋„ ํ•˜ํ•œ์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค:

๋ธŒ๋žœ์น˜ ์„ ์–ธ๋œ ํ•˜ํ•œ
470 / 535 / 550 2.6.32
560 / 570 / 575 / 580 4.15 โ€” #error "This driver does not support kernels older than Linux 4.15!"

์ถ”์ •์ด ์•„๋‹ˆ๋ผ ์‹ค์ธก์ž…๋‹ˆ๋‹ค โ€” 560/570/575/580์„ ๊ฐ๊ฐ 4.4.302 ํŠธ๋ฆฌ์— ๋Œ€ํ•ด ๋นŒ๋“œํ•ด ๋ณด์•˜๊ณ , ๋„ท ๋‹ค ์ € #error์—์„œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค. 550์€ ๊นจ๋—ํ•˜๊ฒŒ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ์€ ์ปค๋„ ๋ฒ„์ „๋ณ„๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ํ”Œ๋žซํผ์ด๋ผ๋„ DSM ๋ฆด๋ฆฌ์Šค์— ๋”ฐ๋ผ ์ปค๋„์ด ๋‹ค๋ฅด๊ณ (7.0/7.1 = 4.4.180, 7.2+ = 4.4.302) vermagic์ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์„ค์น˜๊ธฐ๋Š” ํ”Œ๋žซํผ ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ uname -r๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. DSM์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด ์ด ๊ฒฝ๊ณ„๋ฅผ ๋„˜์œผ๋ฉด ๋ถ€ํŒ… ํ›…์ด ๋ถˆ์ผ์น˜๋ฅผ ๊ฐ์ง€ํ•ด ๋กœ๋“œ๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์ด์œ ๋ฅผ ๋กœ๊ทธ์— ๋‚จ๊น๋‹ˆ๋‹ค.


๋“œ๋ผ์ด๋ฒ„ ๋ธŒ๋žœ์น˜

๋ธŒ๋žœ์น˜ GPU ์ปค๋ฒ„๋ฆฌ์ง€ ๋„ค์ดํ‹ฐ๋ธŒ CUDA ๋น„๊ณ 
470.256.02 Kepler โ€ฆ Ampere 11.4 ๋ ˆ๊ฑฐ์‹œ LTSB โ€” 535+ ๊ฐ€ ๋ฒ„๋ฆฐ ๊ตฌํ˜• GPU์šฉ
535.230.02 Maxwell โ€ฆ Ada 12.2 Production/LTS. P620 ๊ฒ€์ฆ ์™„๋ฃŒ
550.163.01 Maxwell โ€ฆ Ada 12.4 ์ปค๋„ 4.4์˜ ์ƒํ•œ
580.173.02 Maxwell โ€ฆ Ampere 13.0 โญ ๊ถŒ์žฅ. Maxwell/Pascal/Volta๋ฅผ ์ง€์›ํ•˜๋Š” ๋งˆ์ง€๋ง‰ ๋ธŒ๋žœ์น˜

โญ ๋Œ€๋ถ€๋ถ„์˜ GPU์—๋Š” 580์ด ์ •๋‹ต์ž…๋‹ˆ๋‹ค. 535/550์„ ๋Œ€์ฒดํ•˜๋ฉฐ, Pascal์ด ์“ธ ์ˆ˜ ์žˆ๋Š” CUDA๋ฅผ 12.4์—์„œ 12.9๋กœ ์˜ฌ๋ ค์ค๋‹ˆ๋‹ค. 470์ด ์—ฌ์ „ํžˆ ํ•„์š”ํ•œ ๊ฒƒ์€ Kepler ์„ธ๋Œ€๋ฟ์ž…๋‹ˆ๋‹ค.

โš ๏ธ Ada(RTX 40) / Blackwell(RTX 50) ์€ GSP ํŽŒ์›จ์–ด๊ฐ€ ํ•„์š”ํ•œ๋ฐ NVIDIA๊ฐ€ 580 .run์— ๋™๋ด‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค โ€” ์„ค์น˜๊ธฐ๊ฐ€ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์นด๋“œ๋“ค์€ 535/550์„ ์“ฐ์„ธ์š”. Turing / Ampere์šฉ GSP ํŽŒ์›จ์–ด๋Š” ๋™๋ด‰๋˜์–ด ์ž๋™ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.




๐ŸŽฏ CUDA โ€” ๋‚ด GPU์— ์‹ค์ œ๋กœ ์ ์šฉ๋˜๋Š” ๊ฒƒ

์„œ๋กœ ๋…๋ฆฝ์ ์ธ ๋‘ ๊ฐ€์ง€๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ CUDA๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค:

๊ฒฐ์ • ์ฃผ์ฒด ์ œํ•œํ•˜๋Š” ๊ฒƒ
๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ํ•œ ๋ธŒ๋žœ์น˜ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๊ตฌ์‚ฌํ•˜๋Š” ์ตœ๋Œ€ CUDA API
GPU ์•„ํ‚คํ…์ฒ˜ ์‹ค๋ฆฌ์ฝ˜ โ€” ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ ์–ด๋–ค ํˆดํ‚ท์ด ์ด GPU์šฉ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€
Compute cap. ์•„ํ‚คํ…์ฒ˜ ์˜ˆ์‹œ GPU ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ตœ๋Œ€ CUDA
6.0 / 6.1 Pascal Quadro P620 / P1000, Tesla P4 / P40, GTX 10xx 12.9
7.0 Volta Tesla V100 12.9
7.5 Turing Tesla T4, RTX 20xx 13.0
8.0 / 8.6 Ampere A100 / A10, RTX 30xx 13.0
8.9 Ada L4 / L40S, RTX 40xx 13.0
12.0 Blackwell RTX 50xx 13.0

7.5๊ฐ€ ๋ถ„๊ธฐ์ ์ž…๋‹ˆ๋‹ค โ€” CUDA 13.0์€ ๊ทธ ๋ฏธ๋งŒ ์•„ํ‚คํ…์ฒ˜์˜ ์ฝ”๋“œ ์ƒ์„ฑ์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. Pascal ์นด๋“œ์— 580์„ ์„ค์น˜ํ•ด๋„ CUDA 13์ด ์—ด๋ฆฌ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

sudo nvidia-smi --query-gpu=name,compute_cap,driver_version --format=csv

โš ๏ธ nvidia-smi ํ—ค๋”์˜ CUDA ๋ฒ„์ „์„ ๊ทธ๋Œ€๋กœ ๋ฏฟ์ง€ ๋งˆ์„ธ์š”. ๊ทธ๊ฑด ๋“œ๋ผ์ด๋ฒ„์˜ ์ตœ๋Œ€์น˜์ด์ง€ GPU์˜ ๋Šฅ๋ ฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํŒ๋‹จ ๊ธฐ์ค€์€ compute_cap์ž…๋‹ˆ๋‹ค.


๐Ÿ’ก ํŠธ๋žœ์Šค์ฝ”๋”ฉ์—๋Š” CUDA๊ฐ€ ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค. Plex์™€ Jellyfin์€ CUDA ํˆดํ‚ท์ด ์•„๋‹ˆ๋ผ ์ „์šฉ NVENC/NVDEC ์—”์ง„์„ ์”๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ํŠธ๋žœ์Šค์ฝ”๋”ฉ์ด ์•ˆ ๋ณด์ธ๋‹ค๋ฉด ์‹ญ์ค‘ํŒ”๊ตฌ ์œ„์—์„œ ๋งํ•œ ์บ์‹œ๋œ ์žฅ์น˜ ๋ชฉ๋ก ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค โ€” ํŒจํ‚ค์ง€๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์„ธ์š”.




๐Ÿงน ์ œ๊ฑฐ

curl -sL https://github.com/PeterSuh-Q3/syno_nvidia_driver/releases/download/nvidia/uninstall.sh | sudo bash

uninstall.sh ์‹คํ–‰ ํ™”๋ฉด




๐Ÿ› ๏ธ ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•˜๊ธฐ

๋นŒ๋“œ/์ƒ์‚ฐ์ž ์ธก ๋ฌธ์„œ๋Š” DEVELOPING.md ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š” โ€” ํˆด์ฒด์ธ, 2์ธต ํŒจํ‚ค์ง•, ๋ฐฐํฌ, ํ˜ธํ™˜ ํŒจ์น˜ ๊ด€๋ จ ๋‚ด์šฉ์ด ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’– ํ›„์› ยท PayPal

About

Synology DSM NVIDIA driver and GPU monitoring packages for hardware-accelerated workloads.

Resources

Stars

15 stars

Watchers

3 watching

Forks

Releases

Contributors

Languages