pm_qos_req モジュール

https://github.com/autch/pm_qos_req

id:autch:20121016#1350407282 で書いた、Shift とかを押していないと処理が進まない病(以下「低速病」)を回避するカーネルモジュール。

結構ググられてるっぽいので追記。ってか GitHub に載せた README.md を訳しただけだけど。

準備

https://github.com/autch/pm_qos_req/downloads に行くと、 Download as zip とか Download as tar.gz というボタンがあるので好きな方を押してダウンロードする。以下は tar.gz として落とした前提で書く。

Linux カーネルヘッダとビルドツール一式がインストールされていることを確認する。DebianUbuntu ならとにかくインストールしてしまえばいい。

# apt-get install build-essential linux-headers-`uname -r`

ビルド

最初に落とした tarball をどこかに展開してそのディレクトリに入り、make する。

# tar xzf autch-pm_qos_req-899b7f4.tar.gz
# cd autch-pm_qos_req-899b7f4/
# make

できた pm_qos_req.ko モジュールをカーネルモジュールのツリーにコピーする。

# mkdir -p /lib/modules/`uname -r`/extra/
# cp pm_qos_req.ko /lib/modules/`uname -r`/extra/
# depmod -a

この手順だと今現在使っているカーネルにしかモジュールをコピーしていないので、カーネルがバージョンアップするたびに make してコピーをしなければならない。これを省力化する DKMS にも一応対応しているので必要なら以下のようにする。

# apt-get install dkms
# cd さっきtarballを展開したディレクトリ
# mkdir /usr/src/pm_qos_req-1.0.0/
# cp * /usr/src/pm_qos_req-1.0.0/
# dkms add -m pm_qos_req -v 1.0.0
# dkms build -m pm_qos_req -v 1.0.0
# dkms install -m pm_qos_req -v 1.0.0

動作確認

上記 depmod まで済んでいれば、

# modprobe pm_qos_req cpu_dma_latency=1

このコマンドを実行すると低速病が治るはず。

インストール

起動時に上記モジュールが読み込まれるようにする。さらに initrd でも読みこむようにする。

# echo "pm_qos_req cpu_dma_latency=1" >> /etc/modules
# echo "pm_qos_req cpu_dma_latency=1" >> /etc/initramfs-tools/modules
# update-initramfs -u -k `uname -r`