Performance と Branding と Benchmark と Random Test

Vista の代わりに Windows Server 2008 をワークステーション向けにブランディングした方が良いんじゃない? という話.
Mary Jo Foley 氏の記事には基本的に同意.

同意できる点

  • Windows Server 2008 自体がワークステーションとして使えること
  • "One brand fits all" 戦略が失敗したこと
    • Windows Server 2008 のロール選択は良くできている.
  • 人々の感情は無視できず,それは分かりやすいブランドやクチコミに大きく影響を受けるということ

同意できない点

もう一方の記事,特に例の『http://exo-blog.blogspot.com/2007/11/vista-sp1-performance-dud.html:title=』で有名になった exo.blog の主張には読んでて微妙な点が.

exo.blog によると、このようにして構成した「ワークステーション」の動作は、SP1 を適用した Vista よりかなり良好だという。

exo.blog の先週の投稿には、次のようにある。「Vista SP1 をめぐる報道や、カーネルについては SP1 と Server 2008 が同等だとの推定から、われわれは両プラットフォーム間の性能差がほとんどないか、全く同じだろうと予測していた。(中略) そのため、何度かテストを繰り返し、Server 2008 の性能が SP1 を11%ないし17%上回るとわかったときには、当然ながら驚いた」

Windows Server OS では,伝統的に,デスクトップアプリケーションのレスポンスよりも,処理全体のスループットが優先されます.たとえカーネルが同じでも,カーネル変数やレジストリ設定はスループット優先がデフォルトです.結果としてスレッド切り替えや File I/O が異なるパフォーマンス特性を示したとしてもそれは珍しいことではありませんし,スループットを測るベンチマークで異なるスコアを示すこともあるでしょう.

  • せっかく Vista RTM 版で導入された Large I/O を,Vista RTM 版の Cache Manager がうまく活用していないという問題は解消されて,SP1 から Cache Manager はちゃんと Large I/O を使うようになったよ.
    • コピーされるファイルサイズに応じて,CopyFileEx は 128 KB から 1 MB のサイズの読み取りを 4 回ほど最初に発行するよ.これによって Cache Manager の先読みスレッドが大きな I/O で読み取りを開始するよ.
    • ローカルコピーでも,書き込みスレッドの効率が良くなるからメモリ圧力が改善されるよ.
    • Cache Manager は,アプリケーションが発行した読み込みサイズの 2 倍の読み込みを,Vista SP1 では最大 2 MB まで,Windows Server 2008 では 16 MB まで行うよ.
    • 同様に書き込みは Vista SP1 で最大 1 MB,Windows Server 2008 では 32 MB だよ.

通って当たり前のテストより,テストに通らない事例があるかを探せ

ふとランダムテストの話を思い出したり.Lightweight Language のランダムテストの話を OS の話に持ち出すのは自分でもどうかと思いますが.

みなさんは、テストファーストだ、ユニットテストだ、と言いながら、実際は「テストに通って当り前」のテストしか書かずに済ませてしまっていないだろうか。そのようなテストはバグを見付けることにはあまり貢献せず、「次の実装の見直しにも合格する」ためのベンチマークにすぎなくなってしまっている(しかもこれまた「当り前に合格する」)。

スループット測定型のベンチマークは,レスポンスに関してなんの保証もしてくれないことを人はすぐに忘れます.最大値 (最悪値) は平均を取れば容易に紛れてしまいます.『MMCSS とネットワークパケット受け取りの抑制』のゴールは何だったでしょうか? それは「状況が悪くても音がとぎれないこと」です.
ベンチマークにもそろそろランダムテストみたいな方向性が欲しいかも.