OLD Sled | INDEX | INDEX(1) | NEW Sled

続・タイムスライスの変更の勧め    投稿者:西家  投稿日:1998年12月22日 23時53分 

前回の書き込みが流れてしまったので新規に投稿します。
タイムスライスを適切に設定しなおすことで体感速度を上げようという趣旨です。
設定方法は以下のとうりです。
System.ini
[386Enh]
MinTimeslice=XX
(XX:タイムスライスの設定値、単位はミリセコンドです。デフォルトは20msとなっています。)
復旧方法は上記で追加した行を削除するだけです。

皆さんご存知のように、ひとつのCPUが一度に実行できるタスクはひとつしかありません。擬似的に複数のタスクを実行するために、特定の時間毎にタスクを切り替えて実行しています。1つのタスクを実行してから、次のタスクに切り替えられるまでの時間がタイムスライスです。ほぼ、TDFさんのいうとうりです。

タイムスライスの設定値を小さくしすぎると、全体的に遅くなるのには主に2つの理由があります。
・タスクの切り替えやスケジューリングは一定の処理時間を消費します。タイムスライスが短いと、単位時間あたりのタスク切り替えの回数が増えるとともに、それが消費する処理時間も無視できなくなります。(特にAMD製のCPUはIntel製のそれに比べて、数倍の時間がかかる傾向があります。AMDのCPUはロケットカーみたいなものでシングルタスクには強いが、マルチタスクなどの小回りは効かない傾向があるようです。)
・タスクの切り替えが発生すると、キャッシュメモリーのヒット率が一時的に下がります。そのために遅い主記憶メモリにアクセスする回数が多くなり、プログラムの実行速度が落ちます。最近のCPUは大容量のキャッシュを利用することで高速化していますので、キャッシュのヒット率の低下は無視できません。

では、どうして体感速度が上がるのか?パソコンは同時に多くのタスクを処理しています。しかし、ユーザーにとって優先的に処理してほしいタスクをOSが優先的に実行するわけではありません。予め決められた優先度によってタスクを実行します。タイムスライスが短ければ、単位時間中に実行されるタスクの種類を増やすことができます。Windowsのスケジューラは、タイムスライスが長いほど、設定されている優先度が無視される傾向があります。タイムスライスが短いほど適切にスケジューリングされ、ユーザが優先的に処理してほしいタスクが処理される機会が適切に与えられます。適切にスケジューリングした結果、画面の変更結果がリアルタイムで表示されるようになり、ユーザのアクションに対する応答性が良くなります。つまり、体感速度が上がるわけです。

注意:一部のマルチメディア系のアプリケーションはタイムスライスが20msの時に最大のパフォーマンスを発揮できるように設定されています。このようなアプリケーションではタイムスライスの設定を変更すると滑らかに再生できない場合があります。

具体的なタイムスライスの設定値は4msから8msぐらいがいいようです。


  1. re: A.T さん 投稿日:1998年12月23日 00時19分
    一応190件目ぐらいに残っているようですが,時間の問題なのでこちらで再度質問させて下さい.
    最小タイムスライスがCPUの処理速度に対して大きすぎると,タスクによっては完了してもCPUが解放されない,つまりアイドリングした状態になるという事は無いでしょうか?
    (僕はそれで最小タイムスライスを小さくする方が良いのだろうと思っていました.)

  2.  
  3. re: 悪魔1号 さん 投稿日:1998年12月23日 06時04分
    Na13でMinTimeslice=8で試してみました。
    体感できる向上がありました。貴重な情報ありがとうございました。
    La10でも試してみます。

  4.  
  5. re: TDF さん 投稿日:1998年12月23日 07時06分
    西家さんご教授ありがとうございます。(^^)
    大体あっていたんですね、よかったよかった。
    でも正確な「知識」として持っていたかったもので・・・感謝です。

    因みにウチでは(Ra266+セカンドBUSStar(WAVEStar互換))で4msに設定した所
    Final Realityでサウンドに「ぷつぷつ」とノイズが載りました。
    16くらいに設定すると戻ったのでどうやら速すぎたようです。
    上手いチューニングが必要ですね。
    しかし、変更するにはいちいち再起動が必要なのが面倒ですが。
    (まあこのくらいは我慢する価値はあるかな)

  6.  
  7. re: iri さん 投稿日:1998年12月24日 16時37分
    V12のせかえK6-2 300+96MB win98ですが、10msで効いてます効いてます!
    プロセスの切り替えがすごく軽くなりました。

  8.  
  9. re: 西家 さん 投稿日:1998年12月24日 23時15分
     アプリケーションが暴走していない限り、タスクが完了してもCPUが解放されないという事は、ないと思います。
     タイムスライスの設定値は大きいほど、ユーザのアクションなどの割り込み処理に対する応答が鈍くなります。逆にタイムスライスの設定値を小さくしすぎると、システムが遅くなります。デフォルトの設定は動作を保証する最低限度のハードウェアでも、そこそこ動作することを考慮して決められたものです。現在使っているパソコンの構成に適切に設定されたものではないのです。タイムスライスの設定値を変更することは、グラフィックアクセレータのMCLKの設定を変更する行為と似た側面があります。

     サウンドデバイスの場合には、タイムスライスが長すぎても、短すぎても、与えられた時間内に発音データを準備し切れなくなるために音が切れる場合があります。

  10.  
  11. re: A.T さん 投稿日:1998年12月25日 00時58分
    なるほど.
    それじゃあ僕の80MHz化したXa16ではデフォルトでもFinalRealityを動かすと音が切れるというのはそのせいかもしれませんね.
    いろいろと試してみます.ありがとうございました.

  12.  
  13. re: 井プゥ さん 投稿日:1998年12月25日 10時59分
    すげえ、V200流星でめっちゃ早くなってる。情報ありがとうございました。

  14.  
  15. re: machan さん 投稿日:1998年12月25日 21時14分
    Windows95や98は完全な時分割でないと聞いたことがあるのですが、この辺はどうなんでしょうか?だから、"Min"Timesliceなんですかねぇ。

  16.  

OLD Sled | INDEX | INDEX(1) | NEW Sled

NamaLog Viewer SuperLite Ver-0.0.1α7 by K.O.T.B.GRIFFON / GRIFFON Works Software