Skip to content

Commit

Permalink
Update guide instructions for IronKV
Browse files Browse the repository at this point in the history
  • Loading branch information
jaylorch committed Aug 19, 2024
1 parent 31b750c commit 40eaced
Showing 1 changed file with 35 additions and 27 deletions.
62 changes: 35 additions & 27 deletions site/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,50 +110,58 @@ The output should resemble Figure 12.

To run this experiment, take the following steps:

* Build the IronFleet version of IronSHT.
* Build the IronFleet version of IronKV.
* Install `dotnet`.
* Install `scons` with `pip install scons`.
* Download the Dafny 3.4.0 release, including its executable, from
`https://github.com/dafny-lang/dafny/releases/download/v3.4.0/dafny-3.4.0-x64-win.zip`.
* Sync to commit `2fe4dcdc323b92e93f759cc3e373521366b7f691` of the Ironclad repository at `[email protected]:microsoft/Ironclad.git`.
* From the `ironfleet` directory in that repository, run `scons
--dafny-path=<path>` where `<path>` is the path to the directory
* Sync to commit `2fe4dcdc323b92e93f759cc3e373521366b7f691` of the
Ironclad repository at `https://github.com/microsoft/Ironclad.git`.
* From the `ironfleet` directory in that repository, run
`scons --dafny-path=<path>` where `<path>` is the path to the directory
containing the Dafny 3.4.0 executable.
* Build the Verus version of IronSHT.
* Download the Verus source code from commit `96957b633471e4d5a6bc267f9bf0e31555e888db`
of the repo at `[email protected]:secure-foundations/verus.git`.
* Build the Verus version of IronKV.
* Download the Verus source code from commit
`96957b633471e4d5a6bc267f9bf0e31555e888db`
of the repo at `https://github.com/verus-lang/verus`.
* Build the Verus source code as the repo describes, making sure to use
`--release` on the `vargo build`.
* Download the Verus version of IronSHT from commit
`ea501b56ef92290329ba434fb8b675a5f467de65` of the Verus systems code
repository at `git@github.com:verus-lang/verus-systems-code.git`.
* Make a small local update to that repository to make it operate on
* Download the Verus version of IronKV from commit
`ea501b56ef92290329ba434fb8b675a5f467de65` of the
repository at `https://github.com/verus-lang/verified-ironkv.git`.
* Make a small local update to that repository's code to make it operate on
Windows, as follows: In the file
`ironfleet-comparison/ironsht/csharp/IronSHTClient/Client.cs`, change
`ironsht/csharp/IronSHTClient/Client.cs`, change
all references to `../liblib.so` to `lib.dll`.
* From the `ironfleet-comparison` directory, run `scons
--verus-path=<path>` where `<path>` is the path to the root directory
for the Verus repository.
* Copy the resulting `lib.dll` from the `ironfleet-comparison` directory
to the directory containing this `README.md` (`sys/eval/ironsht`).
* From the top-level directory of that repository, run
`scons --verus-path=<path>` where `<path>` is the path to the root
directory for the Verus repository. This will create a `lib.dll`
file in the top-level directory of that repository.
* Copy that `lib.dll` file to the `ironkv` subdirectory of the repository
for this artifact. For instance, if this file you're reading now is
`<path>/site/guide.md`, copy it to `<path>/ironkv/lib.dll`.
* Prepare to run the experiment.
* Change directory to the directory containing this `README.md`
(`sys/eval/ironsht`).
* Generate certificates with `dotnet <path>/ironsht/bin/CreateIronServiceCerts.dll
outputdir=certs name=MySHT type=IronSHT addr1=127.0.0.1 port1=4001
addr2=127.0.0.1 port2=4002 addr3=127.0.0.1 port3=4003` where `<path>` is
the path to either the Dafny or Verus IronSHT code.
* Change directory to the `ironkv` subdirectory of the repository for
this artifact. For instance, if this file you're reading now is
`<path>/site/guide.md`, change directory to `<path>/ironkv/`.
* Generate certificates by running
`dotnet <path>/ironsht/bin/CreateIronServiceCerts.dll
outputdir=certs name=MySHT type=IronSHT addr1=127.0.0.1 port1=4001
addr2=127.0.0.1 port2=4002 addr3=127.0.0.1 port3=4003`
where `<path>` is the path to either the Dafny or Verus IronKV code.
* With `pip`, install `numpy` and `scipy`.
* Update the hardcoded paths `VERUS_PATH` and `DAFNY_PATH` in the script
`compare.py` to match where those directories are on your machine.
* Prepare your machine for the experiment by telling Windows to never
sleep, by telling it to use the "best performance" power mode (to
disable SpeedStep), and by plugging it into a real charging outlet (not
just a USB-C connector to a monitor).
* Run the experiment by running `python compare.py` from this directory. This will
overwrite the file `raw-data.txt` with its output.
* Generate the graph by running `python gengraph.py > ..\..\paper\ironfleet-port-plot.tex`.
This uses the data stored in `raw-data.txt`.
* Run the experiment by running `python compare.py` from the `ironkv`
subdirectory of the repository for this artifact. This will overwrite the
file `raw-data.txt` with its output.
* Generate the graph by running `python gengraph.py > ironfleet-port-plot.tex`.
This uses the data stored in `raw-data.txt` to generate a graph, in LaTeX
format, in the file `ironfleet-port-plot.tex`.


## Set 3 - Node Replication
Expand Down

0 comments on commit 40eaced

Please sign in to comment.