Correct the Linux's behavior of lmbench-file-rd

This commit is contained in:
Shaowei Song
2024-08-08 03:58:13 +00:00
committed by Tate, Hongliang Tian
parent 9a299b68f0
commit 0e8c5e7f5f

View File

@ -13,15 +13,21 @@ BENCHMARK_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
# Kernel image # Kernel image
KERNEL_DIR="/root/dependency" KERNEL_DIR="/root/dependency"
LINUX_KERNEL="${KERNEL_DIR}/vmlinuz" LINUX_KERNEL="${KERNEL_DIR}/vmlinuz"
KERNEL_VERSION="5.15.0-105-generic"
MODULES_DIR="${BENCHMARK_DIR}/../build/initramfs/lib/modules/${KERNEL_VERSION}/kernel"
# Atomic wget script # Atomic wget script
WGET_SCRIPT="${BENCHMARK_DIR}/../../tools/atomic_wget.sh" WGET_SCRIPT="${BENCHMARK_DIR}/../../tools/atomic_wget.sh"
# Generate entrypoint script for Linux cases # Generate entrypoint script for Linux cases
# TODO: Disable optimize-related features in Linux's ext2 using 'mkfs.ext2 -O ^[feature]'
generate_entrypoint_script() { generate_entrypoint_script() {
local benchmark="$1" local benchmark="$1"
local init_script=$(cat <<EOF local init_script=$(cat <<EOF
#!/bin/sh #!/bin/sh
mount -t devtmpfs devtmpfs /dev mount -t devtmpfs devtmpfs /dev
modprobe virtio_blk
mkfs.ext2 -F /dev/vda
mount -t ext2 /dev/vda /ext2
echo "Running ${benchmark}" echo "Running ${benchmark}"
chmod +x /benchmark/${benchmark}/run.sh chmod +x /benchmark/${benchmark}/run.sh
@ -59,6 +65,8 @@ run_benchmark() {
--enable-kvm \ --enable-kvm \
-kernel ${LINUX_KERNEL} \ -kernel ${LINUX_KERNEL} \
-initrd ${BENCHMARK_DIR}/../build/initramfs.cpio.gz \ -initrd ${BENCHMARK_DIR}/../build/initramfs.cpio.gz \
-drive if=none,format=raw,id=x0,file=${BENCHMARK_DIR}/../build/ext2.img \
-device virtio-blk-pci,bus=pcie.0,addr=0x6,drive=x0,serial=vext2,disable-legacy=on,disable-modern=off,queue-size=64,num-queues=1,config-wce=off,request-merging=off,write-cache=off,backend_defaults=off,discard=off,event_idx=off,indirect_desc=off,ioeventfd=off,queue_reset=off \
-append 'console=ttyS0 rdinit=/benchmark/benchmark_entrypoint.sh' \ -append 'console=ttyS0 rdinit=/benchmark/benchmark_entrypoint.sh' \
-nographic \ -nographic \
2>&1 | tee ${linux_output}" 2>&1 | tee ${linux_output}"
@ -66,7 +74,12 @@ run_benchmark() {
if [ ! -f "${LINUX_KERNEL}" ]; then if [ ! -f "${LINUX_KERNEL}" ]; then
echo "Downloading the Linux kernel image..." echo "Downloading the Linux kernel image..."
mkdir -p "${KERNEL_DIR}" mkdir -p "${KERNEL_DIR}"
${WGET_SCRIPT} "${LINUX_KERNEL}" "https://raw.githubusercontent.com/asterinas/linux_kernel/9e66d28/vmlinuz-5.15.0-105-generic" ${WGET_SCRIPT} "${LINUX_KERNEL}" "https://raw.githubusercontent.com/asterinas/linux_kernel/9e66d28/vmlinuz-${KERNEL_VERSION}"
fi
if [ ! -f "${MODULES_DIR}" ]; then
echo "Downloading additional kernel modules..."
mkdir -p "${MODULES_DIR}/drivers/block"
${WGET_SCRIPT} "${MODULES_DIR}/drivers/block/virtio_blk.ko" "https://raw.githubusercontent.com/asterinas/linux_kernel/f938bde/modules/virtio_blk.ko"
fi fi
echo "Running benchmark ${benchmark} on Linux and Asterinas..." echo "Running benchmark ${benchmark} on Linux and Asterinas..."