I am testing illumos in some of its variants, currently OmniOS.
As I was benchmarking io-bound processes, I saw that rsync was significantly slower in respect to my reference, FreeBSD 12-CURRENT.
Using same hardware, same command with same source and target disks:
In OmniOS r151026 I measured,
test@omniosce:~# time rsync -aPt /zarc/images /home/test/
real 17m25.428s
user 28m33.792s
sys 2m46.217s
In FreeBSD 12-CURRENT:
test@freebsd:~ % time rsync -aPt /zarc/images /home/test/
374.651u 464.028s 11:30.63 121.4% 567+210k 791583+780083io 2pf+0w
(Note that FreeBSD 12-CURRENT contains debug switches, so it runs slower than future upcoming RELEASE version).
I noticed that, under FreeBSD,
rsyncwas running as 3 processes, all withnice=0, two of them consistently using 50% to 70% CPU time.On OmniOS,
rsyncwas also running as 3 processes, also withnice=0, but each one never more than 3%.
Is the CPU usage the reason execution time on same hardware is so different on FreeBSD and illumos?
If so, since nice was the same on both OS, why illumos does not allow higher CPU usage?
How could one improve rsync execution time on illumos-based OS?
Thank you in advance.
2018-06-02 edit:
Clarified question to make it more specific. Thanks to @rui-f-ribeiro
Answering to @roaima:
- The source and destination filesystems are both local disks
- This is not a one-off run for each OS, I have been testing this puzzling situation with many repetitions
- At ever test I am making sure the destination directory tree is completely empty of files matching those in the source