Comparação de desempenho entre a leitura pelo disco X cache do AppFabric

Este exemplo mostra que é mais eficaz armazenar e ler no cache do AppFabric do que no disco.

O exemplo lê uma série de arquivos de imagem para simular solicitações para acessar os arquivos do disco ou do cache e compara o tempo usado para atender os arquivos de imagem.

Dica

Os exemplos são fornecidos apenas para fins educacionais. Eles não devem ser usados em um ambiente de produção e não foram testados em um ambiente de produção. A Microsoft não dá suporte técnico para esses exemplos.

Pré-requisitos

Basicamente, os usuários devem conhecer o script do Windows PowerShell.

O exemplo pressupõe o seguinte:

  • que o Windows PowerShell 2.0 esteja instalado.

  • O Microsoft AppFabric 1.1 para Windows Server está instalado. (Isso também adiciona as DLLs necessárias ao GAC.)

Configurar o cache do AppFabric

Se você ainda não fez isso, configure o cache do AppFabric usando a ferramenta de configuração do Microsoft AppFabric 1.1 para Windows Server (use as configurações padrão). O exemplo pressupõe que um cache do AppFabric esteja definido com as configurações padrão (cacheHostName=AppFabricCachingService e cacheName=default).

Iniciar o cluster de cache

  1. Abra uma janela de comando do Windows PowerShell no modo elevado e execute o seguinte comando para adicionar o módulo de administração Cache Distribuído:

    Import-Module DistributedCacheAdministration
    
  2. Execute o seguinte comando para conceder a sua conta de usuário o acesso ao cluster de cache como um cliente. Forneça seu nome de usuário e de domínio.

    Grant-CacheAllowedClientAccount domain\username
    
  3. Use o comando Get-CacheAllowedClientAccounts para verificar se foi concedido o acesso a sua conta de usuário.

  4. Inicie o cluster usando o comando Start-CacheCluster.

Criar e executar esse exemplo

O exemplo conecta-se automaticamente às DLLs de cache do AppFabric (Microsoft.ApplicationServer.Caching.Client.dll e Microsoft.ApplicationServer.Caching.Core.dll) no GAC.

  1. Abra a solução DiskVersusCachePerformance.sln no Visual Studio.

  2. Abra um prompt de comando e altere o diretório para: <Local do exemplo>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug

  3. Esse exemplo precisa passar um parâmetro de linha de comando: o caminho para o diretório de compartilhamento de arquivos, parte da pasta DiskVersusCachePerformance. (Você também pode adicionar isso às propriedades do projeto, na seção “argumentos da linha de comando”.)

  4. Execute o exe para iniciar o teste de exemplo:

    <Location of the sample>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug> DiskVersusCachePerformance.exe ..\..\..\fileshare
    

As ações executadas pelo exemplo são descritas no arquivo useractions.xml na pasta de compartilhamento de arquivos. As ações a seguir têm suporte.

Ação Parâmetro(s) Descrição

PageSize

Tamanho

Definir o tamanho da página (número de arquivos a serem lidos)

LogIn

UserName

Fazer login no usuário

LogOut

UserName

Fazer logout do usuário

ViewAlbum

AlbumIndex

Mover para a pasta “album[Index]”

ViewPage

PageIndex

Ler arquivos [PageIndex*PageSize - PageIndex*(PageSize+1)-1]

ViewNextPage

N/A

Mover para o próximo conjunto de arquivos [(PageIndex+1)*PageSize - PageIndex*(PageSize+2)-1]

ViewPrevPage

N/A

Mover para o conjunto de arquivos anterior

Uma sequência de ações pode ser definida da maneira a seguir.

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

O segmento anterior é interpretado da seguinte forma:

  1. Definir número de itens por página como 500

  2. Login tom (permite que o usuário conectado acesse a página)

  3. Selecionar album0

  4. Exibir a primeira página (ler arquivos de 0 a 499 no disco ou cache)

  5. Exibir próxima página (tentar ler arquivos de 500 a 999 no disco)

  6. Exibir página anterior (reler arquivos de 0 a 499 no cache agora que os arquivos são carregados no cache)

  7. Logout (reverter permissão concedida)

Em cada logout, o exemplo reporta uma comparação de desempenho do acesso aos arquivos do disco versus do cache do AppFabric.

Dica

Em cada execução subsequente desse exemplo, use o comando Restart-CacheCluster para limpar o cache e aguarde de 10 a 15 segundos.

Dica

Durante a execução do exemplo, você pode encontrar mensagens como [size2_il.cur-DiskRead- error 2 Delay (ticks) 7128]. O erro mostra as diferenças entre o tamanho do arquivo reportado por FileInfo e o tamanho real do arquivo lido no disco. Essa diferença pode ser ignorada porque os dados armazenados no cache têm o mesmo tamanho que os dados lidos no disco.

Solução de problemas

Se os dados não estiverem sendo adicionados no cache, pode ser que a diretiva de remoção do cache esteja impedindo. Para verificar se o cache não tem nenhuma diretiva de remoção definida, execute os seguintes comandos para remover o cache padrão e recriá-lo sem nenhuma diretiva de remoção:

Remove-Cache -CacheName default
New-Cache -CacheName default -Eviction None

Remover esse exemplo

Reinicie o cluster de cache usando o comando Restart-CacheCluster para limpar dados do cache.

Consulte também

Outros recursos

Samples (AppFabric 1.1 Caching)

  2012-03-05