- O documento propõe avaliar os mecanismos de cache em dispositivos de armazenamento secundário com SSDs no Linux, comparando implementações como BCache e DMCache sob diferentes workloads e configurações.
- Serão analisados algoritmos de substituição de cache como LRU, MQ e o desempenho de arranjos como RAID.
- O objetivo é identificar as melhores combinações de fatores para cada tipo de workload.
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
Avaliação dos Mecanismos de Cache em Dispositivos de Armazenamento Secundário com Discos de Estado Sólido
1. 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
2. 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
3. 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
4. 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
5. 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
6. ACESSO A DISCO NO KERNEL DO LINUX (I)
• RAW I/O
• File System I/O
• Direct I/O (sem cache)
PPGInf - UFPR
7. ACESSO A DISCO NO KERNEL DO LINUX (II)
• RAW I/O
• File System I/O
• Direct I/O (sem cache)
PPGInf - UFPR
8. 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
9. • 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
10. 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
11. 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
12. • 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
13. • 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
14. • 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
15. • 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
16. • 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
17. • É 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
18. • 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
19. • 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
20. 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
21. • 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
22. • 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
24. • 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
25. • 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
26. • 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
27. • 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
28. • 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
29. 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
30. 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
31. • 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
32. 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
35. • 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
36. • 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
37. • 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
38. • 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
39. • 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
40. • 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
41. • 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
42. • 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
43. • 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
44. • 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
45. • 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
49. 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
50. • 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
51. • 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
52. 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