mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-29 18:18:54 +00:00
92bcc50c0a
On some platforms, the page index affects the measurements. genodelabs/genode#4454
88 lines
3.3 KiB
Plaintext
88 lines
3.3 KiB
Plaintext
if { [get_cmd_switch --autopilot] } {
|
|
if {[have_include "power_on/qemu"]} {
|
|
puts "\nRun script does not support Qemu.\n"
|
|
exit 0
|
|
}
|
|
}
|
|
|
|
build "core init test/memcpy"
|
|
|
|
create_boot_directory
|
|
|
|
install_config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="PD"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="LOG"/>
|
|
</parent-provides>
|
|
|
|
<default-route> <any-service> <parent/> </any-service> </default-route>
|
|
<default caps="200"/>
|
|
|
|
<start name="test-memcpy">
|
|
<resource name="RAM" quantum="40M"/>
|
|
<config>
|
|
<vfs> <dir name="dev"> <log/> <null/> </dir> </vfs>
|
|
<libc stdout="/dev/log" stderr="/dev/log" socket="/socket"/>
|
|
</config>
|
|
</start>
|
|
</config>
|
|
}
|
|
|
|
build_boot_image {
|
|
core init test-memcpy
|
|
ld.lib.so libc.lib.so vfs.lib.so
|
|
}
|
|
|
|
append qemu_args " -nographic "
|
|
|
|
proc run_test {name serial_id} {
|
|
run_genode_until "start $name.*\n" 20 $serial_id
|
|
set t1 [clock milliseconds]
|
|
run_genode_until "finished $name.*\n" 300 $serial_id
|
|
set t2 [clock milliseconds]
|
|
return [expr {$t2 - $t1}]
|
|
}
|
|
|
|
run_genode_until "Memcpy testsuite started.*\n" 60
|
|
set serial_id [output_spawn_id]
|
|
set byte_dur [run_test "bytewise memcpy" $serial_id]
|
|
set genode_dur [run_test "Genode memcpy" $serial_id]
|
|
set genode_set_dur [run_test "Genode memset" $serial_id]
|
|
set libc_cpy_dur [run_test "libc memcpy" $serial_id]
|
|
set libc_set_dur [run_test "libc memset" $serial_id]
|
|
set genode_offset_dur [run_test "Genode memcpy" $serial_id]
|
|
set uncached_wr_dur [run_test "Genode memcpy" $serial_id]
|
|
set uncached_rd_dur [run_test "Genode memcpy" $serial_id]
|
|
puts "bytewise: copied 8 GB in $byte_dur milliseconds ([expr {8192000 / $byte_dur}] MiB/sec)"
|
|
puts "memcpy: copied 8 GB in $genode_dur milliseconds ([expr {8192000 / $genode_dur}] MiB/sec)"
|
|
puts "memset: copied 8 GB in $genode_set_dur milliseconds ([expr {8192000 / $genode_set_dur}] MiB/sec)"
|
|
puts "libc memcpy: copied 8 GB in $libc_cpy_dur milliseconds ([expr {8192000 / $libc_cpy_dur}] MiB/sec)"
|
|
puts "libc memset: copied 8 GB in $libc_set_dur milliseconds ([expr {8192000 / $libc_set_dur}] MiB/sec)"
|
|
puts "memcpy (page offset): copied 8 GB in $genode_offset_dur milliseconds ([expr {8192000 / $genode_offset_dur}] MiB/sec)"
|
|
puts "memcpy (uncached write): copied 8 GB in $uncached_wr_dur milliseconds ([expr {8192000 / $uncached_wr_dur}] MiB/sec)"
|
|
puts "memcpy (uncached read): copied 8 GB in $uncached_rd_dur milliseconds ([expr {8192000 / $uncached_rd_dur}] MiB/sec)"
|
|
exit 0
|
|
|
|
#
|
|
# Linux baseline measurements
|
|
#
|
|
|
|
# Zynq-7000 @ 666MHz (L2 prefetching enabled, offset=0)
|
|
# Genode memcpy: copied 8388608 KiB in 27362177 usecs (299 MiB/sec)
|
|
# bytewise memcpy: copied 8388608 KiB in 43882888 usecs (186 MiB/sec)
|
|
# libc memcpy: copied 8388608 KiB in 28702066 usecs (285 MiB/sec)
|
|
# libc memset: copied 8388608 KiB in 4033019 usecs (2031 MiB/sec)
|
|
|
|
# Zynq-7000 @ 666MHz (L2 prefetching enabled, offset=4)
|
|
# Genode memcpy: copied 8388608 KiB in 14985454 usecs (546 MiB/sec)
|
|
# bytewise memcpy: copied 8388608 KiB in 39478781 usecs (207 MiB/sec)
|
|
# libc memcpy: copied 8388608 KiB in 28792091 usecs (284 MiB/sec)
|
|
# libc memset: copied 8388608 KiB in 4041102 usecs (2027 MiB/sec)
|