Linux memo 2019/11/09

● WindowsでアプリにCPU制限させる
== やりたいこと
とあるWindows上の特殊アプリは実行すると1スレッドでぶん回って処理をする。イベントドリブンじゃなくてポーリングしてそう。不必要にCPUクロックが上がり発熱も増えファンがぶん回りバッテリがすぐ減る。困る。

== CPU binding
タスクマネジャー(Ctrl+Shift+Esc) -> 詳細 -> プロセスを選んで右クリック -> 関係の設定
2スレッド以上でぶんまわってるときは1つのCPUに閉じ込めて低減する方法が使える。が、1つのCPUは引き続きぶん回らせてしまう。
Linuxだと、taskset(1)とかsched_setaffinity(2)とか。

== 周波数の上限
電源オプション(Win+X, O) -> 電源の追加設定 -> プラン設定の変更 -> 詳細な電源設定の変更 -> プロセッサの電源管理 -> 最大のプロセッサの状態 -> %で指定
周波数の上限を設定できる。そこそこのクロックに止めれば発熱が劇的に抑えられる。が、ぶん回ってるアプリ以外の人も処理が遅くなる。
Linuxだと、/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors でgovernorを指定し、/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freqあたり周波数を指定。ただ最近のCPUはクロックも電源管理もアグレッシブに行うので、今どきは下手に下限を固定にするのは危険かもしれない。

== 優先度
タスクマネジャー(Ctrl+Shift+Esc) -> 詳細 -> プロセスを選んで右クリック -> 優先度の設定
ぶん回るアプリと本当にCPUを使わせたいアプリとで取り合いになるのを防げる。が、アプリがぶん回ることに違いはない。
Linuxだと、renice(1)とかchrt(1)とか。

結局、LinuxのcgroupsでCPU使用率**%に制限したグループにぶん回るアプリをつっこむ、みたいなことがやりたかったわけだけど、Windows標準機能ではそういうのはなさそう。その用途だとBattle Encoder Shiraseがあるようだが、どうやって実装してんだろ。定期的に対象プロセスにptraceしてむりやりsleepさせてる感じ?

● Android System Programming
Amazonアフィリンク
Androidのミドルから下位の層をポーティングするような人向けの本として非常におすすめで、アフィで紹介すればナウでヤングにバカウケでガッポガッポ、と知り合いから聞いたので貼っとく。私はまだ買ってないけど。

● タイトル詐欺じゃね?しかも金儲けとか
いや一応Linuxのことも書いたし...

このブログ記事について

このページは、らるるが2019年11月 9日 01:07に書いたブログ記事です。

ひとつ前のブログ記事は「Linux memo 2019/11/07」です。

次のブログ記事は「ARM Cortex A性能比インチキ表」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0