Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

posted at

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 を参考にすると良いです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?