Windowsのミリ秒の間隔がおおざっぱすぎる件 【調査中】

Windowsで性能試験用のアプリケーションをつくる機会があって気付いたことがあったので参考になればと思います。
ツールは、リクエスト送信し、ミリ秒単位でターンアラウンドタイムを計測するのですが、んん、0ミリ秒と16ミリ秒というのが多い、始めは何かしらサーバ側でウェイトでも設けているのかと思ったのですが、クライアント側でした。

詳細

Windows時間分解能というものですが、詳細はこのサイトが分かりやすいです。

実機確認

実際の振る舞いを確認するため、以下のスクリプトをコピペして実行してみてください。
> cscript test.vbs

現在時刻をミリ秒単位で取得して、表示するものですが、飛び飛びになっていると思います。この間隔がOSのタイマの割り込み周期(== 時間分解能)になります。

''  test.vbs
Option Explicit
    Dim dtmNowTime      ' 現在時刻
    Dim lngHour         ' 時
    Dim lngMinute       ' 分
    Dim lngSecond       ' 秒
    Dim lngMilliSecond  ' ミリ秒
    Dim dDate           ' 日付
    Dim strDate         ' 
    Dim strLongDate     ' 
    Dim strShortDate    ' 

    dDate = Now
    strShortDate = Year(dDate) & Right("0" & Month(dDate), 2) & Right("0" & Day(dDate), 2)
Do
    dtmNowTime = Timer
    lngMilliSecond = dtmNowTime - Fix(dtmNowTime)
    lngMilliSecond = Right("000" & Fix(lngMilliSecond * 1000), 3)
    dtmNowTime = Fix(dtmNowTime)
    lngSecond = Right("0" & dtmNowTime Mod 60, 2)
    dtmNowTime = dtmNowTime \ 60
    lngMinute = Right("0" & dtmNowTime Mod 60, 2)
    dtmNowTime = dtmNowTime \ 60
    lngHour = Right("0" & dtmNowTime, 2)
    strLongDate = lngHour & ":" & lngMinute & ":" & lngSecond & "." & lngMilliSecond
    WScript.StdOut.WriteLine strShortDate & " " & strLongDate
Loop

HALを確認

クライアントPCでみてみるとHALは「halmacpi.dll」を使用しています。(system32下hall.dllのプロパティ)16ミリ秒になるようです。
539

16ミリでは、今回の試験目的ではキビシイので、さらに高分解能にできないものか、調査してみようと思います。

photo credit: ToniVC
  • このエントリーをはてなブックマークに追加

関連記事

フリーのロードバランサ Poundの導入検討

ロードバランサの導入依頼をもらったので検討に入ります。まずは、軽量なPoundを調査してみました。 http://www.apsis.ch/pound/ 机上での一次調査(サイトの訳と感想です

Skype 特定の機能を無効に

「skypeを導入したいが、ファイルの送信などで機密情報の流出はもちろん避けたい。」 という要望があり簡単にできるか調査してみました。 以下のサイトを参考に Active directory環境な

Windows XP/2003 ログオフできない (イベント ID:1073)

いつからかは はっきりしないのですが、Windows XPでログオフしても反応がないようになってしまいました。今回いろいろ試してみて解決できたので、エントリーします。 イベントビューアを確認

Comment

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑