Optimising Syncthing for low end hardware

First of all, I know that many topics have been created to discuss the question of running Syncthing on low end / slow / old devices, and I have done my part to search and study them. The problem is that the vast majority were support related, and are thus locked now, with no further discussion possible. Nevertheless, I apologise if I ask questions or raise subjects that have already been discussed to death.

I have Syncthing installed on a few older devices. The slowest of them has the following specifications.

CPU: 1.0 GHz Cortex-A8 single-core ARMv7
RAM: 512 MB (~380 MB usable)

As you can see, while not the slowest on Earth, it is slow enough to cause problems when running Syncthing with a lot of data.

What I have tried doing so far is the following.

  • progressUpdateIntervalS = -1
  • copiers = 1
  • hashers = 1
  • scanProgressIntervalS = -1
  • weakHashThresholdPct = 101
  • maxFolderConcurrency = 1
  • STNORESTART=1
  • GOGC=50 or GOGC=25

Most of the aforementioned settings were suggested in https://forum.syncthing.net/t/10467 by @calmh. I am personally unsure about GOGC, as I am worried that it may kill the already struggling CPU for the sake of RAM. Also, I guess that options like hashers = 1 need not be explicitly set on my device, since Syncthing will use them as defaults on a single-core CPU anyway.

In addition to those, I have personally found that disabling UI animations and a few other cosmetics helps greatly. Of course, this applies only when opening and using the Web GUI on the actual device. It also helps when operating the GUI on a remote device, but this is a different story, not really related to the hardware.

I personally add these to my theme.css. They disable all the animations, transitions, rounded borders, and shadows, while not breaking anything at the same time.

*,
:before,
:after {
	animation-delay: 0s !important;
	animation-timing-function: step-start !important;
	transition-delay: 0s !important;
	transition-timing-function: step-start !important;

	border-radius: 0 !important;
	box-shadow: none !important;
}

All in all, my question is whether there is anything else that could be done to improve Syncthing performance or reduce its load when operating on low end devices. Also, if you have experience using Syncthing on such hardware, please share it :slightly_smiling_face:.

1 Like