• Nenhum resultado encontrado

Desempenho do Subsistema de Armazenamento

3.4 Discussão

4.3.4 Desempenho do Subsistema de Armazenamento

O desempenho do subsistema de armazenamento foi avaliado (através do FIO) tendo em conta o seu propósito que, genericamente, é o de albergar máquinas virtuais numa infraestrutura OpenStack; em particular, os discos presentes no subsistema vão consti- tuir uma ou mais pools de armazenamento para o Ceph, um sistema de armazenamento baseado em objetos (ou object-based storage). As VMs, por sua vez, podem subdividir-se em dois grupos: o de imagens, ou templates, que são objetos maioritariamente de leitura a partir dos quais se criam, por clonagem, as instâncias (as VMs) que são depois executa- das, e que constituem o segundo grupo de objetos, estes agora com um padrão variado de leituras e escritas.

Há assim três fases distintas no acesso aos objetos que representam as instâncias: fase de arranque (boot), em que o objeto-instância é essencialmente lido pelo hipervisor para criar a imagem em memória da VM; fase de operação, ou produção, na qual a VM gera um tráfego de leitura/escrita sobre o objeto que depende em muito da aplicação que esta executa; e fase de shutdown, em que o tráfego é geralmente de escrita, e relativamente pouco.

Em face do anteriormente exposto decidimos efetuar três análises de desempenho distintas ao subsistema de armazenamento: na primeira, avaliamos as suas capacida- des “brutas” (raw) medindo as Larguras de Banda (LB) e número de operações de E/S (IOPS) em função do número de discos, da sua distribuição pelos armários, e do seu agrupamento em volumes RAID-0; na segunda, avaliamos os mesmos parâmetros (LB e IOPS) para várias configurações do Ceph - função do número de servidores de objetos (OSDs) e do grau de redundância/replicação desejado; finalmente, avaliamos os tempos de criação (clonagem), arranque e shutdown de VMs.

4.3.4.1 Desempenho “bruto” de uma Unidade do Subsistema de Armazenamento

Os testes de desempenho aos discos físicos - acesso ao nível do block device - em “raw”, ou seja, não-formatados, destinam-se a avaliar os limites de cada componente: discos, armários e interconexões (disco/adaptador do armário e armário/adaptador do servi- dor). Como estamos em presença de interligações não-partilhadas, i.e., cada armário está ligado a um único servidor, não nos interessa usar os mecanismos de redundância oferecidos pelos adaptadores RAID, deixando essa tarefa para o Ceph; assim, testamos unicamente agrupamentos de discos em RAID-0, aproveitando o aumento de largura de banda oferecido por este nível RAID.

Os testes destinam-se a determinar as duas métricas fundamentais para um sistema de armazenamento: a sua Largura de Banda (LB) e o número de operações que é capaz de executar por segundo (IOPS), tanto em leitura, como em escrita. Como ambas dependem da dimensão do buffer usado na operação, e como a dimensão por omissão de um “seg- mento Ceph” é de 4 MB, realizamos testes para dimensões de buffer compreendidas entre 4 KB (dimensão típica de um acesso a um sistema de ficheiros “instalado” num sistema

4. AVALIAÇÃOEXPERIMENTAL 4.3. Ambiente de Testes

de operação com páginas de 4 KB) e 16 MB.

Desempenho de uma Unidade de Disco

As Figuras 4.3 e 4.4 mostram os valores obtidos para a LB e IOPS em leitura e escrita; os testes foram executados usando operações de leitura e escrita síncronas, e que não usam a cache do sistema de operação, o que se consegue usando a opção O_DIRECT no open() do “raw device”, nem a cache do adaptador PERC H830, no qual foi também desativado o mecanismo de read-ahead. São apresentadas várias curvas de desempenho, com etique- tas tais como “JBOD” e “RAID-0 Bloco = . . . ”; tais etiquetas são usadas para descrever a configuração adaptador/disco. Assim, a etiqueta JBOD é usada para assinalar uma confi- guração em que o adaptador acede ao disco da forma mais “pura”, e com um mínimo de overhead, enquanto que as etiquetas do tipo “RAID-0 Bloco = . . . ” assinalam que o disco se comporta como um disco constituinte de um grupo RAID-0, sendo em cada acesso movimentados o número de blocos necessários para perfazer a dimensão especificada na etiqueta.

(a) Leitura sequencial.

(b) Escrita sequencial.

Figura 4.3: Largura de banda para um disco isolado, e um volume RAID-0 formado por um único disco, e com uma dada stripe size.

4. AVALIAÇÃOEXPERIMENTAL 4.3. Ambiente de Testes

Em resumo, a LB em leitura sequencial começa com um valor de 98 MB/s, muito elevado para um buffer de 4 KB, e cresce progressivamente até atingir os 188 MB/s, um pouco acima do valor máximo especificado pelo fabricante que, recorde-se, era de 175 MB/s. Para a escrita sequencial o comportamento é idêntico, sendo que o valor máximo atingido é de 170 MB/s. Note-se ainda que a interposição do mecanismo RAID tem um overhead muito pequeno. É possível que o valor anormalmente elevado encontrado na leitura se deva à cache interna do disco (16 MB) e a um mecanismo de read-ahead, também interno à unidade, e que é ativado ao ser observado o padrão sequencial de acessos em leitura; e, como a escrita foi especificada como write-through, o efeito da cache interna é, nesse caso, nulo.

O teste de desempenho em acesso aleatório permite obter o valor de operações por segundo; a Figura 4.4 mostra o desempenho de um disco em leituras e escritas aleatórias.

(a) Leitura aleatória.

(b) Escrita aleatória.

Figura 4.4: IOPS para um disco isolado, e um volume RAID-0 formado por um único disco, e com uma dada stripe size.

4. AVALIAÇÃOEXPERIMENTAL 4.3. Ambiente de Testes

Os testes de desempenho em acesso aleatório, atingiram um máximo de 216 IOPS para leituras com acessos de 16 KB, e um máximo de 164 IOPS para escritas com buffer de 4 KB, ambos obtidos com a configuração JBOD. Novamente se nota que o overhead do RAID é relativamente pequeno.

Desempenho com Múltiplas Unidades de Disco num Armário

Para avaliar a forma como evolui o desempenho do subsistema à medida que se adici- onam discos, começamos por avaliar o desempenho adicionando sucessivamente discos a um único armário, e formando com estes um único volume RAID-0, tendo-se ensai- ado com diferentes valores para a dimensão do buffer de acesso. A Figura 4.5 mostra as larguras de banda assim obtidas tanto em leitura como em escrita sequencial.

(a) Largura de Banda em leitura.

(b) Largura de Banda em escrita.

Figura 4.5: Evolução da LB num volume RAID formado por um número crescente de discos colocados num único armário.

Os resultados obtidos mostram um efeito muito positivo do aumento do número de discos na evolução da LB, para acessos em leitura; todavia os resultados são dececionan- tes ao nível da escrita, indicando claramente a necessidade de se dispor de caching tanto

4. AVALIAÇÃOEXPERIMENTAL 4.3. Ambiente de Testes

ao nível do adaptador RAID como ao nível do sistema de operação e sistema de ficheiros do servidor.

De seguida, mostramos os resultados conseguidos ao nível dos IOPS quando incre- mentamos o número de discos que constituem um volume RAID-0, tendo colocado todos os discos num único armário e feito variar a dimensão do buffer de leitura ou escrita ale- atória.

(a) IOPS em leitura.

(b) IOPS em escrita.

Figura 4.6: Evolução do número de IOPS num volume RAID formado por um número crescente de discos colocados num único armário.

Os testes de IOPS com operações de leitura aleatória apresentam valores elevados, quando comparado com operações de escrita aleatória; novamente, os IOPS diminuem à medida que o tamanho do bloco aumenta. O volume RAID-0, com dois discos atinge 199 IOPS com um tamanho de bloco do RAID, com operações de 4 KB. Os IOPS tendem em aumentar ligeiramente com um maior número de discos no volume RAID-0, chegando a 232 IOPS com operações de leitura de 4 KB com 11 discos. Aumentando a dimensão do bloco a ser lido, permite obter 18 IOPS para dois discos.