CPUを使った開発機ではカーネルやGCCといった大規模なソフトウェアをmakeの-jオプションを使って並列度を上げてビルドしようとするとCPUの温度が危険なほど上昇してしまいます。この問題が起きるのは「大規模なソフトウェアを並列度を上げてビルドする」というかなり限定された場合のみなので,並列度を下げることで問題を回避することは可能ですが,そうするとビルドにかかる時間がずいぶん長くなってしまって不便です。ことを思い出しました。i7の動作周波数は2.93GHzだったように,最近のCPUの動作周波数は2GHzを大きく超えています。CPUの動作周波数は高ければ高いほど,1秒あたりの処理回数が増えて性能は向上しますが,その分,発熱も大きくなると共に消費電力も大きくなり,ノートPCのような環境では使いづらくなってしまいます。そのような問題に対処するために,最近のCPUでは,従来は固定だった動作周波数を可変にして,必要に応じて動作中でも動作周波数を変更できるようになっています。この機能を使えば,CPUの処理がそれほど必要ない文字入力等の対話的な作業の際には周波数を下げて消費電力や発熱を抑制し,コンパイルや動画再生といったCPUパワーが必要な作業の際には周波数を上げて処理能力を高め,ユーザにストレスを感じさせずに電力消費や発熱を抑制することが可能です。CPUの側からすると,ユーザの入力を待っている間でもプログラム中のウエイトループを全速力で回っているだけなので,作業負荷の高低を監視するにはOS側の協力が必要となります。ドライバcpufreqCPUの動作周波数を変更するにはカーネルレベルの権限が必要となるので,そのための機能はカーネル内部のcpufreqというドライバが担っています。動作周波数の変更方法はメーカやCPUによって異なるため,cpufreqドライバはいくつかの種類が用意されています。現在,手もとで使っているlinux-2.6.38.4カーネルでは以下のようなcpufreqドライバが用意されていました。i7を含む,新しい世代のIntel製CPU用のドライバ。4世代のIntel製CPU用ドライバ。細かい制御はできない。Pentium-M世代のIntel製CPU用ドライバ。AMD製CPU用のドライバ。ドライバgovernorcpufreqドライバがそれぞれのCPUに応じた方法で動作周波数を指定された値に設定する機能を担当しているのに対し,状況に応じて動作周波数をどのような値にするかを管理しているのがgovernorと呼ばれるドライバです。状況に応じて動作周波数をどう選択するかにはさまざまな方針が考えられるため,governorドライバも複数の種類が用意されており,linux-2.6.38.4ではperformance,powersave,ondemand,conservative,userspaceという5種類のgovernorが用意されています。governorはそのうちの最小値を,それぞれ選ぶようになっています。governorは,ごく短い間隔(デフォルトでは10ms)ごとにCPUの使用率を調べ,その期間中のCPU使用率があらかじめ設定されている閾値(デフォルトでは95%)を超えていれば,指定された範囲内で動作周波数を上昇させ,閾値以下ならば動作周波数を下降させるように働きます。governorが条件を満せば即座に周波数を変更するのに対し,周波数の変化が多少ゆっくりめになるように設定されています。governorが適しているそうです。governorは他のgovernorとは異なり,自分で周波数を設定することはせず,ユーザ領域のソフトウェアや手動設定で指定された周波数をcpufreqドライバに反映させる役割を持ちます。governorに切り替えて必要なレベルまで動作周波数を高める,といった使い方が可能です。システムの動作状況を監視して,このような切り替え処理をするのがcpufreqdの役割です。動作周波数管理デーモンcpufreqdcpufreqやgovernorがカーネルレベルで動作するのに対し,cpufreqdはユーザ領域で動作して,あらかじめ指定された条件に応じてgovernorを切り替え,それを通じてcpufreqでCPUの動作周波数を調整します。cpufreqdの設定ファイルは/etc/cpufreqd.confです。このファイルには,システムがどのような状況になればどのgovernorを適用するのかというルールを複数記述でき,cpufreqdはシステムの動作状況を監視しながら,それらのルールの中からもっとも状況に適合するものを選んで,そのルールに従ってgovernorを切り替えます。cpufreqdは,AC電源使用時とバッテリー使用時でCPUの動作速度を自動的に切り替えて,バッテリー使用時の動作時間を少しでも延ばそう,というニーズから生まれてきたソフトウェアなので,電源回りの状況(電源はACかバッテリーか,バッテリーの残量はどれくらいか,等)をACPIやAPMを使って監視する機能を豊富にもっています。加えて最近では,CPUの負荷状態や特定のソフトウェアの動作の有無,lm-sensorsを経由した温度情報なども監視することができるようになっており,一定の温度を上まわれば動作周波数を落して発熱を抑える,といった設定も可能です。そこで今回は,cpufreqdにCPUの温度を監視させ,高温時には動作周波数を抑えることにしました。Linuxとりまとめ役。人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。