Best mount settings for streaming ( Plex )

I dropped acd_cli completely as with my library getting close to 30TB the acd_cli syncing was failing often and since I have mounts from 2 locations ( download/upload server & plex server ) it caused even more problems. The acd_cli cache (node.db was over 200MB and it was pain resyncing as in most cases it needed 2, 3 times before it was actually synced )

Now back on topic :smile: I decided to mount my amazon drive with rclone:
rclone mount --allow-non-empty --allow-other --max-read-ahead 200M acd:/ /storage/.acd/ &

With cron ( every minute ) iam running script that checks if drive is mounted and remount if its not.
` #!/bin/bash
if pidof -o %PPID -x “”; then
echo “$(date “+%d.%m.%Y %T”) SKIP: already running.” | tee -a “/var/log/acd-cron.log”
exit 1

if [[ -f "/storage/.acd/encrypted/acd-check" ]]; then
   echo "$(date "+%d.%m.%Y %T") INFO: Check successful,drive mounted" | tee -a "/var/log/acd-check.log"
   echo "$(date "+%d.%m.%Y %T") ERROR: Drive not mounted remount in progress" | tee -a "/var/log/acd-check.log"
   fusermount -uz /storage/.acd
   rclone mount --allow-non-empty --allow-other acd:/ /storage/.acd/ | tee -a "/var/log/acd-check.log"

   if [[ -f "/storage/.acd/encrypted/acd-check" ]]; then
      echo "$(date "+%d.%m.%Y %T") INFO: Remount successful" | tee -a "/var/log/acd-check.log"
      echo "$(date "+%d.%m.%Y %T") CRITICAL: Remount failed." | tee -a "/var/log/acd-check.log"


I usually have 10 to 15 concurrent streams on my Plex ( family and friends ) and with acdcli it worked flawlessly until one of the sync’s broke db and …

I was checking the docs and have few questions for those who tested streaming
–max-read-ahead 200M ( this is something I set as i read it here on the forums )
what else could be added to speed up stream as much as possible like

p.s. Also forgot to mention all content in my ACD drive is encfs encrypted so all mounts

rclone mount --allow-non-empty --allow-other acd:/ /storage/.acd/

ENCFS6_CONFIG=’/home/plex/data/encfs.xml’ encfs -o allow_other /storage/.acd/encrypted /storage/acd/ --extpass=“cat /home/plex/data/.encfs” --public

ENCFS6_CONFIG=’/home/plex/data/encfs.xml’ encfs -o allow_other /storage/.media-local /storage/media-local/ --extpass=“cat /home/plex/data/.encfs” --public

unionfs-fuse -o cow, -o allow_other /storage/media-local=RW:/storage/acd=RO /storage/media-unionfs

And everything is being uploaded with

/usr/bin/rclone move /storage/.media-local/ acd:/encrypted -c --transfers=500 --checkers=500 --delete-after --min-age 15m --log-file=/var/log/rclone-cron.log


I’m not 100% sure setting the --max-read-ahead above 128k actually does anything… It can’t hurt though.

I’d probably set --read-only. --no-modtime won’t make any difference on ACD as the modfication time is delivered with the other info. If you set read only you don’t need --write-back-cache.

would it work faster with --read-only, iam not really writing anything to it, however on my download/upload server sometimes i delete files directly.

How much --write-back-cache should i set and what about checkers is default value good enough or should i set more.

I did some testing yesterday and I was able to run 15 concurrent streams.
The only thing that i notice that works worst then with acd_cli is when you are watching a video and you are already watched at 80% and you manually jump to 95% it will stuck at buffering.
( this worked with acdcli mount …at least most of times … need to do more testing to be sure )

Today I added --checkers 40 option and as well tweaked some network settings in /etc/sysctl.conf

Increase system file descriptor limit

fs.file-max = 100000

Discourage Linux from swapping idle processes to disk (default = 60)

vm.swappiness = 10

# Increase Linux autotuning TCP buffer limits
# Set max to 16MB for 1GE and 32M (33554432) or 54M (56623104) for 10GE
# Don't set tcp_mem itself! Let the kernel scale it based on RAM.
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.optmem_max = 40960
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# Make room for more TIME_WAIT sockets due to more clients,
# and allow them to be reused if we run out of sockets
# Also increase the max packet backlog
net.core.netdev_max_backlog = 50000
net.ipv4.tcp_max_syn_backlog = 30000
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10

# Disable TCP slow start on idle connections
net.ipv4.tcp_slow_start_after_idle = 0

# If your servers talk UDP, also up these limits
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192

Guide from:
Did not play around with mem/swap yet, currently

      total        used        free      shared  buff/cache   available

Mem: 32004 3703 5910 25 22389 27619
Swap: 16367 0 16367

@ncw how is rclone opening mount threads eg how many can it have running

15 streams? Please do tell. I cannot sustain one solid connection from my Plex to the point that I just gave up on it (Plex)!

I have a VM on Azure with 2 cores and 4GB Ram. Bandwidth is obviously not an issue for me in Azure. When uploading or downloading to the VM with rclone, I get an easy 40MB/s connection. That said, even regular MP4 streams take about 40-50 seconds to start playing, as soon as they do start playing, they buffer about every minute for the first 10 minutes before I get a steady stream. Oh, and forget a second stream. That will just cause both, first and second streams to stop!

Could it be because im running a VM in the cloud? I tried an Amazon instance and had the same, if not worse experience. Will it be better if I get a fast cheap VPS instead? I don’t want to host from home, however, at this point I might if I have to.

I also should mention that I am hosting my files with OneDrive. But like I said, doing uploads or downloads with rclone is very fast.

Iam running plex ( and plexpy ) on this dedicated server:

Made this test just now: (1 stream - original qualits
Movie info

1 stream original quality, when pressed play it took around 10 seconds to start playing.
Server load ( 8 cpus )

Network stats for duration of the playtime

Amazon rclone upload stats

Copying a movie (1 min stats) from amazon encfs mount (unencrypted ) to local machine eg the same way plex see it

Stats for my library “ls -lahR $acd | grep ^- | wc -l” (unencrypted folder)
Processed 26717 files and it took 376 seconds

Not sure what acd_cli do differently beside having the local database of folder/files but that should only speed up browsing and first access for file/folder. It would be great @ncw could figure out how to solve it.

NOTE: Compared to ACDCLI there is huge problem resuming movies eg skipping to middle or end.

1 Like

I have made a test version of rclone with more concurrent buffering in. In my tests it doubles the performance of local copies. I’m not sure exactly what difference it will make for plex - would be interested in any feedback!β/

Testing… :slight_smile: crossing my fingers

Let me know as I got my account locked again :slight_smile:

Hopefully it will be unlocked by tomorrow, last time I called customer support and they unlocked it.

This is why I use OneDrive :slight_smile: Plus, my library is not huge! Its only ~600GB

@hyperexpert Its not that bad, they unlocked me again and they dont know why ban is happening, but Iam “abusing” it and yesterday I rent some new vps that was just doing copy from acd to gdrive ( making backup copy of whole library just to be on safe side if perm ban happens ) and it was maxing 200Mbit for 10-12h.

My current setup is 1x download/upload machine ( nzbget/transsmision/sonarr/couchpoato etc… ) and that one is always automatically downloading new stuff and uploading to acd.
1x Plex & Plexpy just for streaming and every 8h uploads the subtitles that were downloaded by plex.

1x VPS for making copy from acd to gdrive.

@ncw I did a quick test now with multiple streams and cant say it better it could be even worse as one of the movie was stopping and buffering a lot. During the streams i also run Lib update on Plex and as well analyze so that would make aditional load

Network stats during the test ( i did not have more then 5, 6 concurrent streams … at work so cant really test it atm)

rclone log file:
A lot of errors

plex log files:
some of the errors

p.s. Will try to do more extensive testing tonight.

@Ajki Interesting result. Please keep us update. I’m also waiting for rclone mount to become more stable for use. Right now I’m actually using acd_cli to mount the acd folder and then rclone crypt to decrypt. This is just as stable as acd_cli + encfs.

@ncw I briefly tested the beta fuse buffer version with rclone crypt mount. Seems to be stable for now with 1 direct play. Video start time just bit slower than acd_cli but no buffering so far. I don’t have enough users to test more concurrent streams.

@ladude626 so far i found rclone mount almost on pair with acd_cli, couple of tweaks and its there.
atm i removed checkers ( did not saw any difference )
rclone mount --allow-non-empty --allow-other --read-only --max-read-ahead 20000M acd:/ /storage/.acd/ &
( i should mount with --max-read-ahead 20G )

p.s. How big are the videos you are watching, i have problems with those 15GB+ ones i notice it may start buffering, but normal sizes eg 3 to 8GB works normally.

@Ajki I’m playing files to up 16GB. Difference may be that files >9GB is downloaded via a templink instead of the conventional way. I have about 14TB of files on ACD at the moment and my acd_cli cache is only about 20MB, not sure how yours grew to 200MB. And can I ask what VPS you use to transfer that much data? I’ve been starting up an instance at whenever I want to move files with rclone.

You could play with the templink threshold. I wonder if that would help you. --acd-templink-threshold

Great suggestion, will try it out tomorrow, maybe set it to 25GB

Iam mainly uploading from my own server that is on 1GB line, btw I got banned yesterday when i started to use scaleway server to copy from acd to gdrive so now i stopped it there ( back to uploading from my main one)

My current library is just a bit bellow 25TB with 3035 folders and 26717 files.

Btw for streaming purposes with adding more --checkers= you could do more harm eg locks and timeouts , yes Plex would scan library faster but on the other hand it could hinder the actual stream. ( or am I wrong )

I am on the same boat here. Haven’t noticed any difference with the new beta. My only problem with rclone is the time it takes to initially stream a video, once the video is playing, everything is fine, even skipping back and forth works fast. Its only when the video initially starts playing that takes longer than acd_cli.

Just a though here, is there a way to lets say add a switch to rclone to tell it to cache n% of the beginning of your files? Lets say you have a 3GB movie file, can we have rclone cache the first, 3% or 5% or whatever we tell it so streaming from Plex starts right away with your cached beginning while rclone downloads the rest? Not sure if this is even possible and I know this will require a lot of harddrive space for larger libraries, but then again, people don’t have to turn it on. This will create a hybrid storage of your files and streaming will be almost as fast as having files stored locally.

@Ajki - oh, and btw, I switched to an SSD instance and HOLY#$@^! My load times are 3-4 times faster now. I went from having to wait 30-40 seconds for any MP4 direct stream to start playing, to 8-10 seconds now. Plus, I can finally do more than 1 stream - 14 to be precise :smiley: Never thought that would be possible. But still, those files that take 8-10 seconds with rclone, take about 3-6 seconds with acd_cli

@hyperexpert well initial play ( for me is always bellow 10 seconds ) will always be slower with rclone as file needs to be accessed and acdcli keeps the exact path in localdb ( that gets corrupted quite often once its above 200MB and especially if you have multiple mounts and changing files )

The bigger problem is that with acdcli jumping forward and backward works much better as with rclone plex gets stucked … thats the only part that needs to be tweaked. ( also need to test how is it working if multiple people are accessing same video … i saw someone mentioning it does not work that good but could be resolved by now )

Someone with knowledge should check what is acd_cli doing differently when it comes to streaming

p.s. I always had SSD and good to know you have such difference with normal disks.

I do not believe that is the issue. rclone can also cache the path and does for a time. Check out this post. You can see plex is doing some odd things in analyzing a file bfore playing.