[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH 8/8] doc/guides: Add section about tracepoints



Hi,

you are right regarding definitions I will add that.

As for encoding-decoding, we usually do not write about implementation
details in the documents, but rather keep it in the code comments.

But I will write a sentence or two about the trace buffer, and the gdb
and parsing.

Only the original idea came from OSv. And honestly, the idea was not new
in OSv at all. I used literally zero code from it. And the design is
very different, it will not help you at all to get references in OSv. So
I don't think it makes sense to mention OSv at all.

Probably the only legacy from OSv is file structure: trace.py,
unikraft/trace.py. The thing you did not like that much, and which is
already reworked.

Costin Lupu <costin.lup@xxxxxxxxx> writes:

> Hi Yuri,
>
> I didn't know where to say this so I'm going to leave it here,
> considering it's a documentation issue.
>
> We have tracepoint definitions and tracepoint values, this is a very
> important information which I didn't find anywhere. The sections
> contains them both. How? Well that's not obvious either. Please add some
> explanations about the main idea about tracepoints: how they are stored
> and/or serialized, how that information is later read and so on.
>
> AFAIK this is was inspired by OSv, right? There is no mention about that
> and I think it would be nice to do that (1) for paying credit and (2)
> for having the original implementation as a reference if things get messy.
>
> Thanks,
> Costin
>
> On 5/10/19 9:29 PM, Yuri Volchkov wrote:
>> Signed-off-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx>
>> ---
>>  doc/guides/developers-debugging.rst | 48 +++++++++++++++++++++++++++++
>>  1 file changed, 48 insertions(+)
>> 
>> diff --git a/doc/guides/developers-debugging.rst 
>> b/doc/guides/developers-debugging.rst
>> index 0e8799c4..cc7bc0ea 100644
>> --- a/doc/guides/developers-debugging.rst
>> +++ b/doc/guides/developers-debugging.rst
>> @@ -72,3 +72,51 @@ You can then connect gdb within a separate console and 
>> you're ready to debug: ::
>>  You should be also able to use the debugging file
>>  (``build/helloworld_linuxu-x86_64.dbg``) for gdb instead passing the kernel
>>  image.
>> +
>> +============================
>> +Trace points
>> +============================
>> +
>> +Tracepoints are provided by libukdebug. To make Unikraft collect
>> +tracing data enable the option `CONFIG_LIBUKDEBUG_TRACEPOINTS` in your
>> +config (via ``make menuconfig``).
>> +
>> +Because tracepoints can noticeably affect performance, selective
>> +enabling is implemented. Option `CONFIG_LIBUKDEBUG_TRACEPOINTS` just
>> +enables the functionality, but all the tracepoints are compiled into
>> +nothing by default (have no effect). If you would like one library to
>> +collect tracing data, add to it's Makefile.uk ::
>> +
>> +   LIBAPPNAME_CFLAGS += -DUK_DEBUG_TRACE
>> +
>> +If you need just the information about tracepoints in one file, just
>> +define `UK_DEBUG_TRACE` **before** ``#include <uk/trace.h>``.
>> +
>> +If you wish to enable **ALL** existing tracepoints, enable
>> +`CONFIG_LIBUKDEBUG_ALL_TRACEPOINTS` in menuconfig.
>> +
>> +To read the collected data you have 2 options:
>> +
>> +1. Inside gdb
>> +
>> +2. Using trace.py
>> +
>> +For the first option, attach gdb to your running instance, and load
>> +Unikraft gdb extension: ::
>> +
>> +  source support/scripts/uk-gdb.py
>> +
>> +Now you can print tracing log by issuing command ``uk
>> +trace``. Alternatively, you can save all trace data into a binary file
>> +with ``uk trace save <filename>``. This tracefile can be processed
>> +later offline with trace.py script: ::
>> +
>> +  support/scripts/trace.py list <filename>
>> +
>> +Which brings us to the second option. Trace.py can run gdb and fetch
>> +the tracefile for you. Just run: ::
>> +
>> +  support/scripts/trace.py fetch  <your_unikraft_image>.dbg
>> +
>> +.. note:: The *.dbg image is required, as it have offline data needed
>> +          for parsing the trace buffer.
>> 

-- 
Yuri Volchkov
Software Specialist

NEC Europe Ltd
Kurfürsten-Anlage 36
D-69115 Heidelberg

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.