---
# System prepended metadata

title: 'Profiling and Introspection, December 7, 2022'
tags: [' profiling', unikraft]

---

---
title: "Profiling and Introspection, December 7, 2022"
tags: unikraft, profiling
datetime: 2022-12-07T10:00:00+02:00
location: Online, Discord (https://bit.ly/UnikraftDiscord), the `#monkey-business` voice channel
teams:
- profiling
participants:
- Gabi
- Marco
- Marc
- Cezar
- AdinaV
- AlexP
- RăzvanD
---

## :dart: Agenda

- Status update
- Next steps

## :closed_book: Discussions

### GCOV

AP: I looked a bit more in how counters are allocated.
It's dynamically allocated on a per-file allocation.
They are called by `ctors` items from `libgcc`.

MR: This is part of `ukboot`.
There is a platform initialization and then the constructors are called.

MR: There are constructors that the application can registers.
These are the last things called before entering the function.

AP: The calls made before this will not be instrumented.

### VMI + QEMU / KVM

AV: I tried to make it work with VMI (on my bachelor project).

AV: There are some patches on QEMU / KVM to make it work.

AV: The guys from Bitdefender developed a KVM.

AV: I didn't have to make any changes to the application.
We could use `libvmi` with 

AV: The KVMI implementation has looked over the Xen one to provide the same capabilities.

AV: You have to provide the `System.map` files and some offsets.

AV: This guy managed to make one example work.

AV: With memory events and register and 

## :wrench: TODOs and Decisions

AP: Build Unikraft core with coverage instrumentation.

AP: Look into clang coverage mechanisms.

AV: Overview of which functions work and which don't for `libvmi`.
Which functions are we able to use with Unikraft and which we need to (re)implement for Unikraft?