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
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
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
Use o comando Get-CacheAllowedClientAccounts para verificar se foi concedido o acesso a sua conta de usuário.
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.
Abra a solução DiskVersusCachePerformance.sln no Visual Studio.
Abra um prompt de comando e altere o diretório para: <Local do exemplo>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug
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”.)
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:
Definir número de itens por página como 500
Login tom (permite que o usuário conectado acesse a página)
Selecionar album0
Exibir a primeira página (ler arquivos de 0 a 499 no disco ou cache)
Exibir próxima página (tentar ler arquivos de 500 a 999 no disco)
Exibir página anterior (reler arquivos de 0 a 499 no cache agora que os arquivos são carregados no cache)
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