Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário com Discos de...
-
Upload
leonardo-santos -
Category
Science
-
view
76 -
download
1
description
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