From Fedora Project Wiki

The main aim of this test was comparison of syscall count, tick count, read/written bytes when performing the same task on virtual 32-bit and 64-bit machine.

System configuration

We used VirtualBox OSE to perform this test. Both virtual machines run on the same physical machine (not simultaneously) in the same configuration.

  • The host configuration:
    • Intel Core 2 Duo E8400 3GHz
    • 4 GB of memory
    • Fedora 11
    • VirtualBox 3.0.4_OSE r50677
  • The guest configuration:
    • 1 CPU
    • 1024 MB of memory
    • 12 MB of video memory
    • ACPI: enabled
    • PAE/NX: enabled
    • VT-x: enabled
    • Nested paging: enabled
    • Fedora Rawhide (2009-09-16), i686 or x86_64
    • VirtualBox Guest Additions

Notice: Absence of Guest Additions has great influence on guest system performance, especially when running 64-bit guest. Feel free to verify this test but don't forget to install Guest Additions before.

Test description

The results were measured using scomes (SystemTap script) which can be found in tuned-utils package. However we used the newest GIT version.

The test run 10 times in sequence. Clean caches, dentries and inodes were dropped before each run (echo 3 > /proc/sys/vm/drop_caches).

The measured task was building squid RPM package from SRPM file:

./scomes.stp -c "rpmbuild --rebuild squid-3.1.0.13-3.fc12.src.rpm" 0


Uprocessed results

32-bit guest

test round syscalls kernel ticks userspace ticks read bytes written bytes
1 176379 9169 5860 19815353 19496541
2 175957 9410 6057 19434866 19502130
3 175336 9341 5553 18696381 19489876
4 175072 9063 5522 18815017 19495984
5 175316 9186 5542 18788471 19495878
6 176232 9033 5353 19460705 19501778
7 174503 8979 5621 18517294 19489876
8 188483 21269 4921 31460765 20263640
9 189830 9248 5811 32850019 20232887
10 175268 19736 4881 18657208 19492557

64-bit guest

test round syscalls kernel ticks userspace ticks read bytes written bytes
1 175694 14905 8232 21770053 19564938
2 177300 14098 8037 19354317 19529482
3 179318 15268 7757 20555112 19549143
4 177070 9890 4724 18915315 19523128
5 177867 9826 4824 19321045 19529497
6 177306 10282 4792 18802447 19523195
7 178227 10220 4823 19181444 19531070
8 178271 9927 4855 19824862 19540823
9 178032 10149 4833 19304156 19529428
10 177906 10395 4798 19360721 19529566

Results

syscalls count

32-bit 64-bit 32 → 64 increase
average 178237.6 177699.1 -0.30%
median 175646.5 177886.5 1.28%
min 174503 175694 0.68%
max 189830 179318  -5.54%

ticks count

kernel

32-bit 64-bit 32 → 64 increase
average 11443.4 11496 0.46%
median 9217 10251 11.22%
min 8979 9826 9.43%
max 21269 15268 -28.21%

userspace

32-bit 64-bit 32 → 64 increase
average 5512.1 5767.5 4.64%
median 5547.5 4828.5 -12.96%
min 4881 4724 -3.22%
max 6057 8232 35.91%

total

32-bit 64-bit 32 → 64 increase
average 169955.5 17263.5 1.82%
median 14961.5 15058.5 0.65%
min 14386 14614 1.58%
max 26190 23137 -11.66%

read/written bytes

read

32-bit 64-bit 32 → 64 increase
average 21649607.9 19638947.2 -9.29%
median 19124941.5  19337681 1.11%
min 18517294 18802447 1.54%
max 32850019 21770053 -33.73%

written

32-bit 64-bit 32 → 64 increase
average 19646114.7 19535027 -0.57%
median 19496262.5 19529531.5 0.17%
min 19489876 19523128 0.17%
max 20263640 19564938 -3.45%

total

32-bit 64-bit 32 → 64 increase
average 41295722.6 39173974.2 -5.14%
median 38623998.5 38867170.5 0.63%
min 38007170 38325642 0.84%
max 53082906 41334991 -22.13%

Conclusion

If we consider the average results to be predicative, it seems that there is almost no difference in syscall count between the architectures. The same as for kernel ticks, although we have more userspace ticks on 64-bit (+ 5%). It is much better with read bytes on 64-bit (-10%). But there is no significant decrease in written bytes.