You seem to have profiled syncthing while it’s scanning for changes. That’s basically just walking the tree and stat:ing everything, so yeah. Not sure why the HTTPS connection features so prominently; maybe GUI was loading a bunch of data?
For a 400GB repo with 70K files, rsync can chew through it in a few minutes, and I left syncthing for a 4 or 5 days running and couldn’t manage to pass the initial scan. I was trying to find what’s the reason for this as I was suspecting the sha256 function which is not native if I was looking at the right golang sources. The profile says otherwise, so I’m not exactly sure what is the main bottleneck when running in this underpowered CPU.
Anyway, no, that sounds weird. Profile above doesn’t show any hashing, just lots of stat:s and some HTTPS, but it’s also from a limited time window. Once up and running (after initial hashing), it shouldn’t take many seconds or minutes to stat those files.
“STTRACE=scanner” will show you if the hasher is doing any work, or in the GUI just observing the state “scanning” and the number of files seen in the repo increasing. There’s a fair amount of GC going on in that profile above as well; normally this is a non-issue but if you are constrained on the CPU cycles it can help to give it a little more memory to play with; try setting the environment variable “GOGC=100” (allows heap to grow to 100% over active utilization, opposed to the syncthing default of 25%).