protobuf_grpc: use pthread
Fixes pagefaults. This includes the changes provided by ssumpf in 6726aef. Issue #190
This commit is contained in:
committed by
Christian Helmuth
parent
c2d93a3fa9
commit
12d69338c5
157
run/grpc-server.run
Normal file
157
run/grpc-server.run
Normal file
@@ -0,0 +1,157 @@
|
||||
# To execute this run script on a development PC, you need to setup a TAP device
|
||||
# first:
|
||||
|
||||
# netdev=wlp2s0
|
||||
# tapdev=tap0
|
||||
# user=developer
|
||||
#
|
||||
# sudo ip tuntap add dev $tapdev mode tap user $user
|
||||
# sudo ip address flush dev $tapdev
|
||||
# sudo ip address add 10.0.2.1/24 brd 10.0.2.255 dev $tapdev
|
||||
# sudo ip link set dev $tapdev addr 02:00:00:ca:fe:01
|
||||
# sudo ip link set dev $tapdev up
|
||||
#
|
||||
# connect using your favorite grpc client
|
||||
# E.g. https://github.com/sidhussmann/grpc-connection-stress
|
||||
# ./stress_grpc.sh 10.0.2.55:8899
|
||||
|
||||
|
||||
|
||||
|
||||
create_boot_directory
|
||||
|
||||
|
||||
import_from_depot [depot_user]/src/[base_src]
|
||||
import_from_depot [depot_user]/src/init
|
||||
import_from_depot [depot_user]/src/libc
|
||||
import_from_depot [depot_user]/src/libcrypto
|
||||
import_from_depot [depot_user]/src/nic_router
|
||||
import_from_depot [depot_user]/src/posix
|
||||
import_from_depot [depot_user]/src/protobuf
|
||||
import_from_depot [depot_user]/src/libssl
|
||||
import_from_depot [depot_user]/src/report_rom
|
||||
import_from_depot [depot_user]/src/stdcxx
|
||||
import_from_depot [depot_user]/src/vfs
|
||||
import_from_depot [depot_user]/src/vfs_lxip
|
||||
import_from_depot [depot_user]/src/zlib
|
||||
|
||||
|
||||
set build_components {
|
||||
drivers/nic
|
||||
test/grpc/server
|
||||
}
|
||||
|
||||
|
||||
build $build_components
|
||||
|
||||
|
||||
set nic_router_reporting 0
|
||||
|
||||
|
||||
set config {
|
||||
<config verbose="no">
|
||||
<parent-provides>
|
||||
<service name="CPU"/>
|
||||
<service name="LOG"/>
|
||||
<service name="PD"/>
|
||||
<service name="ROM"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route>
|
||||
<default caps="100"/>
|
||||
|
||||
<start name="timer">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="Timer"/> </provides>
|
||||
</start>
|
||||
}
|
||||
|
||||
append config {
|
||||
|
||||
<start name="grpc_server" caps="200">
|
||||
<resource name="RAM" quantum="96M"/>
|
||||
<config server_address="0.0.0.0:8899">
|
||||
<arg value="grpc_server"/>
|
||||
<libc stdout="/dev/log" stderr="/dev/log" rtc="/dev/rtc" socket="/dev/socket"/>
|
||||
<vfs>
|
||||
<dir name="dev">
|
||||
<log/> <null/>
|
||||
<inline name="rtc">2000-01-01 00:00</inline>
|
||||
<dir name="socket">
|
||||
<lxip ip_addr="10.0.3.2" netmask="255.255.255.0" gateway="10.0.3.1"/>
|
||||
</dir>
|
||||
</dir>
|
||||
</vfs>
|
||||
</config>
|
||||
<route>
|
||||
<service name="Nic"> <child name="nic_router" label="grpc2tee -> "/> </service>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="nic_router">
|
||||
<resource name="RAM" quantum="5M"/>
|
||||
<provides><service name="Nic"/></provides>
|
||||
<config verbose_domain_state="no"
|
||||
verbose_packets="no"
|
||||
verbose_packet_drop="no">
|
||||
|
||||
<policy label="grpc2tee -> " domain="server"/>
|
||||
<uplink domain="uplink"/>
|
||||
|
||||
<domain name="uplink" interface="10.0.2.55/24" gateway="10.0.2.1">
|
||||
<nat domain="server" tcp-ports="100" />
|
||||
<tcp-forward port="8899" domain="server" to="10.0.3.2" />
|
||||
</domain>
|
||||
|
||||
<domain name="server" interface="10.0.3.1/24">
|
||||
<dhcp-server ip_first="10.0.3.2"
|
||||
ip_last="10.0.3.2"
|
||||
ip_lease_time_sec="600"/>
|
||||
</domain>
|
||||
|
||||
</config>
|
||||
<route>
|
||||
<service name="Nic"> <child name="nic_drv"/> </service>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
<start name="nic_drv" ld="no">
|
||||
<binary name="linux_nic_drv"/>
|
||||
<resource name="RAM" quantum="4M"/>
|
||||
<provides>
|
||||
<service name="Nic"/>
|
||||
</provides>
|
||||
<config>
|
||||
<nic mac="02:00:00:00:00:01" tap="tap0"/>
|
||||
</config>
|
||||
<route>
|
||||
<any-service> <parent/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
</config>
|
||||
}
|
||||
|
||||
|
||||
install_config $config
|
||||
|
||||
|
||||
set boot_modules {
|
||||
grpc_server
|
||||
grpc.lib.so
|
||||
libc_pipe.lib.so
|
||||
vfs_lwip.lib.so
|
||||
linux_nic_drv
|
||||
}
|
||||
|
||||
|
||||
append qemu_args " -nographic "
|
||||
|
||||
|
||||
build_boot_image $boot_modules
|
||||
|
||||
|
||||
run_genode_until forever
|
||||
169
run/grpc-startup.run
Normal file
169
run/grpc-startup.run
Normal file
@@ -0,0 +1,169 @@
|
||||
create_boot_directory
|
||||
|
||||
|
||||
import_from_depot [depot_user]/src/[base_src]
|
||||
import_from_depot [depot_user]/src/dynamic_rom
|
||||
import_from_depot [depot_user]/src/init
|
||||
import_from_depot [depot_user]/src/libc
|
||||
import_from_depot [depot_user]/src/libcrypto
|
||||
import_from_depot [depot_user]/src/nic_router
|
||||
import_from_depot [depot_user]/src/posix
|
||||
import_from_depot [depot_user]/src/protobuf
|
||||
import_from_depot [depot_user]/src/libssl
|
||||
import_from_depot [depot_user]/src/report_rom
|
||||
import_from_depot [depot_user]/src/stdcxx
|
||||
import_from_depot [depot_user]/src/vfs
|
||||
import_from_depot [depot_user]/src/vfs_lwip
|
||||
import_from_depot [depot_user]/src/zlib
|
||||
|
||||
|
||||
set build_components {
|
||||
test/grpc/server
|
||||
test/grpc/client
|
||||
}
|
||||
|
||||
|
||||
build $build_components
|
||||
|
||||
|
||||
set nic_router_reporting 0
|
||||
|
||||
|
||||
set config {
|
||||
<config verbose="no">
|
||||
<parent-provides>
|
||||
<service name="CPU"/>
|
||||
<service name="LOG"/>
|
||||
<service name="PD"/>
|
||||
<service name="ROM"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route>
|
||||
<default caps="100"/>
|
||||
|
||||
<start name="timer">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="Timer"/> </provides>
|
||||
</start>
|
||||
}
|
||||
append_if $nic_router_reporting config {
|
||||
<start name="report_rom">
|
||||
<resource name="RAM" quantum="2M"/>
|
||||
<provides>
|
||||
<service name="ROM"/>
|
||||
<service name="Report"/>
|
||||
</provides>
|
||||
<config verbose="yes">
|
||||
</config>
|
||||
</start>
|
||||
}
|
||||
append config {
|
||||
<start name="nic_router">
|
||||
<resource name="RAM" quantum="8M"/>
|
||||
<provides> <service name="Nic"/> </provides>
|
||||
<config verbose="no"
|
||||
verbose_packets="no"
|
||||
verbose_domain_state="yes"
|
||||
verbose_packet_drop="yes"
|
||||
dhcp_discover_timeout_sec="3"
|
||||
dhcp_request_timeout_sec="3"
|
||||
dhcp_offer_timeout_sec="3"
|
||||
udp_idle_timeout_sec="30"
|
||||
tcp_idle_timeout_sec="30"
|
||||
tcp_max_segm_lifetime_sec="15">}
|
||||
append_if $nic_router_reporting config {
|
||||
<report bytes="yes"
|
||||
config="yes"
|
||||
quota="no"
|
||||
stats="no"
|
||||
interval_sec="2"/>}
|
||||
append config {
|
||||
<domain name="server" interface="10.10.10.1/24">
|
||||
<ip dst="10.10.20.0/0" domain="client"/>
|
||||
</domain>
|
||||
<domain name="client" interface="10.10.20.1/24">
|
||||
<ip dst="10.10.10.0/0" domain="server"/>
|
||||
</domain>
|
||||
<policy label="init -> grpc_server -> lwip" domain="server"/>
|
||||
<policy label="init -> grpc_client -> lwip" domain="client"/>
|
||||
</config>
|
||||
</start>
|
||||
|
||||
<start name="dynamic_rom" caps="100">
|
||||
<resource name="RAM" quantum="4M"/>
|
||||
<provides> <service name="ROM"/> </provides>
|
||||
<config>
|
||||
<rom name="init.config">
|
||||
<inline description="server_only">
|
||||
<config verbose="yes">
|
||||
<parent-provides>
|
||||
<service name="CPU"/>
|
||||
<service name="LOG"/>
|
||||
<service name="Nic"/>
|
||||
<service name="PD"/>
|
||||
<service name="ROM"/>
|
||||
<service name="Timer"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route>
|
||||
<default caps="100"/>
|
||||
<start name="grpc_server" caps="200">
|
||||
<resource name="RAM" quantum="8M"/>
|
||||
<config port="50051">
|
||||
<arg value="grpc_server"/>
|
||||
<libc stdout="/dev/log" stderr="/dev/log" rtc="/dev/rtc" socket="/dev/socket"/>
|
||||
<vfs>
|
||||
<dir name="dev">
|
||||
<log/> <null/>
|
||||
<inline name="rtc">2000-01-01 00:00</inline>
|
||||
<dir name="socket">
|
||||
<lwip ip_addr="10.10.10.55" netmask="255.255.255.0" gateway="10.10.10.1"/>
|
||||
</dir>
|
||||
</dir>
|
||||
</vfs>
|
||||
</config>
|
||||
</start>
|
||||
</config>
|
||||
</inline>
|
||||
<sleep milliseconds="2000"/>
|
||||
<inline description="empty">
|
||||
<config verbose="no">
|
||||
</config>
|
||||
</inline>
|
||||
<sleep milliseconds="2000"/>
|
||||
</rom>
|
||||
</config>
|
||||
</start>
|
||||
|
||||
<start name="init" caps="1500">
|
||||
<resource name="RAM" quantum="20M" />
|
||||
<route>
|
||||
<service name="ROM" label="config"> <child name="dynamic_rom" label="init.config"/> </service>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
|
||||
</config>
|
||||
}
|
||||
|
||||
|
||||
install_config $config
|
||||
|
||||
|
||||
set boot_modules {
|
||||
grpc_server
|
||||
grpc_client
|
||||
grpc.lib.so
|
||||
libc_pipe.lib.so
|
||||
}
|
||||
|
||||
|
||||
append qemu_args " -nographic "
|
||||
|
||||
|
||||
build_boot_image $boot_modules
|
||||
|
||||
|
||||
run_genode_until {.*Error: thread 'runner' tried to self de-struct - sleeping forever.} 300
|
||||
27
run/grpc.run
27
run/grpc.run
@@ -1,7 +1,7 @@
|
||||
create_boot_directory
|
||||
|
||||
|
||||
import_from_depot [depot_user]/src/[base_src]
|
||||
# import_from_depot [depot_user]/src/[base_src]
|
||||
import_from_depot [depot_user]/src/dynamic_rom
|
||||
import_from_depot [depot_user]/src/init
|
||||
import_from_depot [depot_user]/src/libc
|
||||
@@ -14,10 +14,13 @@ import_from_depot [depot_user]/src/report_rom
|
||||
import_from_depot [depot_user]/src/stdcxx
|
||||
import_from_depot [depot_user]/src/vfs
|
||||
import_from_depot [depot_user]/src/vfs_lwip
|
||||
import_from_depot [depot_user]/src/vfs_lxip
|
||||
import_from_depot [depot_user]/src/zlib
|
||||
|
||||
|
||||
set build_components {
|
||||
core
|
||||
timer
|
||||
test/grpc/server
|
||||
test/grpc/client
|
||||
}
|
||||
@@ -35,6 +38,7 @@ set config {
|
||||
<service name="CPU"/>
|
||||
<service name="LOG"/>
|
||||
<service name="PD"/>
|
||||
<service name="RM"/>
|
||||
<service name="ROM"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
@@ -102,6 +106,7 @@ append config {
|
||||
<service name="LOG"/>
|
||||
<service name="Nic"/>
|
||||
<service name="PD"/>
|
||||
<service name="RM"/>
|
||||
<service name="ROM"/>
|
||||
<service name="Timer"/>
|
||||
</parent-provides>
|
||||
@@ -110,8 +115,8 @@ append config {
|
||||
</default-route>
|
||||
<default caps="100"/>
|
||||
<start name="grpc_server" caps="200">
|
||||
<resource name="RAM" quantum="8M"/>
|
||||
<config port="50051">
|
||||
<resource name="RAM" quantum="50M"/>
|
||||
<config server_address="10.10.10.55:50051">
|
||||
<arg value="grpc_server"/>
|
||||
<libc stdout="/dev/log" stderr="/dev/log" rtc="/dev/rtc" socket="/dev/socket"/>
|
||||
<vfs>
|
||||
@@ -135,6 +140,7 @@ append config {
|
||||
<service name="LOG"/>
|
||||
<service name="Nic"/>
|
||||
<service name="PD"/>
|
||||
<service name="RM"/>
|
||||
<service name="ROM"/>
|
||||
<service name="Timer"/>
|
||||
</parent-provides>
|
||||
@@ -143,8 +149,8 @@ append config {
|
||||
</default-route>
|
||||
<default caps="100"/>
|
||||
<start name="grpc_server" caps="200">
|
||||
<resource name="RAM" quantum="8M"/>
|
||||
<config>
|
||||
<resource name="RAM" quantum="50M"/>
|
||||
<config server_address="10.10.10.55:50051">
|
||||
<arg value="grpc_server"/>
|
||||
<libc stdout="/dev/log" stderr="/dev/log" rtc="/dev/rtc" socket="/dev/socket"/>
|
||||
<vfs>
|
||||
@@ -158,8 +164,8 @@ append config {
|
||||
</vfs>
|
||||
</config>
|
||||
</start>
|
||||
<start name="grpc_client" caps="200">
|
||||
<resource name="RAM" quantum="8M"/>
|
||||
<start name="grpc_client" caps="400">
|
||||
<resource name="RAM" quantum="100M"/>
|
||||
<config>
|
||||
<arg value="grpc_client"/>
|
||||
<libc stdout="/dev/log" stderr="/dev/log" rtc="/dev/rtc" socket="/dev/socket"/>
|
||||
@@ -176,13 +182,13 @@ append config {
|
||||
</start>
|
||||
</config>
|
||||
</inline>
|
||||
<sleep milliseconds="2000000000"/>
|
||||
<sleep milliseconds="30000"/>
|
||||
</rom>
|
||||
</config>
|
||||
</start>
|
||||
|
||||
<start name="init" caps="1500">
|
||||
<resource name="RAM" quantum="20M" />
|
||||
<resource name="RAM" quantum="200M" />
|
||||
<route>
|
||||
<service name="ROM" label="config"> <child name="dynamic_rom" label="init.config"/> </service>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
@@ -197,8 +203,11 @@ install_config $config
|
||||
|
||||
|
||||
set boot_modules {
|
||||
core
|
||||
timer
|
||||
grpc_server
|
||||
grpc_client
|
||||
ld.lib.so
|
||||
grpc.lib.so
|
||||
libc_pipe.lib.so
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user