日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
CPUFREQ(4) FreeBSD カーネルインタフェースマニュアル CPUFREQ(4) 名称 cpufreq -- CPU 周波数制御フレームワーク 書式 device cpufreq #include <sys/cpu.h> int cpufreq_levels(device_t dev, struct cf_level *levels, int *count); int cpufreq_set(device_t dev, const struct cf_level *level, int priority); int cpufreq_get(device_t dev, struct cf_level *level); int cpufreq_drv_settings(device_t dev, struct cf_setting *sets, int *count); int cpufreq_drv_type(device_t dev, int *type); int cpufreq_drv_set(device_t dev, const struct cf_setting *set); int cpufreq_drv_get(device_t dev, struct cf_setting *set); 解説 cpufreq ドライバは、CPU 周波数制御ドライバに統一されたカーネルとユーザイ ンタフェースを提供します。それは、異なった設定をすべての考えられるレベル の単一のインタフェースとして提供する複数のドライバを結合しています。 sysctl(8) 通して、または、AC ライン状態が rc.conf(5) を通して変化すると き、設定を切り換えるべきであることを /etc/rc.d/power_profile に示すことに よって、ユーザは、このインタフェースに直接アクセスすることができます。 SYSCTL 変数 これらの設定は、代わりの設定を要求するカーネルドライバによって上書きされ るかもしれません。これが起こるなら、いったん状態が経過すると (例えば、シ ステムは、十分に冷えた)、元の値は、復旧します。sysctl が上書き状態のため に設定することができないなら、それは、EPERM を返します。 TSC がタイムカウンタ (timecounter) として使用中であるなら、周波数は、変更 することはできません。これは、タイムカウンタシステムが、一定のレート (率) があるソースを使用する必要があるからです。タイムカウンタのソースは、 kern.timecounter.hardware sysctl で変えることができます。利用可能なモード は、kern.timecounter.choice sysctl エントリにあります。 dev.cpu.%d.freq MHz 単位の現在のアクティブな CPU 周波数。 dev.cpu.%d.freq_levels CPU (周波数/電源消費) のための現在利用可能なレベル。MHz とミリ ワット単位の値があります。 dev.DEVICE.%d.freq_settings ドライバ (周波数/電源消費) のための現在利用可能な設定。値には、 MHz の単位とミリワットがあります。設定がデバッグ目的のためにどの ドライバによって提供されているかを理解するために役立ちます。 debug.cpufreq.lowest ユーザに提供する最も低い MHz 単位の CPU 周波数。この設定も、同じ 名前がある調整変数を通してアクセス可能です。これは、いくつかのシ ステム上で使用不可能であるかもしれないたいへん低いレベルを無効に するため使用することができます。 debug.cpufreq.verbose 冗長なメッセージを印刷 (表示) します。この設定も、同じ名前がある 調整変数を通してアクセス可能です。 サポートされたドライバ 次のデバイスドライバは、cpufreq インタフェースを通して完全な周波数制御を 提供します。通常、一度にこれらの 1 つだけがアクティブとなることができま す。 acpi_perf ACPI CPU 性能状態 est Intel 強化 SpeedStep ichss ICH のための Intel SpeedStep powernow K7 と K8 のための AMD PowerNow! と Cool'n'Quiet smist PIIX4 のための Intel SMI-based SpeedStep 次のデバイスドライバは、相対的な周波数制御を提供して、付加的効果がありま す: acpi_throttle ACPI CPU スロットリング (絞り) p4tcc Pentium 4 の熱制御回路 カーネルインタフェース カーネルコンポーネントは、cpufreq カーネルインタフェースを通して CPU 周波 数を問い合わせて設定することができます。これは、現在利用可能な周波数レベ ルを得るために cpufreq_levels() を呼び出し、cpufreq_get() で現在のレベル をチェックして、cpufreq_set() でリストから新しいものを設定して、cpufreq デバイスを入手することを必要とします。各レベルは、実際に 1 つ以上の cpufreq ドライバを参照しますが、カーネルコンポーネントは、これを知ってい る必要はありません。struct cf_level の total_set 要素は、このレベルの周波 数と電力に関する概要を提供します。未知または無意味な値は、 CPUFREQ_VAL_UNKNOWN に設定されます。 cpufreq_levels() メソッドは、cpufreq デバイスと levels の空の配列を取りま す。count 値は、利用可能なレベルの数を設定すべきで、関数が完了した後、返 された実際のレベルの数が設定されます。count が許可されるレベルより多けれ ば、E2BIG を返すべきです。 cpufreq_get() メソッドは、level を格納するための空間へのポインタを取りま す。成功して完了した後に、出力は、現在のアクティブレベルとなり、 cpufreq_levels() によって返されたレベルの 1 つと等しくなります。 cpufreq_set() メソッドは、level へのポインタを取り、それをアクティブにす ることを試みます。priority (すなわち、CPUFREQ_PRIO_KERN) は、このレベルを アクティブにしている間に、前の設定を上書きするどうかを cpufreq に伝えま す。priority が現在のアクティブレベルより高いなら、そのレベルは、保存され 新しいレベルで上書きされます。レベルが既に保存されているなら、新しいレベ ルは、古い保存されたレベルを上書きしないで設定されます。cpufreq_set() が NULL level で呼び出されるなら、保存されたレベルは、復旧されます。保存され たレベルがないなら、cpufreq_set() は、ENXIO を返します。priority が現在の アクティブレベルの優先度より低いなら、このメソッドは、EPERM を返します。 ドライバインタフェース ハードウェア特有の CPU 周波数制御を提供するカーネルドライバは、cpufreq ド ライバインタフェースを通してそれらの個々の設定をエクスポートします。これ は、次のメソッドの実装を必要とします: cpufreq_drv_settings(), cpufreq_drv_type(), cpufreq_drv_set() と cpufreq_drv_get() です。さらに、 ドライバは、cpufreq フレームワークによってこれらのメソッドを呼び出すこと ができるように CPU デバイスの子供としてデバイスをアタッチしなければなりま せん。 cpufreq_drv_settings() メソッドは、現在利用可能な設定、それぞれのタイプ struct cf_setting の配列を返します。ドライバは、未知または無意味な値に CPUFREQ_VAL_UNKNOWN を設定するべきです。各設定のために次のすべての要素が 返されるべきです: struct cf_setting { int freq; /* MHz 単位の CPU クロックまたはパーセント */ int volts; /* mV 単位の電圧 */ int power; /* mV 単位の消費電力 */ int lat; /* us 単位の遷移待ち時間 */ device_t dev; /* この設定を提供するドライバ */ }; このメソッドへのエントリでは、count は、返すことができる設定の数を含んで います。成功して完了するときに、ドライバは、返された設定の実際の数をそれ を設定します。ドライバが count が許可されるより多くの設定を提供するなら、 それは、E2BIG を返すべきです。 cpufreq_drv_type() メソッドは、それが提供する CPUFREQ_TYPE_ABSOLUTE また は CPUFREQ_TYPE_RELATIVE のいずれかの設定のタイプを示します。さらに、ドラ イバは、それが提供する設定が他のドライバだけの情報で cpufreq_drv_set() を アクティブなものに渡すことができないなら、CPUFREQ_FLAG_INFO_ONLY フラグを 設定できます。 cpufreq_drv_set() メソッドは、ドライバの設定を取り、それは、アクティブに なります。設定が無効であるかまたは現在利用可能でないなら、それは、EINVAL を返すべきです。 cpufreq_drv_get() メソッドは、現在アクティブなドライバの設定を返します。 返された struct cf_setting は、正しく書き込まれたすべての要素を含む cpufreq_drv_set() に渡されるために正当でなければなりません。ドライバが現 在の設定を (cpu_est_clockrate() でそれを見積もることによってさえ) 推論す ることができないなら、すべての要素を CPUFREQ_VAL_UNKNOWN に設定するべきで す。 関連項目 acpi(4), est(4), timecounters(4), powerd(8), sysctl(8) 作者 Nate Lawson Bruno Ducrot は、powernow ドライバを寄贈しました。 バグ 次のドライバは、まだ cpufreq インタフェースに変換されていません: longrun(4)。 CPU とバス周波数変更は、まだ実装されていないことに注意してください。 複数の CPU が周波数制御を提供するとき、それらは、異なったレベルに設定する ことができません、そして同じ周波数の設定をすべて提供しなければなりませ ん。 FreeBSD 11.4 March 3, 2006 FreeBSD 11.4