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.