When two processes are doing sequential reads at different positions in the same file, "mount.exfat' uses a lot of CPU time and throughput is much lower than might be expected.
On my test system with an i7 CPU and an external SSD:
A single process can read from a file at 500MB/s, with the "mount.exfat" process using 18% of one CPU core.
If a second process is reading from the same file at a position 1GB from the beginning, CPU usage goes to 80%, and read speed drops to 60MB/s for both processes.
If the second process is reading at 30GB from the beginning, CPU usage is 100% and read speed is only 3MB/s.
I think that this happens because every second read takes this code path in exfat_advance_cluster and then walks over all clusters from the beginning of the file.
When two processes are doing sequential reads at different positions in the same file, "mount.exfat' uses a lot of CPU time and throughput is much lower than might be expected.
On my test system with an i7 CPU and an external SSD:
A single process can read from a file at 500MB/s, with the "mount.exfat" process using 18% of one CPU core.
If a second process is reading from the same file at a position 1GB from the beginning, CPU usage goes to 80%, and read speed drops to 60MB/s for both processes.
If the second process is reading at 30GB from the beginning, CPU usage is 100% and read speed is only 3MB/s.
I think that this happens because every second read takes this code path in exfat_advance_cluster and then walks over all clusters from the beginning of the file.