Сравнение производительности чтения с диска и кэша AppFabric
В этом примере демонстрируется, что хранение и чтение данных с помощью кэша AppFabric эффективнее, чем использование диска.
В примере считывается ряд изображений — это имитация пользовательских запросов на чтение файлов с диска или из кэша; при этом сравнивается время считывания изображений.
Примечание
Примеры предназначены только для образовательных целей. Они не предназначены для использования в рабочей среде и не тестировались в ней. Корпорация Майкрософт не предоставляет техническую поддержку для этих примеров.
Предварительные условия
В идеале пользователи должны уметь обращаться со сценариями Windows PowerShell.
В примере предполагается следующее:
Установлена среда Windows PowerShell 2.0.
Установлена платформа Microsoft AppFabric 1.1 для Windows Server. (При этом необходимые библиотеки DLL также добавляются в глобальный кэш сборок.)
Настройка кэша AppFabric
Если это еще не сделано, настройте кэш AppFabric, используя средство настройки Microsoft AppFabric 1.1 для Windows Server (используйте параметры по умолчанию). В примере предполагается, что кэш AppFabric настроен с параметрами по умолчанию (cacheHostName=AppFabricCachingService и cacheName=default).
Запуск кластера кэша
Откройте командное окно Windows PowerShell с повышенными привилегиями и выполните следующую команду, чтобы добавить модуль администрирования распределенного кэша:
Import-Module DistributedCacheAdministration
Выполните следующую команду, чтобы предоставить своей учетной записи доступ к кластеру кэша в качестве клиента. Укажите имя пользователя и домен.
Grant-CacheAllowedClientAccount domain\username
Используйте команду Get-CacheAllowedClientAccounts, чтобы убедиться, что учетной записи был предоставлен доступ.
Запустите кластер, используя команду Start-CacheCluster.
Построение и запуск примера
Пример автоматически компонуется с библиотеками DLL кэша AppFabric (Microsoft.ApplicationServer.Caching.Client.dll и Microsoft.ApplicationServer.Caching.Core.dll) из глобального кэша сборок.
Откройте решение DiskVersusCachePerformance.sln в среде Visual Studio.
Откройте командную строку и перейдите в каталог <расположение примера>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug
Примеру необходимо передать один параметр командной строки: путь к каталогу файлового ресурса (это часть папки DiskVersusCachePerformance). (Его также можно добавить к свойствам проекта в разделе "Аргументы командной строки".)
Запустите исполняемый файл, чтобы начать тестирование примера:
<Location of the sample>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug> DiskVersusCachePerformance.exe ..\..\..\fileshare
Действия, выполняемые примером, описаны в файле useractions.xml в каталоге файлового ресурса. Поддерживаются следующие действия:
Действие | Параметры | Описание |
---|---|---|
PageSize |
Size |
Задает размер страницы (число считываемых файлов) |
LogIn |
UserName |
Вход пользователя в систему |
LogOut |
UserName |
Выход пользователя из системы |
ViewAlbum |
AlbumIndex |
Переход в папку "album[Index]" |
ViewPage |
PageIndex |
Считывание файлов [PageIndex*PageSize - PageIndex*(PageSize+1)-1] |
ViewNextPage |
Недоступен |
Переход к следующему набору файлов [(PageIndex+1)*PageSize - PageIndex*(PageSize+2)-1] |
ViewPrevPage |
Недоступен |
Переход к предыдущему набору файлов |
Последовательность действий можно определить следующим образом.
<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>
Предыдущий сегмент интерпретируется так:
Задать число элементов на странице равным 500
Войти как пользователь "tom" (это позволяет вошедшему пользователю обратиться к странице)
Выбрать альбом album0
Просмотреть первую страницу (считать файлы 0-499 с диска или из кэша)
Просмотреть следующую страницу (попытаться считать файлы 0-499 с диска)
Просмотреть предыдущую страницу (заново считать файлы 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, чтобы удалить данные из кэша.
См. также
Другие ресурсы
Примеры (кэширование в AppFabric 1.1)
2012-03-05