- May 16, 2014
-
-
Takuya ASADA authored
Add qemu command path argument to test different versions of qemu. Signed-off-by:
Takuya ASADA <syuu@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Jaspal Singh Dhillon authored
Remove the unnecessary default vnc :1 argument during make. It also does not allow make to proceed if another vm is already using :1 Reviewed-by:
Nadav Har'El <nyh@cloudius-systems.com> Signed-off-by:
Jaspal Singh Dhillon <jaspal.iiith@gmail.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 15, 2014
-
-
Tomasz Grabiec authored
The version built on muninn does not have the leading 'tracepoint_base::log_backtrace(trace_record*, unsigned char*&)' frame. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
They are important in some cases so we should not hide them. Lambda functions are reported like that. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 14, 2014
-
-
Tomasz Grabiec authored
This introduces a simple timer-based sampling profiler which is reusing our tracing infrastructure to collect samples. To enable sampler from run.py run it like this: $ scripts/run.py ... --sampler [frequency] Where 'frequency' is an optional parameter for overriding sampling frequency. The default is 1000 (ticks per second). The bigger the frequency the bigger sampling overhead is. Too low values will hurt profile accuracy. Ad-hoc sampler enabling is planned. The code already takes that into account. To see the profile you need to extract the trace: $ trace extract And then show it like this: $ trace prof All 'prof' options can be applied, for example you can group by CPU: $ trace prof -g cpu Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
First couple of frames always come from trace logging functions. I think we should not show them because they do not add any information. There was already a list of function names which should be filtered out. This is not appropriate in this case because tracing goes through a function named 'log' which is a pretty generic name and could as well be an application symbol, so we cannot just filter out all functions named 'log. This patch adds support for knocking off a leading sequence of frames form the backtrace which is more accurate and seems good enough. Reviewed-by:
Nadav Har'El <nyh@cloudius-systems.com> Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 12, 2014
-
-
Tomasz Grabiec authored
This change aims to reduce the likelihood of running into issue merged stream may not be. If samples cross CPUs and the CPU of the second sample has its earliest sample after the first sample, we ignore that pair as the second sample has a high chance of belonging to other pair. This change does not solve the problem completly because there may be a situation when sample which was recorded on another CPU was discarded and the next sample will be again on the first CPU. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
This command shows a duration profile like 'prof-wait' or 'prof-lock' but is more generic, it can work with any timed traces. 'trace prof-wait' is equivalent of 'trace prof-timed -t sched_wait' 'trace prof-lock' is equivalent of 'trace prof-timed -t mutex_lock_wait' Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
The algorithm was duplicated between 'prof-wait','prof-lock' and 'list timed','summary --timed'. This change unifies all paths. As a side effect, mutex_lock_wait/mutex_lock_wake pair is now recognized as timed sample and appears in 'summary --timed' and 'trace list-timed' This refactoring will also make it easy to declare timed samples which are correlated by data rather than calling thread. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
Broken by commit 1e53a52f. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Dmitry Fleytman authored
Due to a global variable in image type definition code small instance directive becomes sticky and applies automatically to all further images of the batch. Fixed by making the variable local. Signed-off-by:
Dmitry Fleytman <dmitry@daynix.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
Traceback (most recent call last): File "/home/tgrabiec/src/osv/scripts/loader.py", line 1165, in invoke show_leak() File "/home/tgrabiec/src/osv/scripts/loader.py", line 1104, in show_leak si = syminfo(f) File "/home/tgrabiec/src/osv/scripts/loader.py", line 117, in syminfo return symbol_formatter(syminfo_resolver(addr)) TypeError: object() takes no parameters Error occurred in Python command: object() takes no parameters Reported-by:
Gleb Natapov <gleb@cloudius-systems.com> Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 09, 2014
-
-
Tomasz Grabiec authored
That formatter is used for ad-hoc printing of samples, eg. in error messages. This fixes the following error message: Traceback (most recent call last): File "scripts/trace.py", line 576, in <module> args.func(args) File "scripts/trace.py", line 244, in prof_lock show_profile(args, get_profile) File "scripts/trace.py", line 208, in show_profile max_levels=args.max_levels) File "/home/tgrabiec/src/osv/scripts/osv/prof.py", line 170, in print_profile for sample in samples: File "/home/tgrabiec/src/osv/scripts/osv/prof.py", line 108, in get_duration_profile raise Exception('Double entry:\n%s\n%s\n' % (str(old), str(trace))) File "/home/tgrabiec/src/osv/scripts/osv/trace.py", line 125, in __str__ return self.format() File "/home/tgrabiec/src/osv/scripts/osv/trace.py", line 122, in format bt_formatter(self.backtrace)) File "/home/tgrabiec/src/osv/scripts/osv/trace.py", line 32, in __call__ frames = list(debug.resolve_all(self.resolver, (x - 1 for x in backtrace if x))) File "/home/tgrabiec/src/osv/scripts/osv/debug.py", line 107, in resolve_all return itertools.chain.from_iterable(map(resolver, raw_addresses)) TypeError: __init__() takes exactly 1 argument (2 given) When this should actually be printed: Traceback (most recent call last): File "scripts/trace.py", line 576, in <module> args.func(args) File "scripts/trace.py", line 244, in prof_lock show_profile(args, get_profile) File "scripts/trace.py", line 208, in show_profile max_levels=args.max_levels) File "/data/tgrabiec/osv/scripts/osv/prof.py", line 170, in print_profile for sample in samples: File "/data/tgrabiec/osv/scripts/osv/prof.py", line 108, in get_duration_profile raise Exception('Double entry:\n%s\n%s\n' % (str(old), str(trace))) Exception: Double entry: 0xffffc00017668010 3 1399542568.505835772 mutex_lock_wait (...) 0xffffc00017668010 1 1399542574.668642044 mutex_lock_wait (...) Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 07, 2014
-
-
Tomasz Grabiec authored
The script did not parse the response properly in case the symbol is unknown. That version of addr2line responds in two lines: ?? ??:0 but the script was assuming one line ?? ??:0, as returned by addr2line v2.24 Reported-by:
Asias He <asias@cloudius-systems.com> Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
The command shows a profile with amount of time threads were blocked on a mutex. This can be used to estimate lock contention. To use the profile the 'mutex_lock_wa*' tracepoints need to be enabled with backtrace. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 06, 2014
-
-
Tomasz Grabiec authored
It's just cluttering the backtrace. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
Fixes #255. The default OSv build has plenty of inlined functions. The tracing tool is using 'addr2line -Cfp' to resolve symbols. That mode of operation of addr2line yields one line per symbol and that line will only show the inlined function, even though the information about "logical" callers is also available. Example: $ addr2line -Cfp -e build/release/loader.elf 0x32963d lock_guard at (...) There is the '-i' switch we could use to also see code locations into which this function was inlined: $ addr2line -Cfpi -e build/release/loader.elf 0x32963d lock_guard at (...) (inlined by) lock_guard_for_with_lock at (...) (inlined by) mmu::vm_fault(unsigned long, exception_frame*) at (...) In this case, 'mmu::vm_fault' is much more interesting than lock_guard and thus we would like to show it in the backtrace. This change allows symbol resolvers to return multiple source addresses per raw address and changes the default implementation to return inlined-by functions by default. The new behavior can be suppressed with --no-inlined-by. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 05, 2014
-
-
Takuya ASADA authored
Signed-off-by:
Takuya ASADA <syuu@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Takuya ASADA authored
Signed-off-by:
Takuya ASADA <syuu@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Takuya ASADA authored
Signed-off-by:
Takuya ASADA <syuu@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Takuya ASADA authored
Reviewed-by:
Tomasz Grabiec <tgrabiec@gmail.com> Signed-off-by:
Takuya ASADA <syuu@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
The current tracepoint coverage does not handle all situations well. In particular: * it does not cover link layer devices other than virtio-net. This change fixes that by tracing in more abstract layers. * it records incoming packets at enqueue time, whereas sometimes it's better to trace at handling time. This can be very useful when correlating TCP state changes with incoming packets. New tracepoint was introduced for that: net_packet_handling. * it does not record protocol of the buffer. For non-ethernet protocols we should set appropriate protocol type when reconstructing ethernet frame when dumping to PCAP. We now have the following tracepoints: * net_packet_in - for incoming packets, enqueued or handled directly. * net_packet_out - for outgoing packets hitting link layer (not loopback). * net_packet_handling - for packets which have been queued and are now being handled. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Takuya ASADA authored
This patch enables to run OSv on VMware using run.py. Both serial console and VGA are supported. Signed-off-by:
Takuya ASADA <syuu@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- May 04, 2014
-
-
Tomasz Grabiec authored
Currently tracepoint's signature string is encoded into u64 which gives 8 character limit to the signature. When signature does not fit into that limit, only the first 8 characters are preserved. This patch fixes the problem by storing the signature as a C string of arbitrary length. Fixes #288. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Avi Kivity <avi@cloudius-systems.com>
-
- Apr 29, 2014
-
-
Tomasz Grabiec authored
The test verifies basic tracing functionallity: * that samples are collected by OSv * extraction via `trace extract` succeeds * `trace summary` shows expected tracepoint names * listing via `trace list` shows tracepoints with arguments * network packet parsing works This test is run as part of standard 'make check'. Note: this single test can be executed as easily as: $ scripts/test.py --test tracing_smoke_test Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
Since we adveritse use of a system package in README, we should also recommend the same here. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- Apr 28, 2014
-
-
Tomasz Grabiec authored
tcpdump port number conversions vary from system to system. Turn of the conversions to have consistent output which is also simpler to assert for in tests. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
On python 2.7.5 python complains about struct() not accepting unicode argument. Fix by adding explicit conversion. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- Apr 25, 2014
-
-
Dmitry Fleytman authored
There are 2 types of HVM AMIs on Amazon: 1. Windows based that support all instances types 2. Linux based that support instances larger than medium only Linux based AMIs suit OSv better because their default seciurity policy exactly fits OSv model (SSH access) and doesn't require reconfiguration. Windows based AMIs require default security policy reconfiguration in order to allow SSH access but from other hand allow running OSv on free-tier eligible micro instances which is good for enthusiasts and initial evaluations. In order to support both options this patch extends release scripts with ability to choose between Windows and Linux based templates during AMIs creation. Signed-off-by:
Dmitry Fleytman <dmitry@daynix.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Pekka Enberg authored
This reverts commit 532abb89 which makes Mr. Jenkins unhappy. Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
The test verifies that: * samples are collected by OSv * extraction via `trace extract` succeeds * `trace summary` shows expected tracepoint names * listing via `trace list` shows expected tracepoints * network packet parsing works This test is run as part of standard 'make check'. Note: this single test can be executed as easily as: $ scripts/test.py --test tracing_smoke_test Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
The command runs GDB which is very chatty. This will spoil our clean output of 'make check' once the tracing test is added. Let's hide GDB output unless it fails or the tracefile is not created. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
The --tcpdump switch enables in-line decoding of net_packet* samples so that packet content is displayed in human-readable form next to other samples. This allows to corelate packets with other samples easily. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
The 'scripts/trace.py pcap-dump' command will process all packet capturing samples and output a pcap stream. This is the format used by tcpdump. It can be used together with tcpdump to display packets in human-readable form like this: scripts/trace.py pcap-dump | tcpdump -r - | less Because pcap stream is often used together with tcpdump, I also introduce a shorthand for the above: scripts/trace.py tcpdump Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
Tracepoint argument which extends 'blob_tag' will be interpreted as a range of byte-sized values. Storage required to serialize such object is proportional to its size. I need it to implement storage-fiendly packet capturing using tracing layer. It could be also used to capture variable length strings. Current limit (50 chars) is too short for some paths passed to vfs calls. With variable-length encoding, we could set a more generous limit. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- Apr 23, 2014
-
-
Pekka Enberg authored
Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
Tomasz Grabiec authored
Python3 no longer supports __cmp__, we need to define __lt__ to make the objects comparable. This fixes `trace extract` on GDB linked with python3. Signed-off-by:
Tomasz Grabiec <tgrabiec@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-
- Apr 22, 2014
-
-
Gleb Natapov authored
mmu::page_table_root symbol is no longer global. It will take more than that to make it work on ARM. Signed-off-by:
Gleb Natapov <gleb@cloudius-systems.com> Signed-off-by:
Pekka Enberg <penberg@cloudius-systems.com>
-