Skip to content

TELOS-syslab/Aeolia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Artifact Evaluation Submission for Aeolia [SOSP '25]

This repository contains the artifact for reproducing our SOSP'25 paper "Aeolia: Fast and Secure Userspace Interrupt-Based Storage Stack".

Overview

The experimental results of Aeolia mainly include two parts: AeoDriver related experiment and AeoFS related experiment.

Structure:

|---- Aeolia-src                    (The source code of Aeolia)
    |---- AeoDriver
    |---- AeoFS
    |---- AeoTrusted
|---- benchmarks                    (Source code of workload applications)
|---- kernel
    |---- aeolia-kernel-orig-6.12   (The original linux 6.12 kernel)
    |---- aeolia-kernel-uintr       (Modified linux 6.12 kernel supporting UINTR)
|---- scripts                       (Main evaluation scripts)
    |---- scripts-driver            (Script for driver experiment)
    |---- scripts-fs                (Script for fs experiment)
|---- dep.sh                        (Scripts to install dependency)

Environment:

Aeolia requires an Intel CPU with the UINTR feature (Intel Xeon 4th Gen or later). The Linux kernel needs to be customized to support UINTR. Please refer to the eval-motivation README for instructions on replacing the kernel. Additionally, since some experiments require temporary modifications to the kernel code, it is highly recommended to use a dedicated server. The server used for the experiments in the paper is configured with 1000 GB of memory and an Optane SSD 5800X.

Install the dependencies:

$ ./dep.sh 

Enviroment prepration

  1. Clone this repo first :
git clone [email protected]:TELOS-syslab/Aeolia.git 
export LOCAL_AE_DIR=$(pwd)
echo "export LOCAL_AE_DIR=$(pwd)" >> ~/.bashrc
# change bashrc to other profiles you use.

Driver evaluation

1. Evaluation

1.1 Revise environment variables

Note that the NVMe-related variables in Aeolia/AeoDriver/scripts/env.sh should be replaced by your setup.

1.2 Get the raw data

1.2.1 Origin kernel

revert to the origin 6.12 kernel

bash ./scripts/scripts-driver/build_1.sh && sudo reboot

# after reboot, then

bash ./scripts/scripts-driver/eval-baseline.sh    # this evaluation will take around 1.5 hours

1.2.2 Aeolia

Change kernel to Aeolia Kernel

# this shell will call a menuconfig, please enable the userinterrupt (UINTR) in the main menu, and SCHED_CLASS_EXT (location: General setup -> Extensible Scheduling Class)
bash ./scripts/scripts-driver/build_2.sh && sudo reboot

# after reboot, then

bash ./scripts/scripts-driver/eval-aeolia.sh     # this evaluation will take around 45 minutes

2. Draw figures

bash ./scripts/scripts-driver/fig.sh

Generated figures could be found in directory Aeolia-src/AeoDriver/fig/

Aeolia FS Artifact Evaluation

0. Build kernel

cd ${LOCAL_AE_DIR}/kernel/aeolia-kernel-uintr
cp /boot/config-$(uname -r) ./.config
sudo make olddefconfig

# please enable UINTR on the main menu, it's called User Interrupts (UINTR)
sudo make menuconfig
sudo make -j$(nproc)
sudo make modules_install -j$(nproc)
sudo make install
# enter the scripts folder
cd ${LOCAL_AE_DIR}/scripts/scripts-fs

1. Evaluate single thread performance

# build the aeolia system under kernel w/ uintr
sudo -E bash figure14.sh

2. Evaluate multi-thread performance

sudo -E bash figure15.sh

3. Evaluate metadata scalability (fxmark)

sudo -E bash figure16.sh

4. Evaluate filebench

sudo -E bash figure18.sh

5. Evaluate Real-worlds (leveldb)

sudo -E bash table7.sh

6. Data Cleaning & Figure

sudo python3 clean_data.py

# Table 7 in table7/leveldb_performance.csv
sudo python3 plot_fs_single_thread.py # figure 14
sudo python3 plot_fs_multi_threads.py # figure 15
sudo python3 plot_fs_fxmark.py # figure 16
sudo python3 plot_fs_filebench.py # figure 18

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published