Поделиться через


Сравнение производительности чтения с диска и кэша 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).

Запуск кластера кэша

  1. Откройте командное окно Windows PowerShell с повышенными привилегиями и выполните следующую команду, чтобы добавить модуль администрирования распределенного кэша:

    Import-Module DistributedCacheAdministration
    
  2. Выполните следующую команду, чтобы предоставить своей учетной записи доступ к кластеру кэша в качестве клиента. Укажите имя пользователя и домен.

    Grant-CacheAllowedClientAccount domain\username
    
  3. Используйте команду Get-CacheAllowedClientAccounts, чтобы убедиться, что учетной записи был предоставлен доступ.

  4. Запустите кластер, используя команду Start-CacheCluster.

Построение и запуск примера

Пример автоматически компонуется с библиотеками DLL кэша AppFabric (Microsoft.ApplicationServer.Caching.Client.dll и Microsoft.ApplicationServer.Caching.Core.dll) из глобального кэша сборок.

  1. Откройте решение DiskVersusCachePerformance.sln в среде Visual Studio.

  2. Откройте командную строку и перейдите в каталог <расположение примера>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug

  3. Примеру необходимо передать один параметр командной строки: путь к каталогу файлового ресурса (это часть папки DiskVersusCachePerformance). (Его также можно добавить к свойствам проекта в разделе "Аргументы командной строки".)

  4. Запустите исполняемый файл, чтобы начать тестирование примера:

    <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>

Предыдущий сегмент интерпретируется так:

  1. Задать число элементов на странице равным 500

  2. Войти как пользователь "tom" (это позволяет вошедшему пользователю обратиться к странице)

  3. Выбрать альбом album0

  4. Просмотреть первую страницу (считать файлы 0-499 с диска или из кэша)

  5. Просмотреть следующую страницу (попытаться считать файлы 0-499 с диска)

  6. Просмотреть предыдущую страницу (заново считать файлы 0-499 из кэша, поскольку файлы теперь находятся в нем)

  7. Выйти (отменить предоставление разрешения)

При каждом выходе пример выдает отчет о сравнении производительности при доступе к файлам с диска и из кэша 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