• Nenhum resultado encontrado

Análise de desempenho utilizando o código fonte do Kernel do Linux

6.2

Análise de desempenho utilizando o código fonte do

Kernel do Linux

Esta primeira análise será focada no desempenho para deduplicação do Dedupeer, e do armazenamento e reidratação do Dedupeer File Storage. Foram feitas 14 execuções de cada uma das principais operações, armazenamento, deduplicação, deduplicação + armazenamento e reidratação, cada uma delas para 128KB, 64KB, 32KB, 16KB e 8KB. Esses valores foram escolhidos por serem as potências de dois próximas ao tamanho recomendado por alguns sistemas de deduplicação, 8KB e 16KB, e o tamanho utilizado no Ustore, o sistema onde o Dedupeer foi implantado, que é 128KB.

O computador utilizado para a execução da análise de desempenho foi um Windows 7 Profissional com Service Pack 1 de 32 bits com processador Intel Core 2 Quad Q6600 2.40GHz e 3,24GB de memória RAM DDR2.

Para a operação de armazenamento foi enviado um arquivo .tar com todo o código- fonte do Kernel do Linux na versão 3.9.8 (513.945.600 bytes) e o tempo até a conclusão da operaçao foi registrado. A utilização do formato tar é muito importante para fazer a deduplicação dos arquivos pois nenhuma compressão é aplicada aos arquivos que são armazenados nele, diferente do zip por exemplo, que modifica o conteúdo dos arquivos e isso degrada a taxa de compressão obtida com a deduplicação pelo fato do conteúdo dos arquivos serem transformados, o que impossibilita a descoberta de conjunto de dados idênticos.

Foi registrado também o tempo do início da operação de deduplicação até o término, e também o tempo do início da deduplicação até o término do armazenamento do arquivo deduplicado. Para essas operações foi utilizado o arquivo .tar com todo o código fonte do Kernel do Linux na versão posterior à 3.9.8 que estava disponível no site, que foi a versão 3.10-rc7 (521.420.800 bytes).

Por último, foi registrado o tempo gasto para fazer a reidratação do arquivo dedu- plicado. Todos os dados capturados na avaliação estão disponibilizados no formato do Mathematica 91no apêndiceB.1.

Operação de armazenamento

As Figuras6.1e6.2mostrarão todos os tempos em milissegundos capturados das 14 execuções da operação de armazenamento do Dedupeer File Storage para os algoritmos

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

de hashing MD5 e SHA-1 para cada tamanho de chunk analisado, os quais foram para todas as operações: 128KB, 64KB, 32KB, 16KB e 8KB. Os dados foram plotados no gráficos na mesma ordem em que foram capturados.

Figura 6.1 Tempo em milissegundos para as execuções da operação de armazenamento utilizando MD5

Figura 6.2 Tempo em milissegundos para as execuções da operação de armazenamento utilizando SHA-1

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

na Figura6.3mostrará o emparelhamento dos dados ordenados entre os algoritmo de hashingusados para cada tamanho de chunk separado. A partir dos gráficos, percebe-se que os tempos para cada operação de armazenamento são similares independente do algoritmo de hashing utilizado.

Para uma melhor visualização, a comparação do tempo para cada tamanho de chunk separado está no apêndiceC.1.

Figura 6.3 Tempo em milissegundos para as execuções da operação de armazenamento, separadas por tamanho de chunk

A seguir será feito um teste estatístico para descobrir se a utilização do SHA-1 tem o mesmo desempenho do MD5. Como explicado anteriormente, o MD5 é utilizado em alguns dos sistemas que fazem deduplicação de dados, e que apesar da probabilidade de colisão de hashes existir tanto no MD5 como no SHA-1, já se tem registro de colisão de hashescom MD5 mas ainda nenhum registro desse problema com o SHA-1. Se os dois algoritmos tiverem um desempenho similar ou se o desempenho do SHA-1 for inferior ao MD5 mas não à ponto de anular a vantagem da falta de registro com colisão de hashes, não há motivos para não escolher o SHA-1 como algoritmo de hashing padrão para o Dedupeer File Storage.

Todos os valores de p podem ser encontrados na Tabela6.1, esse é o valor utilizado para identificar se os dados capturados seguem a curva normal, e com isso saber qual

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

p-values 128KB 64KB 32KB 16KB 8KB

MD5 0,674511 0,621354 0,198659 0,0330624 0,293449 SHA-1 0,903653 0,868695 0,258855 0,44823 0,0219761

Tabela 6.1 p-values para os dados capturados na operação de armazenamento

método estatístico utilizar. Todos os valores vão ser exibidos na tabela para caso alguém queira fazer teste com outro tamanho de chunk.

Na Tabela6.1serão mostrados os valores de p dos dados da operação de armazena- mento. O intervalo de confiança adotado para os testes foi de 95% ou seja, caso o valor de pseja maior que o nível de significância, que é 0,05, o T-Test pode ser selecionado, caso contrário, a análise será feita através de um teste não-paramétrico, já que o tamanho da amostra é inferior à 40 e o T-Test só deve ser feito com dados não normais se a amostra tiver tamanho superiores à 40.

Para analisar qual o algoritmo se comporta melhor na operação de armazenamento, vai ser feito um T-Test emparelhado com as amostras coletadas com 32KB, pois todos os dados são normais, o que torna a análise mais fácil. Como hipótese nula, será considerado que a média de tempo gasto para duas amostras são iguais, e como hipótese alternativa será considerado que a média de tempo gasto para a operação de armazenamento com MD5 é maior do que com SHA-1.

H0: µ0− µ1= 0 vs. H1: µ0> µ1

Aplicando o T-Test emparelhado, resultou em um p-value 0,695936. Como o p-value é maior do que 0,05, não devemos rejeitar a hipótese nula, logo, não podemos afirmar que a média de tempo com MD5 é maior do que com SHA-1.

Operação de deduplicação

Os dados obtidos a partir das 14 execuções de deduplicação estão plotados nos Gráficos6.4e6.5. Com a análise desses dados é possível avaliar apenas o desempenho do algoritmo de deduplicação desenvolvido e utilizado no Dedupeeer File Storage, pois os dados registrados nessas execuções foram o tempo necessário para o algoritmo buscar os chunksdentro do arquivo a ser enviado para armazenamento. Logo, os valores plotados nesse gráfico se referem ao tempo entre o início e o fim da deduplicação apenas, o qual engloba os seguintes passos: a busca da informações dos chunks armazenados no sistema, a montagem da estrutura de dados para comunicação com a biblioteca através do Thrift, a procura dos chunks dentro do arquivo pela biblioteca Dedupeer, a criação da estrutura

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

de dados com o mapeamento dos chunks e das referências aos chunks duplicados, e o retorno da estrutura através do Thrift para o Dedupeer File Storage.

Figura 6.4 Tempo em milissegundos das execuções da operação de deduplicação, separadas por tamanho de chunk, utilizando SHA-1

Figura 6.5 Tempo em milissegundos das execuções da operação de deduplicação, separadas por tamanho de chunk, utilizando MD5

Da mesma forma que na operação anterior, a comparação do tempo para cada tamanho de chunk está no apêndice, na seçãoC.2.

Analisando os dados obtidos das execuções de deduplicação, percebe-se que o algo- ritmo de deduplicação utilizando o SHA-1 obteve um desempenho superior ao mesmo

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

algoritmo utilizando MD5. A média de tempo foi bem significativa, para 128KB o SHA-1 obteve uma média de 36553 milissegundos para executar a operação, enquanto que com MD5 o tempo médio foi de 133255 milissegundos. Com chunks de 8KB de tamanho a diferença entre as médias foi menor, o tempo para o MD5 (227582 ms) foi menos de duas vezes maior do que o do SHA-1 (118409 ms).

Apesar da média do tempo ser significativamente maior utilizando MD5 em relação ao SHA-1, é preciso fazer a análise estatística para confirmar se com esses dados é possível saber qual o algoritmo de hashing torna a deduplicação mais eficiente.

Para analisar qual o algoritmo se comporta melhor na operação de deduplicação, o T-Test emparelhado foi feito para as amostras de 16KB.

Da mesma forma que o teste anterior, como hipótese nula será considerado que a média de tempo gasto para deduplicação é igual entre as amostras, e como hipóteses alternativa será considerado que a média de tempo com MD5 é maior do que com SHA-1.

H0: µ0− µ1= 0 vs. H1: µ0> µ1

Ao aplicar o T-Test emparelhado, o p-value foi 1,03839x10−10. Como o p-value é menor do que 0,05, devemos rejeitar a hipótese nula e aceitar a alternativa. Como a hipótese alternativa deve ser aceita, é concluído que a média de tempo gasta com MD5 para deduplicação é realmente maior do que o tempo gasto com SHA-1, ou seja, para a operação de deduplicação o SHA-1 foi mais eficiente que o MD5.

Operação de deduplicação + armazenamento

Nesta seção será mostrado os dados da operação de deduplicação somada com a operação de armazenamento, que representa a operação completa de deduplicação de um arquivo no sistema de armazenamento.

Nesta operação, os dados capturados também apontam uma vantagem significativa para o SHA-1, esses dados podem ser vistos plotados em gráficos separados por algoritmo de hashing nas Figuras6.6e6.7. A média do tempo calculado para o SHA-1 utilizando chunksde 128KB foi 36552.9 milissegundos, enquanto a médio do MD5 para 128KB foi 249779 milissegundos, ou seja, com o SHA-1 a operação foi em média 6,8 vezes mais rápida que com MD5. Para chunks de 8KB o SHA-1 teve média de 118409 milissegundos, e o MD5 de 1213682 milissegundos. Com chunks de 8KB o SHA-1 foi em média 10,2 vezes mais rápido.

Os gráficos emparelhados dessa operação separados por tamanho de chunk também estão no Apêndice, especificamente nessa seçãoC.3.

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

A hipótese nula foi definida como a média de tempo gasto para deduplicação + armazenamento sendo igual tanto para o MD5 como SHA-1, e como hipótese alternativa considerando que o tempo com MD5 é diferente com SHA-1.

H0: µ0− µ1= 0 vs. H1: µ06= µ1

Como não tem duas amostras normais para serem comparadas, nesse caso será feita a análise a partir do Wilcoxon signed-rank test. O p-value resultante foi 0,00109705, com isso a hipóteses nula deve ser rejeitada e concluímos que o tempo médio entre eles foi diferente.

Figura 6.6 Tempo em milissegundos das execuções da operação de deduplicação + armazena- mento, separadas por tamanho de chunk, utilizando SHA-1

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

Figura 6.7 Tempo em milissegundos das execuções da operação de deduplicação + armazena- mento, separadas por tamanho de chunk, utilizando MD5

Operação de reidratação

Para a operação de reidratação também foram feitas 14 execuções para cada um dos algoritmos de hashing SHA-1 e MD5.

Nas operações de deduplicação os resultados foram diferentes das duas operações anteriores, nesta operação o algoritmo de MD5 foi mais rápido do que o SHA-1. Compa- rando as médias do maior e menor tamanho de chunk testado, para o chunk de 128KB o tempo médio de execução da operação de reidratação com MD5 foi de 43087 milissegun- dos, enquanto o tempo médio do SHA-1 foi 68590,6 milissegundos. Para o chunk de 8KB o MD5 foi pouco mais de 5 vezes mais rápido, tendo média de 226346 milissegundos contra 1166748 milissegundos do SHA-1. Todos os dados das execuções dessa operação podem ser vistos nas Figuras6.8e6.9, e os dados emparelhados por tamanho de chunk estão no ApêndiceC.4.

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

Figura 6.8 Tempo em milissegundos das execuções da operação de reidratação, separadas por tamanho de chunk, utilizando SHA-1

Figura 6.9 Tempo em milissegundos das execuções da operação de reidratação, separadas por tamanho de chunk, utilizando MD5

Para avaliar qual o melhor algoritmo para essa operação, foi definido o teste de hipótese, onde a hipótese nula diz que a média de tempo gasto para a reidratação com MD5 é igual à com SHA-1, e como hipóteses alternativa que a média de tempo com MD5 é menor do que com SHA-1.

6.2. ANÁLISE DE DESEMPENHO UTILIZANDO O CÓDIGO FONTE DO KERNEL DO LINUX

Aplicando o T-Test emparelhado, o p-value foi 6,34527x10−17. Como o p-value é menor do que 0,05, devemos rejeitar a hipótese nula e aceitar a alternativa. Logo, como previsto, é concluído que a média de tempo gasto com MD5 para reidratação é menor do que o tempo gasto com SHA-1, ou seja, para a operação de reidratação o MD5 foi mais eficiente que o SHA-1.

6.2.1

Mapa de chunks deduplicados

Foi desenvolvida uma funcionalidade no Dedupeer File Storage que exibe, em uma barra horizontal, as áreas do arquivo que foram economizadas com a deduplicação aplicada nele. A barra possui duas cores, a azul representa as áreas do arquivo onde o seu conteúdo binário foi salvo no sistema de armazenamento pelo fato de não ter sido encontrado partes duplicadas já armazenadas, e a área pintada de cinza representa as partes do arquivo que foram economizadas no armazenamento, os dados pertencentes à essas áreas foram encontrados como já presentes nos chunks armazenados no sistema e só as referências à eles foram salvas.

Figura 6.10 Mapa de chunks deduplicados da versão 3.10-rc7 do código-fonte do Kernel do Linux processado com os chunks da versão 3.9.8, para chunks com tamanho 128, 64, 32, 16 e 8KB

Este mapa apresentado pode ocultar algumas áreas, pois como as áreas pintadas são proporcionais e a quantidade de chunks do arquivo deduplicado e apresentado na Figura

6.10foi de 66318 na versão de 8KB, chunks deduplicados de forma isoladas podem não ser exibidos pois a área ocupada por eles pode não ser suficiente para que seja exibida na barra de modificações.

Como esperado, a deduplicação com chunk de 128KB foi a que menos economizou espaço, já que para que um chunk fosse identificado como duplicado, seria necessário encontrar uma sequência de dados binários com tamanho de 128KB que pertencesse à versão de 3.9.8.

Para a versão de 128KB o arquivo foi dividido em 4025 chunks dos quais 119 foram deduplicados, o que dá uma economia de aproximadamente 3%. Para 64KB foram