seoul: add vm_stress script version

Issue #3683
This commit is contained in:
Alexander Boettcher 2020-03-12 11:38:40 +01:00 committed by Christian Helmuth
parent 29911cf114
commit 319d2be1af
10 changed files with 246 additions and 6 deletions

View File

@ -25,9 +25,12 @@ set use_genode_iso 0
set use_model_ahci 0
set use_model_ide 0
set use_block_vdi 0
set use_block_ram 0
set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 0

View File

@ -12,9 +12,12 @@ set use_genode_iso 0
set use_model_ahci 1
set use_model_ide 0
set use_block_vdi 0
set use_block_ram 1
set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 0

View File

@ -15,9 +15,12 @@ set use_genode_iso 0
set use_model_ahci 0
set use_model_ide 0
set use_block_vdi 0
set use_block_ram 0
set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 1

View File

@ -13,9 +13,12 @@ set use_genode_iso 1
set use_model_ahci 1
set use_model_ide 0
set use_block_vdi 0
set use_block_ram 0
set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 0

View File

@ -19,9 +19,12 @@ set use_genode_iso 0
set use_model_ahci 0
set use_model_ide 0
set use_block_vdi 0
set use_block_ram 0
set use_block_sata 0
set use_part_block 0
set use_nic_session 0
set use_nic_bridge 0

View File

@ -12,9 +12,12 @@ set use_genode_iso 0
set use_model_ahci 0
set use_model_ide 0
set use_block_vdi 0
set use_block_ram 0
set use_block_sata 0
set use_part_block 0
set use_nic_session 1
set use_nic_bridge 0

View File

@ -5,11 +5,24 @@
# \author Alexander Boettcher
# \date 2011-11-21
set use_fs_rump $use_block_vdi
set use_drv_ahci [expr $use_block_vdi || $use_block_sata]
create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
[depot_user]/src/init \
[depot_user]/src/nitpicker
if {$use_fs_rump} {
import_from_depot [depot_user]/src/vfs \
[depot_user]/src/rump
}
if {$use_part_block} {
import_from_depot [depot_user]/src/part_block
}
#
# Build
#
@ -54,9 +67,10 @@ set build_components {
if {$use_fancy_stuff} { set use_framebuffer 1 }
lappend_if $use_block_vdi build_components server/vdi_block
lappend_if $use_usb build_components drivers/usb
lappend_if $use_block_ram build_components server/ram_block
lappend_if $use_block_sata build_components drivers/ahci
lappend_if $use_drv_ahci build_components drivers/ahci
lappend_if $use_nic_session build_components drivers/nic
lappend_if $use_nic_bridge build_components server/nic_bridge
lappend_if $use_framebuffer build_components drivers/framebuffer
@ -162,7 +176,7 @@ close $vm_cfg_fd
# Generate Genode config
#
append config {
set config {
<config verbose="yes" prio_levels="4">
<parent-provides>
<service name="ROM"/>
@ -202,12 +216,38 @@ append_if [expr !$use_usb] config {
<route> <any-service><parent/> <any-child/> </any-service> </route>
</start> }
append_if $use_block_sata config {
append_if $use_drv_ahci config {
<start name="ahci_drv" priority="-1">
<resource name="RAM" quantum="1M" />
<provides><service name="Block"/></provides>
<config>}
append_if [expr $use_block_sata && !$use_part_block] config {
<policy label="seoul -> VirtualDisk 0" device="0" writeable="yes"/>}
append_if [expr $use_block_vdi && !$use_part_block] config {
<policy label="rump_fs -> " device="0" writeable="yes"/>}
append_if [expr $use_block_vdi && $use_part_block] config {
<policy label="part_block -> " device="0" writeable="yes"/>}
append_if [expr $use_block_sata && $use_part_block] config {
<policy label="part_block -> " device="0" writeable="yes"/>}
append_if $use_drv_ahci config {
</config>
</start>}
append_if $use_part_block config {
<start name="part_block" priority="-1">
<resource name="RAM" quantum="10M"/>
<provides><service name="Block"/></provides>
<route>
<any-service><child name="ahci_drv"/> <parent/></any-service>
</route>
<config>
<policy label="seoul -> VirtualDisk 0" device="0" writeable="yes"/>
<policy label="seoul -> VirtualDisk 0" partition="5" writeable="yes"/>
<policy label="rump_fs -> " partition="4" writeable="yes"/>
</config>
</start>}
@ -218,6 +258,44 @@ append_if $use_block_ram config {
<config file="seoul-disc.raw" block_size="512"/>
</start>}
append_if $use_fs_rump config {
<start name="rump_fs" priority="-1" caps="200">
<binary name="vfs"/>
<resource name="RAM" quantum="32M"/>
<provides><service name="File_system"/></provides>
<config ld_verbose="yes">
<vfs>
<rump fs="ext2fs" ram="28M"/>
</vfs>
<default-policy root="/" writeable="yes"/>
</config>
<route>
<service name="Timer"><child name="timer"/></service>}
append_if [expr $use_fs_rump && $use_part_block] config {
<service name="Block"><child name="part_block"/></service>}
append_if [expr $use_fs_rump && !$use_part_block] config {
<service name="Block"><child name="ahci_drv"/></service>}
append_if $use_fs_rump config {
<any-service> <parent/> </any-service>
</route>
</start>}
append_if $use_block_vdi config {
<start name="vdi_block">
<resource name="RAM" quantum="8M"/>
<provides> <service name="Block"/> </provides>
<config file="/seoul_stress32.vdi" writeable="yes">
<vfs> <fs buffer_size="1M"/> </vfs>
<policy label="seoul -> VirtualDisk 0" writeable="yes"/>
</config>
<route>
<service name="File_system"><child name="rump_fs"/></service>
<any-service> <parent/> <any-child /> </any-service>
</route>
</start>}
append_if $use_genode_iso config {
<start name="rom_block" priority="-1">
<resource name="RAM" quantum="16M" />
@ -292,6 +370,10 @@ append_if $use_genode_iso config {
<service name="ROM" label="vm_seoul.cfg"> <parent/> </service>
<service name="ROM" label="platform_info"> <parent/> </service>
<service name="ROM"><child name="iso9660"/></service>}
append_if $use_block_vdi config {
<service name="Block"><child name="vdi_block"/></service>}
append_if [expr $use_block_sata && $use_part_block] config {
<service name="Block"><child name="part_block"/></service>}
append config {
<service name="Rtc"><child name="rtc_drv"/></service>
<any-service><parent/><any-child/></any-service>
@ -437,10 +519,11 @@ set boot_modules {
vm_seoul.cfg
}
lappend_if $use_block_vdi boot_modules vdi_block
lappend_if [expr !$use_usb] boot_modules ps2_drv
lappend_if $use_usb boot_modules usb_drv
lappend_if $use_block_ram boot_modules ram_block
lappend_if $use_block_sata boot_modules ahci_drv
lappend_if $use_drv_ahci boot_modules ahci_drv
lappend_if $use_nic_session boot_modules ipxe_nic_drv
lappend_if $use_nic_bridge boot_modules nic_bridge
lappend_if $use_framebuffer boot_modules vesa_fb_drv

View File

@ -0,0 +1,138 @@
#
# \brief Seoul on Genode - boot from a vdi or raw
# \author Alexander Boettcher
# \date 2020-03-12
#
assert_spec x86
if { [get_cmd_switch --autopilot] && [have_spec x86_32] } {
puts "Run script does not support autopilot mode on 32 bit"
exit 0
}
if { [get_cmd_switch --autopilot] && [have_include power_on/qemu] } {
puts "\n Run script is not supported on this platform. \n";
exit 0
}
#if {[have_spec foc] || [have_spec sel4] || [have_spec nova]} {
if {[have_spec nova]} {
} else {
puts "\n Run script is not supported on this platform. \n";
exit 0
}
set use_multiboot 0
set use_genode_iso 0
set use_model_ahci 1
set use_model_ide 0
set use_block_vdi 0
set use_block_ram 0
set use_block_sata 1
set use_part_block [expr ![have_include power_on/qemu]]
set use_nic_session 1
set use_nic_bridge 0
set use_usb 0
set use_framebuffer 1
set use_fancy_stuff 0
set use_top 0
set memory_vmm_vm "512M"
set vcpus_to_be_used 2
if {[have_include power_on/qemu]} {
if {![file exists bin/seoul-disc.raw]} {
if {![file exists bin/seoul_stress32.vdi]} {
puts "Please provide a disk image file to bin/seoul_stress32.vdi"
exit 1
}
# if {![file exists bin/seoul_stress32.raw]} {
# puts "Please provide a disk image file to bin/seoul_stress32.raw"
# exit 1
# }
set mke2fs [installed_command mke2fs]
set dd [installed_command dd]
# catch { exec $dd if=/dev/zero of=bin/seoul-disc.raw bs=1M count=12000 }
catch { exec $dd if=/dev/zero of=bin/seoul-disc.raw bs=1M count=6000 }
catch { exec $mke2fs -F bin/seoul-disc.raw }
exec [installed_command e2cp] bin/seoul_stress32.vdi bin/seoul-disc.raw:seoul_stress32.vdi
# exec [installed_command e2cp] bin/seoul_stress32.raw bin/seoul-disc.raw:seoul_stress32.raw
}
append qemu_args " -m 2536 "
append qemu_args " -cpu phenom"
append qemu_args " -drive id=disk,file=bin/seoul-disc.raw,format=raw,if=none"
append qemu_args " -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0"
run_genode_until forever
exit
}
set match_guest_log "\[init -\> seoul\].*VMM: #"
set match_guest_down "\[init -\> seoul\].*VMM: STANDBY IMMEDIATE"
set match_boot_string "--- Seoul VMM starting ---"
set vmm_name "seoul"
set vcpus_to_be_used 1
set use_vcpus $vcpus_to_be_used
lappend results_expected 1 10 35 76
lappend boottime_expected 54
source ${genode_dir}/repos/ports/run/seoul.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
run_genode_until $match_guest_down 20 [output_spawn_id]
kill_spawned [output_spawn_id]
set vcpus_to_be_used 2
set use_vcpus $vcpus_to_be_used
lappend results_expected 2 10 38 47
lappend boottime_expected 54
source ${genode_dir}/repos/ports/run/seoul.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
run_genode_until $match_guest_down 20 [output_spawn_id]
kill_spawned [output_spawn_id]
set vcpus_to_be_used 3
set use_vcpus $vcpus_to_be_used
lappend results_expected 3 10 39 38
lappend boottime_expected 54
source ${genode_dir}/repos/ports/run/seoul.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
run_genode_until $match_guest_down 20 [output_spawn_id]
kill_spawned [output_spawn_id]
set vcpus_to_be_used 4
set use_vcpus $vcpus_to_be_used
lappend results_expected 4 10 36 34
lappend boottime_expected 54
source ${genode_dir}/repos/ports/run/seoul.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
run_genode_until $match_guest_down 20 [output_spawn_id]
kill_spawned [output_spawn_id]
#
# Dump aggregated output of the several runs above
#
grep_output "$match_guest_log.*cpus="
puts $output
set merge_host_output [split $output_host "\n"]
set merge_host_extra [split $output_host_extra "\n"]
for { set i 0 } { $i < [llength $merge_host_output] } { incr i} {
puts "[lindex $merge_host_output $i] [lindex $merge_host_extra $i]"
}
evaluate_stress

View File

@ -9,7 +9,7 @@ if {[get_cmd_switch --autopilot] && $current_date != "Sat" && $current_date != "
run_genode_until $match_boot_string 40
set t_vm_boot_start [clock seconds]
run_genode_until "$match_guest_log.*git clone" 70 [output_spawn_id]
run_genode_until "$match_guest_log.*git clone" 90 [output_spawn_id]
set t_vm_git_clone [clock seconds]
run_genode_until "$match_guest_log.*prepare ports" 70 [output_spawn_id]
set t_vm_prepare_ports [clock seconds]

View File

@ -80,6 +80,7 @@ vbox5_win7_64_raw
vbox5_win7_64_share
vm_stress_vbox5-debian32
vm_stress_vbox5-debian64
vm_stress_seoul-debian32
verify
vfs_import
vmm_arm