Skip to content

Latest commit

 

History

History

tab-01_porting-effort

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Porting Effort

Estimated prep. time Estimated runtime
0h 2m 0h 25m (manual)
Libs/Apps Patch size Shared variables
lwip +542/-275 23
uksched + ukschedcoop +48/-8 5
ramfs + vfscore +148/-37 12
uktime +10/-9 0
redis +279/-90 16
nginx +470/-85 36
sqlite +199/-145 24
iperf +15/-14 4

Overview

Porting effort: size of the patch (including automatic gate replacements), number of shared variables.

Measurement workflow

These measurements are manual, but rather simple. For each repository or subsystem, perform a git diff with the last Unikraft commit, and count the meaningful +/- lines. For the shared variables, grep for whitelist and count occurences.

Note that some libraries (mm, lwip, vfscore) include patches that are not part of FlexOS but not yet merged into the Unikraft master at the time when FlexOS was forked from Unikraft. We do not want to count these in the diff.

Here is a list of external, non-FlexOS patches applied:

  • lwip: move socket.c to the glue code [link]
  • vfscore: CPIO support [link]
  • mm: page table support [link]

Note that the iperf app was developed for this paper; you can use the unikraft-baseline branch as baseline for both the application and the library.

A similar situation affects sqlite; you can use this unmodified application as baseline.

In order to simply the operation, we provide a simple docker container that clones all relevant repositories into /root/flexos. You can build it with make prepare and bash it with make run. The current directory is mounted in /out in order to ease the sharing of results with the host.