Post on 05-Dec-2014
description
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