blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

List

画面を(開け|閉じ)たら、CPUの速度を変える

いきさつ

スリープはしたくないが、かばんの中で勝手に暑くならないように、 画面を閉じたらCPUの速度を落とす、ということをする。 環境はThinkPad X220でUbuntu16.04。

setup

ACアダプタをつないでいるときは速い状態(performance)で、 それ以外の時に画面が開いていたら(performance)で、 閉じていたら(powersave)にする。

installing cpufrequtils

$ sudo apt install cpufrequtils

/etc/acpi/events/lid_ac

スクリプトを起動するためにトリガーを設定する。

event=(ac_adapter|button/lid.*)
action=/etc/acpi/lid_ac.sh

/etc/acpi/lid_ac.sh

下記のシェルスクリプトを用意します。

#! /bin/sh
islidopen(){ grep -q "open" /proc/acpi/button/lid/LID/state; }
isac(){ test $(cat /sys/class/power_supply/AC/online) -eq 1; }
performance() { cpupower frequency-set -g $0; }
powersave() { cpupower frequency-set -g $0; }
isac && performance || ( islidopen && performance || powersave )

実行権限をつけます。

$ chmod a+x /etc/acpi/lid_ac.sh

restart acpid

下記のコマンドを打つことで、上記の設定が反映される。

$ sudo service acpid restart

acpi_listen

下記のコマンドでさまざまなacpiのイベントをモニタリングすることができる。

$ acpi_listen

references