プログラミングボード
プログラミングボード

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 検索 過去ログ

ツリー一括表示

Nomal タスクマネージャーの暴走 /Toshi (16/02/26(Fri) 17:03) [48]
Nomal タスクマネージャーの暴走:結論 /Toshi (16/06/26(Sun) 12:20) [49]


親記事 / ▼[ 49 ]
[48]  タスクマネージャーの暴走
□投稿者/ Toshi -(2016/02/26(Fri) 17:03:29)

    プログラミングの話では有りませんが、32bit版Windowsを使ってて、OS自体が滅茶苦茶重くなる事が有ります。
    私は常にタスクマネージャーを起動しっぱなしにしてる人間なのですが、タスクマネージャーでCPU使用率を確認すると、タスクマネージャー自身、つまり「taskmgr.exe」のCPU使用率が40〜50%と、デュアルコアなので、つまりCPU一つを丸々占有してる状態でOS全体の処理が重くなります。

    以前からこの現象はちょくちょく有ったのですが、知らない間に現象が収まる事が多かったので、今まで「ま、いっか」と気にしてませんでした。

    しかし、最近、またこの現象が頻繁に起きて私を困らせます。
    そこで今回は色々調べてみました。

    結論から言うと、詳しい事は分からなかった・・・です。

    しかし、有る程度、原因が推測出来るだけの材料は揃ったと思います。

    原因は、グラフィック性能のしょぼさ、です。

    まず、この現象が起きる前提として、処理の重たいデコードによる再生の途中からこの現象が出始め、動画がスムーズに再生されなくなり、動画をポーズしてタスクマネージャで確認すると、この時点で既にタスクマネージャのCPU使用率が高くなってます。
    また、ePSXeなど、高いグラフィック処理を要求するアプリケーションを使ってても、10分もしない内に同様の現象が発生します。

    ノートPCでチップ内臓のグラフィックコントローラーを使用しているのですが、その様なPCは大抵の場合、メインメモリをグラフィックメモリとして利用しています。
    メインメモリは本格的なグラフィックボードと違って非常に処理の遅いメモリです。
    しかも、割り当てられるメモリは少ないです。
    昨今のグラフィックボードでは、ギガレベルのメモリを搭載してますが、メインメモリを利用する内蔵チップ型の場合、精々128〜256Mバイト程度しか利用してないと思います。(下手すれば64Mバイト程度って事も有り得ます。)

    最近の動画のデコードは高いグラフィック性能と有る程度のメモリを要求します。
    ePSXeなども同じです。

    これらのアプリは、画面に表示する動画アニメーションをスムーズに再生しようとして、沢山の情報を先読みし、バッファリングします。
    しかし、メモリが小さいので、すぐにバッファリングが詰まってしまいます。
    しかも処理が遅いので、バッファの中から再生済みのいらないメモリを破棄し、新たな情報を読み込む、と言うキャッシュ制御が詰まります。
    つまり、内蔵チップによるメモリ制御の処理待ちでメディアプレイヤーやePSXeなどは「まだですか?」と繰り返し確認する為だけにCPU負荷を取られる訳です。
    それは、リアルタイムで画面を更新するタスクマネージャーも例外では有りません。
    タスクマネージャーもGDIと言うグラフィックコアに「画面を更新してくれ」とリクエストをしますが、GDIは「まだグラフィックのキャッシュ処理が終ってないから、待っててよ」と返します。タスクマネージャはしばらく待てば良いのに、プログラミングされた通りの高速リトライで再確認に行ってしまうので、ビジー率が跳ね上がってしまう、と言う訳です。

    その様な事情なので、仮にタスクマネージャを終了させても、内臓チップによるメモリ掃除処理に掛かる時間自体は大して変わらないので、メディアプレイヤーやePSXe自体がスムーズに動く様にはなりません。

    つまり、内臓チップのキャッシュ掃除が終われば、自然とタスクマネージャの負荷は通常値(10%前後)に落ちます。
    しかし、この後引き続き動画やゲームを再開すると、同じく重いままです。
    それは、詳細なグラフィックデータがキャッシュに一杯溜まったままだからです。
    つまり、掃除は完璧に行われていない、と言う事になります。
    このゴミとなった「詳細なグラフィックデータ」を掃除するには、「簡易なグラフィックデータで一杯にしてやれば良い」と言う事になります。
    つまり、処理の軽いアプリケーションのウィンドウを最大化したり最小化したり、テキストベースのインターネットページを閲覧するなどです。
    そうすると、内臓チップはメモリに残ったゴミ掃除を簡単に出来る様になりますから、動画やゲームを再開した際にしばらくはスムーズに動く様になります。

    つまり、根本的解決方法は今の所「無い」と言う事になります。
    グラフィック性能の良いノートPCに買い換えるか、若しくは重くなったらしばらく休んで、またちょっと動かし、また休んで、を繰り返し使うかしか選択肢は無い状況かなと思います。

    呪わしくは、ハード性能に頼ったソフトウェア文化の台等ですね。

    尚、姑息な手段では有りますが、動画だけなら回避方法が無い事も有りません。
    それは、デコード処理が比較的軽い、MPEG2若しくはMPEG1にコンバートしてから再生する、と言う方法です。
    デュアルコア世代のノートPCなら、MPEG2なら問題なく再生出来ると思います。
[ □ Tree ] [ 返信/引用返信 ] 削除キー/



▲[ 48 ] / 返信無し
[49]  タスクマネージャーの暴走:結論
□投稿者/ Toshi -(2016/06/26(Sun) 12:20:02)

    その後色々と試行錯誤して原因が明確に分かりました。
    蓋を開けてみれば「そんな事か」と言う単純な話だったのですが、熱暴走でした。
    まさか、近年のPCで熱暴走が起きるとは考えておらず、全くの盲点でした。

    グラフィックはノートPCの為オンチップなので、結局グラフィック処理が一番CPU負荷が高くなって熱暴走しやすくなる、と言う話です。

    私はノートPCを寝床で使ってる都合上、ノートPC付属のキーボードは使い勝手が悪く、USB外付けでキーボードを繋げて使ってます。
    そしてノートPCのキーボードは、なんか調子が悪くてキータップと入力キーを認識する為の敷かれているタッチセンサー付き基盤シートを取っ払って、キーボード部分は丸裸になってます。(基盤シートを敷く為の鉄板がむき出しになってる)
    この状態なので、熱暴走と言う原因にたどり着けました。

    つまり、タスクマネージャーが暴走してる時の鉄板が滅茶苦茶熱い!

    と言う事で、ビニール袋に水を入れ、それをフリーザーで凍らせた氷を用意し、熱暴走した時には氷を鉄板に乗せてやる事で、すぐに収まる様になりました(笑)

    夏なんか熱暴走しやすくなるので、氷を二つ用意して二交代制で絶えず冷やしてる状態です。
    その作業が少し面倒ですけど、でも熱暴走しなくなったので快適に作業が出来る様になりました。
[ 親 48 / □ Tree ] [ 返信/引用返信 ] 削除キー/


HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 検索 過去ログ

- Child Tree -