slow performance for applications on client machine?

ryans

Cadet
Joined
Dec 11, 2020
Messages
3
Hello all,

I have a very particular issue that has left me very puzzled. It seems like my particular application on my client machine (DaVinci Resolve) is reading the file from the NAS in such a way that it gets expected speeds from ARC, but as soon as it hits the disks, speeds drop dramatically. However, the disks should be able to maintain the throughput, as shown by my testing below.

First of all, system specifications. My client machine is a 2019 Mac Pro running Big Sur 11.4. I have a direct 10GBe copper connection from the Mac Pro to a 10GBe card on my TrueNAS system. Both network cards have jumbo frames enabled. The TrueNAS system is a Lenovo RD640 running 12.0-U4, which has two 8-core CPU E5-2650 v2 @ 2.60GHz (32 threads), 96GB RAM, and 8x14TB Seagate EXOS drives in a RAIDz2 configuration.

Let's say I have a 100GB braw (Blackmagic RAW) video file on the NAS. Using Finder on my Mac Pro, I can copy this file off the NAS to my internal NVME drive at somewhere around 700-900MB/s - expected speeds. I can use Blackmagic Disk Speed Test or Aja System Test to also confirm that I can get over 1000MB/s read and write. While copying this file - or running the disk speed test software - I can run 'zpool iostat pool-name 1' to see that I am indeed hitting the disks at that rate.

If I get DaVinci Resolve to render this clip - but located on an internal drive, and rendering to an internal drive - it can hit about 60fps (or about 300MB/s), at which point my bottleneck is the CPU on my client machine, which is maxed out at that point. It can also hit those speeds if the clip is located on a a Mac Mini that I am also connected to via 10GBe. This tells me 1) that the client machine is not the bottleneck, and 2) the network configuration on the client side is OK.

But: using DaVinci Resolve on that same client system, accessing the same 100GB braw file on the NAS, and trying to render out (say, Prores) to the same internal NVME disk, I'll only get about 20fps / 100MB/s read from the NAS.

Various notes and observations:
  • If I render the clip from the NAS at least once - which puts it into ARC - and try to render in DaVinci Resolve, I'll get expected speeds! (about 60fps/300MB/s) But as soon as I hit a non-cached version or part of the clip, it'll drop down to 20fps/100MB/s again. I can see this happening while watching 'zpool iostat pool-name 1' as the render runs. Copying the file off the NAS through Finder will show ~500MB/s from 'zpool iostat pool-name 1' - much faster.
  • Viewing the reporting tool in TrueNAS, nothing else is being hit much - the disks, the CPU, all is pretty much idling along for all intents and purposes.
  • I have tried my other boot environments, which include U1, U2, and U3 of 12.0, which all give me the same result.
  • DaVinci Resolve does have an option to enable or disable 'Direct I/O,' which I currently have disabled. This is the recommended setting and I don't get any better results with it enabled.

EDIT I changed the Record Size on my pool to be 1M, up from 128kb, as I understand that is beneficial for sequential workloads like mine. This seems to have significantly boosted performance - I'm up to nearly 200MB/s or 40fps, from 100MB/s or 20fps. This is a great improvement, but is there anything further that can be tuned?

Why is it that I can read this clip/file consistently at expected speeds, EXCEPT when DaVinci Resolve is reading it & it is not cached in ARC?
 
Last edited:
Top