Svetlitski / fcp

A significantly faster alternative to the classic Unix cp(1) command, copying large files and directories in a fraction of the time.
BSD 3-Clause "New" or "Revised" License
734 stars 17 forks source link

Disappointing results on workstation with btrfs raid1 #41

Open lapsio opened 1 month ago

lapsio commented 1 month ago

Hi

I decided to try out this utility on my workstation which seems to bottleneck on single core during file copying and so far results that I'm getting are extremely disappointing at best.

image

Using traditional cp utility resulted in copying file in around 8:10 (~996 MB/s), while fcp accomplished the same task in 9:39 (~843 MB/s).

image

Of course both results are extremely disappointing considering it's copying from NVME Gen4 RAID1 to different NVME Gen4 RAID1 which has theoretical throughput of around 14 GB/s read and 6 GB/s write (used drives are FireCuda 530 and Samsung 990 PRO and they don't have any problem with reaching advertised speeds during fio seq i/o benchmarks)

It's worth to point out that in both cases neither cp nor fcp exceeded 100% of single core usage which corresponds to negligible CPU usage on 24c/48t Threadripper workstation. Disks are far from being 100% utilized and in matter of fact it's possible to hack bash script that achieves higher performance for copying single file.

size=`du -m "$1" | grep -o "^[0-9]\+"`
threads=8
block=1000
count=$((size/block/threads+1))
for t in `seq 0 $((threads-1))` ; do
        o=$((t*count))
        echo dd if="$1" of="$2" iseek=$o oseek=$o bs=${block}M count=$count
        (dd if="$1" of="$2" iseek=$o oseek=$o bs=${block}M count=$count) &
done
wait

this thing copies the same file in 5:24 (~1507 MB/s) and hammers disks utility to 100% :/

I'm not sure where to start troubleshooting. All those results are very pathetic considering raw SSDs performance.