Jump to content

One Last Argument for Low End/Cheap Graphic Cards

TLDR: If you just need a card that supports NVENC, then price is king and overall card performance doesn't matter. Specific example is if you want to turn your existing NAS into a Plex server that can use hardware encoding for h.264 playback when streaming videos directly from your server.

So I actually have some disagreement with the statement made in this follow-up video to the low end graphic card discussion made in this video here:
 


But I'm not flaming upset about it though because their context never discussed my particular case, and I actually think it would make a good video segment as well. Basically it comes down to one thing for me; NVENC support. I built myself a 10TB ZFS raidz storage server and wanted to install Plex (I had it on my desktop but I power cycle it constantly switching between work and gaming boot drives, so I wanted something that would run 24/7). The server itself is relatively low end hardware as it is mostly used for media streaming and long term infrequently accessed storage. Specifically it includes a core i3-7100, 8 GB of ram and as mentioned a 10TB ZFS pool for storage running on Ubuntu 16.04; very much a budget archive for lots of data. That said I wanted to stream videos from it to my phone or other devices while away on business trips. However to utilize this and not peg the CPU I needed NVENC support which as the below article points out is mainly dependent on the architecture of the card and not so much if it is high-end or not (comes down to the GPU being a desktop Kepler, Maxwell or Pascal GPU):

https://help.elgato.com/customer/portal/articles/2471964-which-nvidia-graphic-cards-do-support-nvenc-technology-

Thus for my 10TB ZFS raidz I went with a Zotac GT 730 that I bought used, but I could have easily gotten ANY GT 7XX desktop card with a Kepler GPU. I'm actually considering this because there are some low-end entry models that are completely passive and the value of the Zotac GT 730 seems to have plateaued so I think I can get my money back on the card I bought initially and upgrade to passive cooling. Regardless what I observed is with my setup was without hardware encoding, my CPU had all 4 cores very busy out when encoding h.264 video to a 4G mobile endpoint. With it enabled, the CPU stayed mostly quiet and...to my surprise...so did the GPU (as observed through nvidia-smi). So basically when it comes down to it, if you're just trying to get a card for NVENC support price trumps all and ram capcity, outputs, etc don't need to be considered (I actually use the onboard graphics controller for my rig). I attached 2 screenshots of me streaming a video to my phone over a 4G connection; the first is with CPU where you can see it fluctuating around roughly 40-60% utilization on all cores as it refills the streaming buffer vs the GPU enhanced version where you just see one core bouncing around probably doing network related processes while the GPU takes care of the rest. Take note, the GPU barely moves in terms of utilization, only showing a 32MB increase in the memory utilization. This effectively multiplies the number of clients I can stream to by the number of cores I have. So in this specific example, with no hardware acceleration, I could maybe get 2 devices streaming while maxing out my CPU and doing nothing else on my NAS, but with hardware acceleration I could easily encode h264 to 8 clients or just stream to 4 and still be able to use 2 cores worth of processing power. There is a limitation however in that this only works when directly playing videos remotely; for some reason PLEX was inconsistent on whether it would use the GPU to encode stuff while using the sync feature (and seemed to default to CPU/direct file upload) and local network playback was almost always a direct file playback.

The counter argument is just to get an Nvidia Shield which supports NVENC, but if I already have a NAS or I want to have my Plex box function as a NAS, then adding a $40-$50 card that supports NVENC is much cheaper than the price of a Shield. For someone wanting to build a NAS and a dedicated Plex server, the value proposition of adding an entry level Kepler video card to the NAS is hard to beat. I even attached 2 builds for a 1TB mirrored NAS barebones with 8GB of ram that would support Plex Hardware encoding for just under $400 if you want a slick looking Fractal Design Node 202 case or a 'fat' version of the same hardware for just over $330 if you'd rather go with the Cougar MG110 and 3.5" drives. You can obviously swap out to a different motherboard to get more SATA ports and add drives as desired to you NAS spec, though if you want to stick to the ASROCK embedded solutions you'll need to switch to a 1x PCIE card such as the Zotac GT 710 which may actually be desired because it's passively cooled, making your entire NAS box fanless if you stick with the Asrock solutions.

In summation though; I have NO issues with the arguments presented in the videos about the value proposition for getting GPU performance per dollar. However if you just need NVENC, GPU performance is moot compared to whether the card supports NVENC. This is purely an edge-case where I only needed an NVENC enabled card and after digging to the bottom of the barrel for cards available I found the performance for NVENC was what I needed and the value proposition for someone trying to do the same as I is very hard to beat.

Thanks for reading this and would love to see the Linus Media Group team give an overview of NVENC and what it's utility could provide to non-gamers or NAS owners wanting to take some load off of their CPU when streaming videos through Plex. Love the channel and will continue watching even if this post turns into a flame on my build :).

EDIT 201802171209EST: It was noted in the replies that AMD APU's can support VCE which is a similar hardware encoding utility. This could also work if you're building a budget system from scratch, but for those who have an existing system with an incompatible socket to an AMD APU, I still think a budget Kepler card is the best way to go. Additionally, if you plan on using hardware encoding for Plex (like I was), VCE isn't supported anyway so an NVIDIA NVENC enabled card is the only way to go. (VCE: https://en.wikipedia.org/wiki/Video_Coding_Engine)

No Hardware Acceleration.png

With Hardware Acceleration.png

201802-400 PLEX BOX_Cougar.pdf

201802-400 PLEX BOX_Pretty.pdf

Link to comment
Share on other sites

Link to post
Share on other sites

Problem is cheap cards don't support nvenc. Only the 1050 and up(i think) support nvenc. gt cards don't have it, only gtx cards. 

 

the 730/710/1030 doesn't support nvenc.

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, drcheeseman said:

TLDR: If you just need a card that supports NVENC, then price is king and overall card performance doesn't matter. Specific example is if you want to turn your existing NAS into a Plex server that can use hardware encoding for h.264 playback when streaming videos directly from your server.

Just get an APU for that. Well not NVENC, but VCE does basically the same.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, Electronics Wizardy said:

Problem is cheap cards don't support nvenc. Only the 1050 and up(i think) support nvenc. gt cards don't have it, only gtx cards. 

 

the 730/710/1030 doesn't support nvenc.

 

 

I can confirm that's false; aside form the screenshots I provided, I also was able to use the ffmpeg h264_nvenc encoder and could confirm the cpu was not being touched when encoding. The article I linked points to a list of supported cards; but that list doesn't include any consumer cards and the paragraph at the top is the main clue as to what consumer cards support NVENC, namely anything with a Kepler, Maxwell or Pascal GPU. I also have a friend who specializes in GPU architectures that confirmed my interpretation when I was shopping for a compatible card.  Basically I have proof by counter-example on this argument.

1 hour ago, Sakkura said:

Just get an APU for that. Well not NVENC, but VCE does basically the same.

That's probably another value proposition; but for my case, and possibly others like me, I already had a working system but just needed to add something to support some level of hardware encoding. Also, specifically for Plex, NVENC is the only option as it doesn't support VCE, so NVIDIA NVENC cards were the only option. If however there's some edge case that needs VCE support but not any use for the GPU otherwise, you are very right in that an APU with an HD 7900 or later would probably fit the bill.

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, drcheeseman said:

could confirm the cpu was not being touched when encoding

Plex also caches recently played videos, so load will be much lower no matter what. Also nvidia-smi didn't show a gpu process so plex wasn't even using the gpu here.

 

 

What version of the card do you have? There are 3 with different chips and some seem to support and some don't. Im assuming you have a gk208 version. Also not all kepler cards and newer have them, the gp108 in the 1030 doesn't.

 

Also the quicksync on the cpu is better quality and already in most consumer cpus.

 

Also nvenc is limited on geforce to one stream it seems. Quadros and tesla will allow unlimited streams.

 

Link to comment
Share on other sites

Link to post
Share on other sites

5 minutes ago, Electronics Wizardy said:

Plex also caches recently played videos, so load will be much lower no matter what. Also nvidia-smi didn't show a gpu process so plex wasn't even using the gpu here.

 

 

What version of the card do you have? There are 3 with different chips and some seem to support and some don't. Im assuming you have a gk208 version. Also not all kepler cards and newer have them, the gp108 in the 1030 doesn't.

 

Also the quicksync on the cpu is better quality and already in most consumer cpus.

 

Also nvenc is limited on geforce to one stream it seems. Quadros and tesla will allow unlimited streams.

 

Hadn't thought of that, so I went and played an episode from a season I hadn't watched yet and observed similar behavior. I'm 100% sure the GPU is in play given the change in baseline memory usage. Regarding actual GPU core usage, that actually isn't supported by this version of the linux drivers for this card, so there may be an unknown limitation. Your point about only supporting a single stream is also notable and not something I had seen yet. Do you have a link to any product specs that can describe the number of streams NVENC supports for different classes of cards?

With Hardware Acceleration_No_Cache_Test.png

Link to comment
Share on other sites

Link to post
Share on other sites

26 minutes ago, Electronics Wizardy said:

Also nvenc is limited on geforce to one stream it seems. Quadros and tesla will allow unlimited streams.

 

So just for fun, I started up my laptop and tethered to my phone and had both my phone and laptop playing different episodes. Did one with Hardware encoding enabled, one with it disabled and made sure to select videos I hadn't played before (and this time I swapped the order; did hardware encoding first and CPU second). The traces speak for themselves I think; CPU usage pegged at first to fill the buffer and then fluctuated between 40-80% a lot with 70% seeming to be the average (could hear my CPU fan fluctuating too). The GPU usage to contrast seemed very similar to the single video example with the exception of more drama when the video started. Maybe when it says it's limited to one stream it means one frame at a time and what frame that video is coming from in terms of encoding is irrelevant? Either way I think I have another counter-example to add to the pile.

2 Video - NVENC.png

 

2 Video - CPU.png

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, Sakkura said:

Just get an APU for that. Well not NVENC, but VCE does basically the same.

Just for fun and for anyone that's interested; here's a VCE build. Looks like you'll be saving an extra $15 if you go with the minimum required that supports VCE that's still on the market, but you may be able to find cheaper stuff used to increase the value over the solution I proposed with a dedicated GT 730. Without a graphics card as well, you could probably use cheaper proprietary power supplies from a used parts shops and/or go with a slimmer case that doesn't have slots for an expansion card. Downside to this approach is of course that Plex doesn't support it, but that might not matter to people who are building a NAS that want to be able to auto-transcode videos or some other similar functionality.

201802-400 VCE Box.pdf

Edited by drcheeseman
Corrected a price difference discrepency and expanded upon the possible value proposition of going with an APU for VCE encoding.
Link to comment
Share on other sites

Link to post
Share on other sites

P.S. Here are screenshots of me running NVENC vs CPU with ffmpeg. The first timed encoding a 1h video which shows NVENC finishing 7x faster than the CPU. The next two screenshots are traces of the CPU when running the different tests to show they're analogous to the Plex traces I showed earlier. I did try to get vaapi working as a comparision as well (Plex doesn't support VAAPI, but is planning to), but to no avail despite the i3-7100 supposedly being in the list of supported hardware for h264 encoding.

201802-FFMPEG NVENCvsCPU.png

201802-FFMPEG NVENC.png

201802-FFMPEG CPU.png

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×