私は最近、システムヘルス拡張イベントイベントファイルに格納されているデータまたはメトリックの理解に取り組んでいます。
提供されているシステムヘルスを使用して、パフォーマンスメトリックのデータコレクションを実装しようとしています here
という名前のシステムヘルスイベントから収集されるCPU使用率、その他のプロセス使用率などのメトリックを提供するレポートがあります。
scheduler_monitor_system_health_ring_buffer_recorded
SQL CPU使用率としてレポートにリストされているフィールド "process_utilization"がほとんどの場合100を超える時間である理由をいくつかのビジーサーバーで理解できません。サーバーアクティビティモニターから確認した場合でも、常に100を超えるCPUが表示されます。
この問題をGithubで報告しましたが、修正または応答がないようです。
したがって、私の質問は
記録されたシステムヘルスリングバッファーを使用して、サーバーのSQL CPU使用率の正確な数値を取得するにはどうすればよいですか?
レポートには、レポートごとに計算された2つ未満のフィールドのカウンターも表示されます
OtherProcessUtilとしての100-System_idle-process_utilization
SystemUtilとしての100-system_idle
これらのOtherProcessUtilおよびSystemUtilは何のために必要/役立ちますか?
Idera&sentry(私がテストしたもの)のような他のツールでは、同じサーバーのCPU使用率が100%を超えていません。同じ負荷に対して並べて比較しました。
100%を超えるディスクおよびプロセッサー%カウンターの値システムに存在するプロセッサーまたはディスクの数で割る必要があります。したがって、100%は、1つのプロセッサの100%を使用していることを意味します。 250%は、2つ半のプロセッサを使用していることを意味します。したがって、それが120%を報告している場合は、それが120/<プロセッサー数>に相当するかどうかを確認してください。
Tigertoolsの最新の変更は2018年6月であることに注意してください。 sqlwatch.io をチェックしてみてください。はるかにアクティブなプロジェクトのようです。
social.msdn.Microsoft.com/Forums/sqlserver/en-US/… を参照して、TOP(1)に変更するだけで、現在のSQL CPU使用率を取得できます。