Windows client is slow? (originally CPU requirement for SATA 600MBps?)

I couldn’t find a definitive answer. I see Raspberry Pi 4 is not enough.
Assuming a well-optimized system configuration, what is the CPU requirement for a server for a single user to fully utilize SATA 600?

e.g. I am using a celeron N4500 Processor 1.1GHz (4M Cache, up to 2.8GHz)

with https download ~200MBytes/sec, 100%/50% server side cpu time on the two cpu cores
with samba share, ~280MBytes/sec, 85%/25%
with windows client sync, ~160Mbit/sec, 20%/20%

the windows client is much slower! It’s mega bits vs mega bytes!

There are several limiting factors with Nextcloud, primarily because it’s a web application.

  • PHP settings/limitations - Memory limits, process allocations ect.
  • Network overhead - While this applies to SAMBA as well, there can be variances due to the protocol used. Additionally your DB and Redis connections probably are not using unix sockets so there is always a minor encapsulation cost related to that.
  • Http transaction overhead - Nextcloud is a web application, so you have a minor performance hit from the limitations of this protocol.
  • Database read-write - Each file’s meta-data needs to be added to the DB when written/deleted/updated. This is done to speed up the browsing performance.
  • Disk read-write - You disk may be able to do 600MBps of pure write, however:
    • You’re also running an operating system with multi processing.
    • You’re also running a Database.
    • 600MBps is only a theoretical maximum, it’s unlikely you’ll ever truly get that.
  • Deployment overhead - If you’re using docker it will come with a minor performance cost, additionally unless you’re using the fpm container you might have two proxies in your deployment, yet another minor performance penalty.

Your best options are to debug/rationalize each stage of your deployment, this blog post is a good example of utilizing the profiler to identify a bottle neck in an install.

thanks for the info. I have just updated my post after some testing.
seems the Windows client is a few times slower than nextcloud web download.

Another thing to explore:
As far as I am aware the /tmp folder is used for webdav uploads, if you’re using the docker container utilizing the tmpfs feature could lighten disk write performance.

*Edit: Also explore the High performance backend notify_push as it can improve latency.

thanks for the info, i will look into it.
I’m sorry, but I forgot to mention that I am actually doing a single file server-to-client download test, so the notification push is not relevant, I believe.

For the nextcloud client, I am downloading a file from a virtual file system by right-clicking it and clicking Always keep on this device.
And I am checking with Windows task manager’s network performance graph for nextcloud Windows client’s download speed.
For HTTPS, I logged in to my Nextcloud server over HTTPS and downloaded a big file. I checked the speed with Chrome’s download list and task manager.
For samba I am copying with file explorer and check the progress bar and task manager.