hello genode hackers, I need to know which types of testing and tools are available for testing devices drivers, system call performance, scheduling and any modification made on the system.
best regards, waldo
Hi Waldo,
hello genode hackers, I need to know which types of testing and tools are available for testing devices drivers, system call performance, scheduling and any modification made on the system.
I wonder what's your intention to post the exact same (and overly generic) question on different mailing lists (i.e., l4-hackers). Are you doing a survey?
In the course of your experiments with Genode, you have certainly encountered so-called run scripts. The run tool that executes those scripts is the most relevant answer to your question. You can find the corresponding documentation here:
http://genode.org/documentation/developer-resources/build_system#Automated_i...
The run and autopilot tools are used daily to exercise all run scripts listed in 'tool/autopilot.list' on various kernels and hardware platforms.
Among the tests are several benchmarks, for example, the time it takes to execute the 'ports/run/noux_tool_chain_auto.run' script, or the measurements taken by the 'ports/run/netperf*.run' scripts. For some device drivers, there exist driver-specific benchmarks. For example, a performance test for the OMAP4 SD-card driver can be found at 'repos/os/src/drivers/sd_card/omap4/bench/'.
Regarding tools for investigating performance issues, I'd like to highlight two approaches. First, since Genode is able to run on Linux, popular profiling tools like oprofile can be used to analyze most of Genode's components (except for device drivers). The second tool is Genode's tracing framework, which is explained here:
http://genode.org/documentation/release-notes/13.08#Light-weight_event_traci...
The latter is very flexible but not easy to use because one has to implement a so-called trace monitor for each kind of measurement. The tracing mechanism had been extremely helpful for analyzing performance issues such as the IRQ handling of the USB driver on the Rpi.
If you have more specific questions, please don't hesitate to ask.
Cheers Norman
Hi Waldo,
My branch 'https://github.com/m-stein/genode/tree/hw_perf_arm_v7' implements a simple in-kernel tool for low-level performance statistics on HW+ARMv7. It measures the CPU cycles that were executed by a thread directly (called "EC" in the output) and those that were payed by a threads scheduling context (called "PC" in the output). Be aware that these are different things as a thread might temporarily "borrow" its scheduling context to other threads. You can output the statistic by issuing 'Kernel::print_char(0);' in the userland as it is done in 'os/src/test/signal/main.cc' exemplarily or directly from the kernel. Be aware that you need to add 'perf_counter' to your 'SPECS' variable in your '<BUILD_DIR>/etc/specs.conf'. The tool can also be easily modified to measure only in-kernel time or the duration of specific syscalls. But be aware that the counter has to be read in a certain frequency to avoid loss of overflow information in 'Kernel::Perf_counter::value(bool & overflow)'. Furthermore, this tool shouldn't be used together with the tracing framework Norman mentioned as they may interfere on the performance counter.
Cheers, Martin
On 09.02.2015 19:49, Waldo Paz Rodriguez wrote:
hello genode hackers, I need to know which types of testing and tools are available for testing devices drivers, system call performance, scheduling and any modification made on the system.
best regards, waldo
Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main