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 { } 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)