What is "Monitor filesystem for changes" other than Syncthing is already doing?

I’m using the syncthing-gtk client on linux mint 17.3. It has a feature called:

  • Filesystem watching and instant synchronization using inotify

The description says:

If enabled, changed, created and delete files are synchronized immediately, as long as Syncthing-GTK is running. Using this along with short Rescan Level (<300s) may consume a lot of resources.

First of all 300s means 300 seconds and not milli seconds, right? Now I wonder why would such huge rescan level consume so many resources? What is this option for? I dont get the point, isn’t Syncthing already syncing by its own? What if I just set the rescan level to 1 second what will be different with this option toggle on/off?

There are two different ways to detect changes.

  1. You crawl the filesystem comparing file properties to what you have in your index, which means for 100TB of data, we’d have to check all files in the 100TB.
  2. Inotify, which is a mechanism provided by the OS, which allows you to subscribe to notifications of the OS notifying you when a file was written/created etc in a certain directory.

Syncthing out of the box only provides #1, #2 is provided by external software due to the fact that each OS implements this slightly differently.

If #2 is subscribing to file changes, what do I need the Rescan Interval then? And why is cpu going high then with an interval like 150 secs? The description makes no sense for me and I still believe it have to mean milliseconds. They really wanna tell me it requires a lot resources to scan every 5 mins for file changes? We have 2016 right?

It doesn’t matter what year it is; with a lot of files or not a lot of RAM, scanning for changes causes a lot of disk activity.

We do this by default; using inotify only reduces this, so I’m frankly not sure what the warning in the GUI really means to say there. We use a quite short rescan interval (60s) by default. Adding inotify to it doesn’t increase load much, rather the opposite. It’s also probably a bit outdated as syncthing-inotify itself increases the rescan interval when active.

syncthing gtk sucks. no one is answering my questions: why do i need an interval for this notify thingy then if it is based on subscribe? cant believe nothing changed in free software movemet other than creating more and more complicated ui and stuff for all the dumb, stupid and noob users out there. you may better include some more cool hipster words in your description next time no one but devs understand. :monkey_face:

We’ll make sure to add more hipster! :smiley:

4 Likes

This forum sucks, how to down vote things? :thumbsdown:

3 Likes

:heart:

Rescan interval is an interval of how often we walk the filesystem to detect changes, which is every 5 minutes in your case.

External software can disable #1 in syncthing by setting the interval to 0 and provide only #2. The reason they don’t do that is because each OS has it’s own implementation quirks into this subscription model which sometimes causes it to miss files, so we reconcile changes by doing a normal walk every now and then.

The reason both of them use CPU is because we hash all files that have changed using SHA256, which is a cryptographically secure hash, which has a reasonable CPU cost.

It has been 4 hours and all you have really done is say you don’t understand and so the software sucks.

Sorry the free software movement isn’t here to cater to your whom immediately. ;-(

I use syncthing-gtk on my laptop machines, and I find it works well. I check the box you’re describing (Monitor file system for changes), and then I set the rescan to 0. This way, I use inotify exclusively and my machines don’t have to rescan.

I also have a very low powered PogoPlug running Syncthing on Arch Linux. I did the same thing there, except it’s not running syncthing-gtk (because there’s no gui). Instead, I’ve installed syncthing-inotify and configured Syncthing similarly (rescan is set to 0). So far, I’ve had no problems syncing, and using inotify seems to have helped the PogoPlug keep up, since now it doesn’t have to scan all the time.

1 Like

You don’t even have to set the rescan interval to 0. syncthing-inotify delays rescans automatically via the api. It is reasonable to keep some rescan interval, because some file changes may be missed with inotify due to some odd cases.

3 Likes

That’s nice to know. I am trying out QSyncthingTray right now in lieu of syncthing-gtk, because I’m a Plasma 5 user, and I wanted to use a tray app that was based on QT. QSyncthingTray relies on syncthing-inotify. I thought that syncthing-gtk included inotify support natively, as it didn’t install syncthing-inotify as a dependency on my distro. Of course, that could just be the distro people (Manjaro, a deriviative of Arch) missing the dependency, so that may have been a bad assumption.

Syncthing-gtk has an own implementation using python-inotify bindings. It does not need a separate syncthing-inotify daemon. I figure that they would conflict with each other.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.