Skip to content

Instantly share code, notes, and snippets.

I'm following TheLortex's notes on how to run my unikernel on esp32, in particular odroid-go. (Thanks to @julow and @clecat for the pointers and help.)

First attempt to install the cross-compiler for esp-32:

opam repo add git https://github.com/well-typed-lightbulbs/opam-cross-esp32.git
opam install mirage-esp32 ocaml-esp32.4.07.1

which is supposed to work for linux. On mac, I get the error

Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Configuration:
Key size: 32
Value size: 13
Number of bindings: 10000000
Log size: 500000
Seed: 0
Metrics: true
Frequency: 10
Replace in random order and time each operation

current

Two proposals for a layered store with two lower stores:

  • one lower (called lower_new) is used until it is full, at which point the other lower (called lower_old) is cleared and it becomes lower_new:

prop1

Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

The following benchmarks are from bootstrapping the layered store and calling a freeze every 50, 500 or 4000 commits. The x axis represents the completion time of requests successfully validated by the block validator, or the prevalidator, as they are read from the logs. The x axis does not represent the commits, so a freeze does not necessarily occur at the 50th mark on the axis. The logs as well as the scripts for generating the graphs are here.

Sometimes I'll use a local benchmark, provided in the layered store branch. The default setup for these benchmark is that every commit add 1000 nodes to the previous commit and a freeze is called every 50 commits. They can be run by executing dune exec -- ./test/irmin-pack/layered_bench.exe --nbatches=4 --depth=1000 2> outs for instance and then using the scripts here to generate the graphs.

Blocking freeze

The bootstr