I can see the transfer rates, time (percentage etc) taken to transfer etc on the web GUI. Is there any way to get this information via API or write to a log file? I need to test the transfer rates that can be achieved.
With the REST API endpoint rest/system/connections you get a
total.outBytesTotal. Using that and the time between your requests (or better the difference in
total.at) you can get the transfer rate.
The same data is available for each device, if you want to track each devices speed individually.
The WebUI does the same thing:
For testing, there is also a developer-centric performance logging feature. If you start Syncthing after setting the environment variable
STPERFSTATS=1 it’ll write a log file
perfstats-$pid.csv. It’ll look something like:
250 0.000000 900200 8755448 0 0 503 92.347892 10423360 17938680 0 0 750 13.269266 11515576 20101368 0 0 1000 11.311525 13090016 22268152 0 0 ...
where the columns are
- milliseconds since startup
- cpu usage in percent
- allocated bytes
- in use bytes
- in data rate (bytes/s)
- out data rate
Not supported on Windows or Solaris unfortunately. The API described above is supported everywhere.
Thanks a lot! I will definitely try this!