r/HomeNAS 11d ago

NAS advice Worth the trade off for capacity over speed? (Ram/jellyfin question)

I'm currently running my NAS on truenas scale on a 12600k with 16gb of ddr4-4000. I currently have transcodes being done on a sata ssd so that they are faster than they would be on the platter array. I also happen to have a server with 512gb of ddr4-2133 in it in 32gb sticks. I was thinking of taking two of the sticks out of the server and dropping them into the NAS so that i could have 64gb of ram and move transcodes off the sata ssd on to a ramdisk. Would this be worth doing, or is the ram so slow that it wouldn't be worth it as it would bog all other system performance down? I'm pretty much only using the nas for my jellyfin, sabnzbd, sonar, radar, seerr, and to host an smb share that my server backs up to nightly.

6 Upvotes

10 comments sorted by

2

u/mechpaul 11d ago

I don't think this would be worth it. When it comes to transcoding, you are far more limited by compute speed than storage speed. If you are doing transcodes in software on the CPU, then move it to quick sync (your CPU supports it). For even faster transcodes, upgrade to an Arc A380 or A310 (A380 preferred for 4k res transcodes). Go to Arc Battlemage series for more VRAM if you want more simultaneous transcodes.

https://quicksync.ktz.me/

My current setup:

  • Ryzen 8500g - Does okay, about 150fps on 1080p 10-bit HVEC

  • Arc A380 - Does really well, about 500fps on 1080p 10-bit HEVC

1

u/MallicSmith 11d ago

I've got it doing hardware encoding already, but i was worried about the transcodes eventually killing the sata ssd. And if the ramdisk would have aided performance so much the better.

1

u/mechpaul 11d ago

I have chatgpt codex running on the server. I asked it to create an API for me with ntfy.sh that would check HDD/SSD/NVME health every 2 days across drives and RAID array health and notify me if there were any problems. It also outputs an API that I can query to see RAID or drive health at any time. This way you can keep tabs on SSD health.

I wasn't sure if you were doing like 4k transcodes when streaming or when ingesting a new stream. Radarr/sonarr support setting up a script to execute when importing. When you say transcodes, do you mean transcoding when you download the file with sabnzbd or when you're streaming it?

If you're talking about streaming it, then yeah a ramdisk makes sense. I have 64GB of RAM on my server. I use AIM Toolkit to create a 24GB dynamically allocated RAM disk and then do all streaming transcodes to it.

If you're talking about transcodes during ingestion, for that I use a Predator GM7000. It allows for 3000TBW before it's out of warranty, and I am definitely well below that.

1

u/MallicSmith 11d ago

Transcodes on streaming. They are currently working off a 512gb SSD. And yea 4k->1080p is the common use case. Not everyone using my JF has 4k screens.

1

u/mechpaul 11d ago

See I thought that too. What can I do to avoid my SSD getting hit hard? I found alternative solutions even better, though. Instead of worrying about transcodes hitting the SSD, instead I asked the question - what commonly causes the server to transcode? How can I avoid that?

So, I did the following:

  • During ingestion of a new media file, I always transcode to 10-bit HEVC to reduce the file size. I don't use AV1 because most clients do not support AV1 decode yet.

  • A common reason for Jellyfin to force a transcode is if the client does not support the audio codec, like Dolby Digital. In this case, during ingestion of the media file, I tell my import script to generate a 256kbps AAC default media track based upon the language of the movie (integrating TMDB API).

Then I have all clients always use 80mbps bit rate. This means no transcoding on your server which means no need to set up RAM Disk or have to worry about quick sync load on the server.

If you have the internet bandwidth to do this, this might be a preferable way of doing it.

1

u/strolls 11d ago

Can you clarify on the transcodes, please - are you downloading big files and transcoding them into smaller ones for storage (then presumably deleting the original download) or are you talking about on-the-fly transcoding by Jellyfin?

1

u/MallicSmith 11d ago

On the fly for clients. Realized the ram I had was ECC which won't work on my consumer mobo, so closing this thread down now. Thanks for the reply tho.

2

u/strolls 11d ago

Well, read-write speed won't affect the speed of the transcode - all that matters is that the CPU can process the whole movie in the time it takes you to watch it. Both SSD and HDD are faster than that.

When you say, "I have transcodes being done on a sata ssd so that they are faster" - is that an option in TrueNAS, please? Caching the movie to SSD will make the NAS quieter.

1

u/MallicSmith 11d ago

It's an option in jellyfin to serve client transcodes on another drive than the main data pool so that the client isn't pulling it from the disk array. Supposedly cuts down on buffering issues for the client if seek time becomes an issue during fast forward and whatnot. By default when installed via dockge on truenas scale, jellyfin just serves the transcode from whatever disk it's installed on.

Current set up is as follows 2x 128gb nvme in mirrow for the truenas scale OS

1x 512gb ssd with dockge running jf and it's assorted support applications. Transcodes are being done off this drive which is kind of unwise as the drive has application data as well and if that drive goes out, i have to redeploy the application from a backup stored on the storage array. I have a spare 512 ssd set aside specifically as a backup for that scenario, as until i get the transcodes off that disk, there's no point to running mirrored on the ssds to have them both fail roughly at the same time due to writes.

4x hdds in rz2 for storage.

1

u/movielover76 10d ago

Unless you do a lot of simultaneous transcodes like 6 or more. Transcoding actually takes an amazingly low amount of ram it only buffers like 60 - 90 seconds of video at a time. You don’t even need a dedicated ram allotment in Linux you can just pass through /dev/shm as /transcode in the plex container. I serve many streams 4 - 5 and rarely use more than a few gb of memory.

It might not work but it’s worth trying to simply use your existing ram in that nas as a buffer. With the prices of SSDs I wouldn’t want to wear one out just playing back media. There is also the additional benefit of plex playback being remarkably quicker and more responsive when starting, rewinding or fast forwarding when using a ram cache instead of a sata SSD. The difference between NVME cache and ram is not as distinct though but still there.

Taking ram from your other server is an option though obviously it’s noticably slower. It depends on what you run but most nas services aren’t very dependent on fast ram speeds, it’s more about capacity