Skip to content

Zhiwei-Dai/upstream-linux

 
 

Repository files navigation

i10 I/O scheduler for the upstream Linux kernel.

Prerequisites

Download the recent 'linux-block' source tree that includes batching-dispatch and nvme-tcp optimizations[1][2][3].

git clone -b for-5.9/drivers https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git

Setup instructions (with root)

  1. Download our i10 I/O scheduler kernel module and copy to the kernel source tree:
git clone https://github.com/i10-kernel/upstream-linux.git
cd upstream-linux
cp i10-iosched.patch /usr/src/linux-block/
cd /usr/src/linux-block/
  1. Apply the patch to the 'linux-block' kernel source tree.
patch -p1 < i10-iosched.patch
  1. Make sure the i10 module is included in the kernel configuration:
make menuconfig

IO Schedulers ---> <M> i10 I/O scheduler

Please refer to the i10-implementation repository for the remaining parts.

Running i10

We assume that a target device (e.g., nvme0n1) is already initialized via NVMe-over-TCP.

  1. Load i10 I/O scherduler:
modprobe i10-iosched
  1. Use i10 I/O scheduler for the target device:
echo i10 > /sys/block/nvme0c0n1/queue/scheduler
  1. The default batch size (in #requests, bytes, or timeout) can be changed:
echo 16 > /sys/block/nvme0c0n1/queue/scheduler/iosched/batch_nr
echo 65536 > /sys/block/nvme0c0n1/queue/scheduler/iosched/batch_bytes
echo 50 > /sys/block/nvme0c0n1/queue/scheduler/iosched/batch_timeout

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 87.0%
  • Makefile 13.0%