WSLでio_uringを使う 2021/04
はじめに
WSLでデフォルトで使われるカーネルはio_uring
が無効になっています。
すこし調べると本家からフォークしたこちらのリポジトリでbzImageが配布されていてio_uring
が使えるのですが、少しヘビーな使う方をするとうまく動きません。https://github.com/hatoo/io_uring_test のプログラムがうまく動きません。
今回は普通にhttps://github.com/microsoft/WSL2-Linux-Kernel のコンフィグをいじって自分でカーネルをビルドしたらうまく行ったのでそのやり方を共有します。
手順
作業はWSL上で行います
1. microsoft/WSL2-Linux-Kernel
のリリースページからソースコードをダウンロードする。
クローンしたコードだとうまくいきませんでした
$ wget https://github.com/microsoft/WSL2-Linux-Kernel/archive/refs/tags/linux-msft-wsl-5.10.16.3.tar.gz
2. 解凍する
$ tar -zxvf https://github.com/microsoft/WSL2-Linux-Kernel/archive/refs/tags/linux-msft-wsl-5.10.16.3.tar.gz
$ cd linux-msft-wsl-5.10.16.3
3. コンフィグを編集してio_uring
を有効にする
Microsoft/config-wsl
を編集してCONFIG_IO_URING
のところをCONFIG_IO_URING=y
にする。
4. Make
make -j16 KCONFIG_CONFIG=Microsoft/config-wsl
5. bzImageをWindowsの適当なところに置く
例えば
cp arch/x86_64/boot/bzImage /mnt/c/Users/$(ユーザー名)/Linux/bzImage
6. .wslconfigを編集する
C:\Users\$(ユーザー名)\.wslconfig
を編集して
こんな感じにする
[wsl2]
kernel = C:\\Users\\$(ユーザー名)\\Linux\\bzImage
7 WSLの再起動
Windowsのシェルで
> wsl --shutdown
ulimit -l
io_uring
を使っているとmax locked memory
の値が足りなくてエラーになることがあります。
WSLだと普通のやり方ではulimitの値が変えられないようなのでその場合はhttps://github.com/microsoft/WSL/issues/1576#issuecomment-643804974 を参考にすると良いです。
Author And Source
この問題について(WSLでio_uringを使う 2021/04), 我々は、より多くの情報をここで見つけました https://qiita.com/hatoo@github/items/167920724dadc9d3cb3e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .