Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário com Discos de...

Post on 05-Dec-2014

76 views 1 download

description

Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário com Discos de Estado Sólido

Transcript of Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário com Discos de...

AVALIAÇÃO DOS MECANISMOS DE CACHE EM DISPOSITIVOS DE

ARMAZENAMENTO SECUNDÁRIO COM DISCOS DE ESTADO SÓLIDO

Proposta de Dissertação de Mestrado

Aluno: Leonardo Antônio dos Santos

Orientador: Luiz Carlos Erpen de Bona

Co-orientador: Carlos Alberto Maziero

PPGInf - UFPR

SUMÁRIO

• INTRODUÇÃO • ESTRUTURAS DE ARMAZENAMENTO SECUNDÁRIO

• Acesso a disco no Kernel do Linux • Estrutura de Caches no Linux • Dispositivos de Armazenamento • Redundant Array of Inexpensive Disk

• ALGORITMOS DE SUBSTITUIÇÃO DE CACHE • OPT, LRU, LIRS, ARC, MQ

• IMPLEMENTAÇÕES DE CACHE NO LINUX • BCACHE, DMCACHE

• PROPOSTA • Objetivos, Detalhamento; • Resultados Preliminares; • Calendário

PPGInf - UFPR

INTRODUÇÃO (I)

• 60 a 70: revolução da computação; • 70 a 80: era da informação;

• ↑ foco no armazenamento; • Confiabilidade: precisão das informações; • Desempenho: latência e vazão; • Escalabilidade:

• para milhares ou milhões de usuários.

PPGInf - UFPR

INTRODUÇÃO (II)

• Hierarquia do Armazenamento de Dados

• Processamento ↑ versus I/O →

• Voláteis (≥ Flash) versus Não-Voláteis (≤ Flash)

• Hierarquização torna-se necessária • Caches + Algoritmos de Substituição

PPGInf - UFPR

INTRODUÇÃO (III)

• Memória RAM como Cache • Padrão aos SOs.

• SSD como Cache • É viável? • Necessário revisitar:

• Algoritmos de substituição;

• Cache de primeiro nível (RAM);

• Outras formas de melhoria de desempenho (RAID);

• Implementações de cache de segundo nível (SSD).

PPGInf - UFPR

ACESSO A DISCO NO KERNEL DO LINUX (I)

• RAW I/O

• File System I/O

• Direct I/O (sem cache)

PPGInf - UFPR

ACESSO A DISCO NO KERNEL DO LINUX (II)

• RAW I/O

• File System I/O

• Direct I/O (sem cache)

PPGInf - UFPR

ACESSO A DISCO NO KERNEL DO LINUX (I) (FILESYSTEM I/O)

• Interface: • ↑ usuário

• ↓ file system

• O VFS faz o processamento inicial das requisições;

• Seguem o padrão POSIX • open, read, write, lseek

• Disk Caches • File System agnostic

PPGInf - UFPR

• Interface: • ↑ VFS interface

• ↓ File Systems interface

• Cada File System • possui características

próprias;

• implementa as interfaces superiores e inferiores.

ACESSO A DISCO NO KERNEL DO LINUX (II) (FILESYSTEM I/O)

PPGInf - UFPR

ACESSO A DISCO NO KERNEL DO LINUX (III) (FILESYSTEM I/O)

• Interface: • ↑ i-node, offset, size

• ↓ block

• Mapeamento • Feito pelo File System;

• De arquivos solicitados para blocos no disco;

• Depende de fatores como:

• tabelas de indexação

• gerenciamento de espaço livre

• implementação de diretórios

• métodos de alocação

PPGInf - UFPR

ACESSO A DISCO NO KERNEL DO LINUX (IV) (FILESYSTEM I/O)

• Interface • ↑ logical block • ↓ physical block

• Abstrai detalhes dos dispositivos de bloco (físicos ou virtuais) para as camadas superiores;

• LVM, RAID em software e similares são implementados nesta camada;

PPGInf - UFPR

• Sequencia (sort) os setores que serão encaminhados ao dispositivo (LBA);

• Agrupa requisições (merge) de blocos adjacentes;

• Implementações: • Noop • Deadline • Anticipatory • CFQ

ACESSO A DISCO NO KERNEL DO LINUX (V) (FILESYSTEM I/O)

PPGInf - UFPR

• Mantém em RAM dados normalmente acessados em disco;

• Existem 3 tipos:

• Dentry Cache

• Mapeamento em RAM utilizado pelo VFS para tradução de i-nodes

• Page Cache

• Composto por page frames que contêm dados pertencentes a arquivos

• Buffer Cache

• Área em RAM que contém dados dos blocos em disco

ESTRUTURA DE CACHES NO LINUX (I)

PPGInf - UFPR

• Buffer Cache

• Escrita atrasada (write-back)

• Descarga dos buffers em lote com intervalos pré-definidos (30s)

• Estrutura: • Buffer Headers: descreve um bloco em cache

• dirty bit (blk mem ≠ blk disk)

• timestamp (políticas de alocação)

• Hash Table para busca dos buffer headers

• {device, block_number} identificador do bloco

ESTRUTURA DE CACHES NO LINUX (II)

PPGInf - UFPR

• Page Cache • Mais simples que o buffer cache • Opera sobre arquivos (read, write, mmap)

• Não opera necessariamente sobre blocos adjacentes

• Estrutura: • I-node Queue

lista dos descritores de página de determinado arquivo

• Page Hash Table para busca dos descritores de página

• {i-node, offset} identificador da página

ESTRUTURA DE CACHES NO LINUX (III)

PPGInf - UFPR

• A separação entre Page e Buffer Cache foi mantida somente até a versão 2.4 do Kernel, sendo unificados posteriormente;

• Lista das principais operações

ESTRUTURA DE CACHES NO LINUX (IV)

PPGInf - UFPR

• É um dispositivo de armazenamento secundário;

• Útil para armazenamento de grandes quantidades de dados;

• Não-volátil;

• Composição magnética;

• Possui partes mecânicas.

DISPOSITIVOS DE ARMAZENAMENTO (I) HARD DISK DRIVES (HDD)

PPGInf - UFPR

• Limitações: • Tempo de posicionamento (seek time)

• impacta o acesso aleatório

• Velocidade de rotação (rotation time) • Barramento de dados

DISPOSITIVOS DE ARMAZENAMENTO (II) HARD DISK DRIVES (HDD)

PPGInf - UFPR

• Composição eletrônica;

• Baseado em memórias NAND flash; • Armazenam eletrons por tempo indefinido

sem uso de energia;

• Baixo consumo de energia;

• Solid State: pela ausência de partes móveis;

• São versões mais complexas dos SDs e CF (CompactFlash);

• Melhor mídia de armazenamento que os HDDs.

DISPOSITIVOS DE ARMAZENAMENTO (III) SOLID STATE DISK (SSD)

PPGInf - UFPR

DISPOSITIVOS DE ARMAZENAMENTO (IV) SOLID STATE DISK (SSD)

• Operações: • Escrita: programming

• Remoção: erasing

• Leitura: bias-voltage

• Limitações: • Leitura e escrita async

• Escrita ≈2x leitura • Limite de escritas por bloco • Write amplification

• Garbage Collection • Age em um limiar • Evita comprometer

futuras escritas • Wear Leveling

PPGInf - UFPR

• Operações: • Escrita: programming

• Remoção: erasing

• Leitura: bias-voltage

• Limitações: • Leitura e escrita async

• Escrita ≈2x leitura • Limite de escritas por bloco • Write amplification

• Garbage Collection • Age em um limiar • Evita comprometer

futuras escritas • Wear Leveling

DISPOSITIVOS DE ARMAZENAMENTO (V) SOLID STATE DISK (SSD)

(t1)

(t2)

(t3)

(t4)

PPGInf - UFPR

• Arranjo de discos com o objetivo de aumentar o desempenho e/ou garantir a redundância dos dados;

• Desenvolvido inicialmente para melhorar o desempenho dos discos rotacionais;

• aumento do paralelismo

• Garante a redundância;

• espelhamento dos dados

RAID (I)

PPGInf - UFPR

• RAID0

• RAID1

• RAID5

RAID (II)

Abordagens: • Mirroring • Striping • Parity • Hot Sparing

PPGInf - UFPR

• Tem por objetivo manter em cache dados com maior probabilidade de uso posterior;

• Os principais algoritmos estudados são:

• Algoritmo Ótimo (OPT)

• Least Recently Used (LRU)

• Low Inter-Reference Set (LIRS)

• Adaptive Replacement Cache (ARC)

• Multi-Queue (MQ)

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (I)

PPGInf - UFPR

• Não é factível • Baseia-se no futuro;

• Serve apenas como linha de base para outras implementações (I/O hits)

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (II) OPT

PPGInf - UFPR

• Não é factível • Baseia-se no futuro;

• Serve apenas como linha de base para outras implementações (I/O hits)

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (II) OPT

futuro

PPGInf - UFPR

• Considera apenas recência • Baseia-se no passado e é factível;

• Diversas implementações foram propostas tanto em hardware (aproximações) quanto em software;

• Ruim em workloads filescaning e acesso a blocos com frequências variadas;

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (IV) LRU

PPGInf - UFPR

• Considera apenas recência • Baseia-se no passado e é factível;

• Diversas implementações foram propostas tanto em hardware (aproximações) quanto em software;

• Ruim em workloads filescaning e acesso a blocos com frequências variadas;

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (IV) LRU

passado problema!

PPGInf - UFPR

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (V) LIRS

• Desenvolvido para cache de 1º Nível (RAM);

• Busca reduzir os problemas do LRU;

• IRR: Inter Reference Recency • Número de blocos acessados sem repetições entre as duas últimas referências

• Mesmo os blocos com baixa recência podem ser substituídos por conta do IRR;

• Não é adaptativo!

PPGInf - UFPR

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (V) LIRS

• Desenvolvido para cache de 1º Nível (RAM);

• Busca reduzir os problemas do LRU;

• IRR: Inter Reference Recency • Número de blocos acessados sem repetições entre as duas últimas referências

• Mesmo os blocos com baixa recência podem ser substituídos por conta do IRR;

• Não é adaptativo!

PPGInf - UFPR

• Desenvolvido para cache de 1º Nível (RAM);

• Busca reduzir os problemas do LRU;

• IRR: Inter Reference Recency • Número de blocos acessados sem repetições entre as duas últimas referências

• Mesmo os blocos com baixa recência podem ser substituídos por conta do IRR;

• Não é adaptativo!

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (V) LIRS

HIR

LIR

PPGInf - UFPR

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (VI) ARC

• Adaptável a diversos workloads • Detecta mudanças contextuais • Sem tuning manual

• Considera • Recência • Frequência

• Utilizado em caches de 2º nível (SSDs);

• Mantém informações históricas (ghost lists);

• Não conta frequências • MRU: = 1 acesso • MFU: > 1 acesso

PPGInf - UFPR

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (VII) ARC

PPGInf - UFPR

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (VII) ARC

PPGInf - UFPR

• Projetado para caches de 2º nível (SSD);

• Identifica padrões de acesso a 2º nível como diferentes do 1º nível;

• Não requer modificações no primeiro nível de cache; • Mantém blocos com diferentes frequências em diferentes filas LRU;

• Informações históricas são mantidas no history buffer;

• FIFO: sem overhead

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (VIII) MULTI-QUEUE

PPGInf - UFPR

• Função de alocação na cache:

• k = log 2 f (f a frequência de acessos) • Ex.: o 8º acesso a um bloco de Q2 leva o bloco para Q3

• Os blocos saem da cache para o history buffer por Q0

• Queda de fila • tempos lógicos • expireTime = currentTime + lifeTime • currentTime++ a cada rodada • verifica LRU das m filas em cada acesso

ALGORITMOS DE SUBSTITUIÇÃO DE CACHE (IX) MULTI-QUEUE

PPGInf - UFPR

• Implementação Linux para cache de 2º nível com SSDs;

• Opera na camada de blocos (Block Layer) • File System agnostic

• Cria um dispositivo virtual; • Aproveita o que há de melhor nos SSDs e HDDs

de forma transparente através de mecanismos de cache;

IMPLEMENTAÇÕES DE CACHE NO LINUX (I) BCACHE

PPGInf - UFPR

• COW (Copy-On-Write) • Devido a limitação de escrita dos SSDs, evita atualização dos

dados;

• Estrutura: • Log-structured (simples, não espacial, fácil restore)

• B-tree • Algoritmo de substituição: LRU • Parametrização de:

• limites de acesso sequencial (4M)

IMPLEMENTAÇÕES DE CACHE NO LINUX (II) BCACHE

PPGInf - UFPR

• Opera junto ao device-mapper • mais simples, menos intrusivo;

• Algoritmo de substituição: MQ • implementação mais robusta que o BCache;

• Faz uso de 3 dispositivos de armazenamento; • dados • cache • metadados

• Modos de operação: • write-back • write-through • pass-through

IMPLEMENTAÇÕES DE CACHE NO LINUX (III) DMCACHE

PPGInf - UFPR

• Políticas de substituição: • multi-queue • cleaner (para alteração nos dispositivos)

• Parametrização de: • limites de acesso sequencial • limites de acesso aleatório

IMPLEMENTAÇÕES DE CACHE NO LINUX (IV) DMCACHE

PPGInf - UFPR

• Problema: grande variedade de • Implementações • Parametrizações • Algoritmos de substituição • Arranjos • Dispositivos • Cargas de trabalho (workloads)

• Qual é a melhor combinação desses itens para cada workload?

PROPOSTA (I)

PPGInf - UFPR

• Objetivo Geral • Uma análise experimental desses fatores no

cenário do armazenamento de dados restrito ao Linux para uso em conjunto de HDDs e SSDs, em especial, BCache, DMCache e RAID.

PROPOSTA (II)

PPGInf - UFPR

• Objetivos Específicos • analisar o desempenho das implementações de

cache de segundo nível BCache e DMCache para o Kernel Linux;

• verificar as reais vantagens e desvantagens do uso de cache frente a outras abordagens;

• apontar melhores caminhos na escolha dos arranjos de discos e tecnologias;

• identificar falhas e possíveis otimizações para os algoritmos ou para outros detalhes inerentes as duas abordagens.

PROPOSTA (III)

PPGInf - UFPR

• Metodologia Análise experimental através de • Microbenchmarks:

• Para medir o desempenho em situações isoladas;

• Explicar com clareza os macrobenchmarks; • Ferramenta:

• Flexible I/O (fio) • Medição: acesso sequencial e aleatório.

PROPOSTA (IV)

PPGInf - UFPR

• Metodologia Análise experimental através de: • Macrobenchmarks

• Para medição de desempenho em situações próximas às reais;

• Simulação: acesso Webserver, Varmail, Fileserver e Oltp;

• Ferramentas: • Filebench (Webserver, Fileserver, Varmail)

• DBT e/ou TPCC-Uva (Oltp, TPC-C)

PROPOSTA (V)

PPGInf - UFPR

Resultados Preliminares

PROPOSTA (VI)

PPGInf - UFPR

Resultados Preliminares

PROPOSTA (VII)

SSD x HDD

• Leituras sequenciais

• SSD ~ 5x ↑ • Leituras aleatórias

• SSD ~ 50x ↑ • Escritas sequenciais

• SSD ~ 4x ↑ • Escritas aleatórias

• SSD ~ 5x ↑

PPGInf - UFPR

Resultados Preliminares

PROPOSTA (VIII)

HDD x Caches

• Leituras sequenciais

• Cache ~ HDD • Escritas sequenciais

• Cache ~ HDD

PPGInf - UFPR

Resultados Preliminares

PROPOSTA (VIII)

HDD x Caches

• Leituras aleatórias

• DMCache: ↑ 15ª rodada, ~ 4x > Bcache

• BCache: LRU descarta dados importantes

• Escritas aleatórias

• BCache: envia tudo para a cache

• DMCache: é mais seletivo ↓ desempenho

PPGInf - UFPR

• Second Buffer Cache Management • Algoritmo genérico de cache 2º nível, adaptativo: MQ

• Não otimizado para uso em SSDs (para webservers, NFS, CIFS, Samba) • Limitações

• Traces proprietários (MS) • Caches muito pequenos (N1: 1GB, N2: 2MB) • Foco em simuladores

• A Self-Tuning, Low Overhead Replacement Cache • Algoritmo adaptativo: ARC • Possui implementação para Solaris • Limitações

• Testes apenas em cache de 1º Nível • Mostram apenas hit I/O • Workloads sintéticos (sem traces reais) • Caches muito pequenos • Não apresentam outras métricas: uso de CPU e memória

TRABALHOS RELACIONADOS (I)

PPGInf - UFPR

• SSD Buffer Pool Extensions for Database Systems

• Analisa regiões “quentes” do disco com base nos padrões de acesso e leva à cache blocos mais importantes

• Limitações: • De uso especifico para bancos de dados • Testes realizados apenas sobre o banco DB2

• Flashing Up the Storage Hierarchy • Estuda o impacto do tamanho das caches, gerenciamento de

metadados e fluxos de dados sobre configurações hierárquicas (RAM, SSD, HDD)

• Propõe algoritmo para otimizar de ordenação dos dados hierarquicamente

• Limitações • Aplicação focada em bancos de dados

TRABALHOS RELACIONADOS (II)

PPGInf - UFPR

1. Estudar as implementações de cache de 2º nível do Linux

2. Estudar a implementação de RAID do Linux

3. Estudar os benchmarks de disco (micro) e aplicação (macro)

4. Implementar a automatização dos benchmarks

5. Realizar testes e comparações dos arranjos frente a implementações de cache

6. Analisar os resultados obtidos nos testes

7. Escrever a dissertação

8. Preparar Defesa

CALENDÁRIO

PPGInf - UFPR

OBRIGADO!

PPGInf - UFPR