Oracle e SSD – Parte II

Após um arduo período de estudos e preparações para a OCP, volto com a sequência de posts sobre Oracle e dispositivos SSD. Nesta segunda parte falarei sobre os fundamentos da tecnologia de dispositivos SSD.

Lembrando mais uma vez que essa série de posts é baseada em uma série de autoria de Guy Harrison (http://guyharrison.squarespace.com/ssdguide/) bem como em informações disponíveis diretamente no site/blog da Oracle. As imagens deste post foram inteiramente retiradas do blog de Guy Harrison.

I – Hierarquia de Armazenamento

Dispositivos SSD possuem uma hierarquia de armazenamento de 3 níveis. Isso funciona da seguinte forma:

1º Nível: Bits de informação são armazenados em células

2º Nível: As células (cells) formam as páginas, tipicamente de tamanho de 4K

3º Nível: As páginas (pages) formam os blocos (blocks) de tamanho s que abrangem de 128K à 1MB

NOTA.01: Isso lembra as unidades de armazenamento do Oracle: datablocks formam extents que por sua vez formam os segmentos.

II – Performance de escrita

Operações de leitura, e uma escrita inicial requerem apenas um único page IO. Porém, alterar o conteúdo de uma página requer que um bloco inteiro seja apagado e sobreescrito. Isso pode ser comprovado a partir da imagem abaixo:

III – Resistência de escrita

Operações de escrita possuem outra consequência em dispositivos SSD: Após um certo número de escritas, a célula pode se tornar inutilizável. A isso chamamos de resistência de escrita. É importante mencionar que essa resistência difere entre os diversos dispositivos, mas esta entre 10.000 ciclos para dispositivos MLC e 1.000.000 de ciclos para dispositivos SLC

OBS1: Dispositivos SLC: Single-Level Cell SSD. Nesse tipo de SSD, um único bit é armazenado por célula. Esse tipo de dispositivo apresenta uma densidade menor, e uma performance maior.

OBS2: Dispositivos MLC: Multi-Level Cell SSD. Nesse tipo de SSD, cada célula pode armazenar 2 bits de informação. Esse tipo de dispositivo apresenta uma densidade maior e uma performance menor.

IV – Garbage Collection e Wear Levelling

Grandes empresas fabricantes de SSDs desenvolvem pesquisas e novas tecnologias para as penalidades de performance das operações de “limpeza” de um bloco, bem como da confiabilidade colocada a prova devido a Resistência de escrita. Algorítmos são usados para garantir que operações de limpezas de blocos sejam minimizadas e que operações de escrita sejam igualmente distribuídas através de todo o dispositivo.

Operações de limpeza são evitadas ao usar Free Lists e Garbage Collection. Durante um update, o SSD irá marcar o bloco a ser modificado como invalido (1) e irá copiar o conteúdo atualizado para um bloco vazio, bloco este obtido através da Free List(2). Mas adiante, o Garbage Collector irá recuperar esse bloco inválido, o inserindo em uma Free List(3) para que seja usado por operações subsequentes.

V – Formas de implantação de dispositivos SSD

Dispositivos SSD podem ser implantados em uma das seguintes formas:

1 – SSD conectados através de uma interface SATA. Esse tipo de interface é mais barata que a 3º opção, mas impõe uma perda de performance devido as suas latências de milisegundos

2 – SSD conectados através de uma interface PCI. Podem interfacear diretamente com os servidores, oferecendo assim uma performance otimizada.

3 – SSDs incorporados em multiplas placas PCI em um servidor rack com multiplas interfaces de rede de alta performance.

É isso ai pessoal. Até a próxima parte da série.

Keep Querying

Links para todos os capítulos desta série:

[Oracle] Performance de discos SSD – Parte I
[Oracle] Performance de discos SSD – Parte II
[Oracle] Performance de discos SSD – Parte III
[Oracle] Performance de discos SSD – Parte IV