2017-02-25 9 views
1

MS Windowsシステムに関するこれらの3つの技術的な違いをもう一度明らかにしてください。最初はTimer Resolutionです.ntdll.dll以外の関数NtSetTimerResolutionNtQueryTimerResolutionを使って設定して取得することも、Sysinternalsのclockres.exeツールを使用することもできます。Windowsのタイマーの解像度とアプリケーションの優先度とプロセッサのスケジューリング

しばらく前にChromeブラウザでウェブ全体のパフォーマンスを向上させるために使用したスキャンダルのトリックの1つです。 (彼らはFlashプラグインのためだけに高解像度のトリックを現時点で残しました)。 https://bugs.chromium.org/p/chromium/issues/detail?id=153139 https://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/

事実、Visual StudioとSQL Serverでは場合によってはトリックも行います。私は個人的には、システム全体をより良く、鮮明に実行し、多くの人々が警告するほど遅くならないように感じます。

タイマの解像度とアプリケーションのI/Oとメモリの優先度(リアルタイム/ハイ/ノーマル/ノーマル/ロー/バックグラウンドなど)の違いは何ですか?単一のアプリケーションではなく、システム全体をセットアップしますか?

Processor schedulingオプションとの違いはCMD > SystemPropertiesPerformance.exe - >詳細設定タブから調整できます。デフォルトでは、ユーザーのOSバージョン(XP/Vista/7/8/8.1/10など)はプログラムのパフォーマンスを設定し、サーバーのバージョン(2k3/2k8/2k12/2k16)はバックグラウンドサービスを管理します。このオプションと上記の2つの方法との関係

+0

'NtSetTimerResolution'と' NtQueryTimerResolution'は*エクスポートされます* - あなたは簡単にそれを呼び出すことができます – RbMm

答えて

1

timeBeginPeriod()はこれを行うための文書化されたAPIです。 Sleep()の精度に影響することが記録されています。 Dave Cutlerはおそらくそれを実装するのを楽しんでいなかったが、Win 3.1のコードを移植することが必要になった。その後、マルチメディアAPIバックは、吃音を起こさずに小さなバッファで貧血のハードウェアを保つために必要でした。

非常に粗いですが、他にカーネルで行う方法はありません。プロセッサコアの通常の状態は、HLT命令で停止されます。消費する(ほとんど)電力は、それを復活させる唯一の方法はハードウェア割り込みです。それは何をしているのですか、それは時計の割り込みレートをクランクアップします。通常、毎秒64回のティックがあります。ネイティブAPIを使用してtimeBeginPeriod、2000で1000までジャックすることができます。

はい、消費電力がかなり悪いです。クロック割り込みハンドラはスレッドスケジューラもアクティブにします。スレッドスケジューラはコードのほんの一部です。スリープ()コールがクロック割り込みレートで(ほぼ)目を覚ます理由。 Win8.1btwで微妙な変化があったのは、それがもはや反応的ではなく、1msecのレートで最大2msecの遅延が生じるということだけでした。

クロムは確かにabのために悪名高い/それからの地獄を使用しています。私はいつも、モバイルオペレーティングシステムやバッテリ駆動デバイスで大きなビジネスを行っている企業にとって、それが競争上の優位性を提供していると考えていました。このウェブサイトを起動した人noticed something was wrong。ブラウザの責任を負うことは、正確なGIFアニメーションを得るために必要な、10ミリ秒までのレートをバンプアップすることです。マルチメディア再生にはこれ以上必要ありません。

これは、他の点では、優先度のスケジューリングに全く影響しません。私がチェックしなかった1つの詳細は、スレッドの量子が対応して変化するかどうかです(スレッドが追い出される前にコアを所有する可能性のあるティック数、ワークステーションの場合3)。私はそれがないと思う。