ディスクからの読み取りと Windows Server AppFabric キャッシュからの読み取りのパフォーマンスの比較
このサンプルでは、格納および読み取りの効率はディスクより AppFabric キャッシュを使用する方がよいことを示します。
複数の画像ファイルを読み取り、ディスクまたはキャッシュのファイルにアクセスするユーザー要求をシミュレートして、画像ファイルが提供される時間を比較します。
ヒント
サンプルは学習用としてのみ提供されています。運用環境での使用を目的としておらず、運用環境でのテストも行われていません。サンプルについてマイクロソフトのテクニカル サポートは提供されません。
前提条件
ユーザーに Windows PowerShell スクリプトの知識があれば理想的です。
サンプルでは次のことを前提としています。
Windows PowerShell 2.0 がインストールされている。
Windows Server AppFabric がインストールされている (このインストールにより、必要な DLL も GAC に追加されます)。
AppFabric キャッシュの構成
AppFabric キャッシュをまだ構成していない場合は、Windows Server AppFabric 構成ツールを使用して構成します (既定の設定を使用します)。サンプルでは、AppFabric キャッシュが既定の設定 (cacheHostName=AppFabricCachingService および cacheName=default) で構成されていることを前提としています。
キャッシュ クラスターの開始
Windows PowerShell コマンド ウィンドウを管理者モードで開き、次のコマンドを実行して分散キャッシュ管理モジュールを追加します。
Import-Module DistributedCacheAdministration
次のコマンドを実行して、キャッシュ クラスターへのクライアントとしてのアクセス権をユーザー アカウントに付与します。ユーザーおよびドメイン名を指定します。
Grant-CacheAllowedClientAccount domain\username
Get-CacheAllowedClientAccounts コマンドを使用して、ユーザー アカウントにアクセス権が付与されたことを確認します。
Start-CacheCluster コマンドを使用してクラスターを開始します。
このサンプルのビルドおよび実行
サンプルは、GAC から自動的に AppFabric キャッシュ DLL (Microsoft.ApplicationServer.Caching.Client.dll および Microsoft.ApplicationServer.Caching.Core.dll) にリンクされます。
Visual Studio で DiskVersusCachePerformance.sln ソリューションを開きます。
コマンド プロンプトを開き、ディレクトリを <サンプルの場所>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug に変更します。
このサンプルでは、コマンド ライン パラメーターとしてファイル共有ディレクトリへのパス (DiskVersusCachePerformance フォルダーの部分) を渡す必要があります。これは "コマンド ライン引数" セクションでプロジェクトのプロパティに追加することもできます。
exe を実行してサンプル テストを開始します。
<Location of the sample>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug> DiskVersusCachePerformance.exe ..\..\..\fileshare
サンプルによって実行される操作については、fileshare フォルダーの useractions.xml ファイルに説明があります。以下の操作がサポートされています。
操作 | パラメーター | 説明 |
---|---|---|
PageSize |
Size |
ページのサイズを設定します (読み取るファイルの数) |
LogIn |
UserName |
ユーザーをログインします |
LogOut |
UserName |
ユーザーをログアウトします |
ViewAlbum |
AlbumIndex |
フォルダー "album[Index]" に移動します |
ViewPage |
PageIndex |
ファイル [PageIndex*PageSize - PageIndex*(PageSize+1)-1] を読み取ります |
ViewNextPage |
N/A |
次のファイル セット [(PageIndex+1)*PageSize - PageIndex*(PageSize+2)-1] に移動します |
ViewPrevPage |
N/A |
前のファイル セットに移動します |
操作の順序は次のようにして定義できます。
<useraction> <action>PageSize</action> <data>500</data> </useraction>
<useraction> <action>LogIn</action> <data>tom</data> </useraction>
<useraction> <action>ViewAlbum</action> <data>0</data> </useraction>
<useraction> <action>ViewPage</action> <data>0</data> </useraction>
<useraction> <action>ViewNextPage</action> <data>null</data> </useraction>
<useraction> <action>ViewPrevPage</action> <data>null</data> </useraction>
<useraction> <action>LogOut</action> <data>tom</data> </useraction>
このセグメントは次のように解釈されます。
1 ページのアイテム数を 500 に設定する
tom をログインさせる (ログオンしているユーザーをページにアクセスできるようにする)
album0 を選択する
最初のページを表示する (ディスクまたはキャッシュからファイル 0 ~ 499 を読み取る)
次のページを表示する (ディスクからファイル 500 ~ 999 の読み取りを試みる)
前のページを表示する (ファイルはキャッシュに読み込まれているので、キャッシュからファイル 0 ~ 499 を再度読み取る)
ログアウトする (付与されるアクセス許可を元に戻す)
ログアウトのたびに、ディスクと AppFabric キャッシュのファイルにアクセスした場合のパフォーマンスの比較が表示されます。
ヒント
その後、このサンプルを実行するには、その都度 Restart-CacheCluster
コマンドを使用してキャッシュをクリアし、10 ~ 15 秒間待機します。
ヒント
サンプルの実行中に、[size2_il.cur-DiskRead- error 2 Delay (ticks) 7128] のようなメッセージが表示される場合があります。このエラーは、FileInfo で報告されたファイル サイズと、ディスクから読み取られたファイルの実際のサイズが異なることを示します。キャッシュに格納されているデータはディスクから読み取られたデータと同じサイズなので、この違いは無視してかまいません。
トラブルシューティング
データがキャッシュに追加されていない場合は、キャッシュの削除ポリシーが適用されている可能性があります。キャッシュに削除ポリシーが設定されないように、次のコマンドを実行して既定のキャッシュを削除し、削除ポリシーなしでキャッシュを再作成してください。
Remove-Cache -CacheName default
New-Cache -CacheName default -Eviction None
このサンプルの削除
Restart-CacheCluster コマンドを使用してキャッシュ クラスターを再起動し、キャッシュからデータをクリアします。
関連項目
その他のリソース
Windows Server AppFabric キャッシュのサンプル
2011-12-05