Exadata X5
Esqueça quase tudo o que você já viu sobre Oracle Exadata, com o lançamento da versão X5 muita coisa mudou. Algumas mudanças de hardware (e conceitos) foram tão significativas que precisam de uma análise mais detalhada. Já faz isso no lançamento do Exadata X3 (aqui) e do Exadata X4 (aqui e aqui) e vou tentar fazer agora.
A cada lançamento de nova versão do Oracle Exadata temos as melhorias básicas de hardware, cpu e memória, agora os database servers tem dois processadores Intel Xeon E5-2699 de 18 cores o que em um full rack dá 288 CPU’s. Quanto a memória, cada database server pode chegar a 768GB de memória o que permite chegar até 6TB de memória em um full rack.
Falando em configurações temos alterações nas versões disponíveis também. Por exemplo, se você vai utilizar Oracle 12c com In-Memory pode ter uma configuração com 16 database servers e 5 storage servers (com discos de alta capacidade) somando assim 576 cores de CPU e 13.3 TB de memória. Basicamente você pode configurar o Exadata com a quantidade que quiser de database servers e storage servers. As opções foram aumentadas para permitir ao Exadata se encaixar em todas as possíveis carga de trabalho.
Também foi adicionada a opção de utilizar Oracle VM no Oracle Exadata. Mas divago quanto a necessidade ou ganhos que você terá. Existem diversos mecanismos para gerenciamento de recursos disponíveis no Oracle Exadata e você não irá querer adicionar mais uma camada (uma não, diversas) entre o banco de dados e o hardware.
Tivemos algumas mudanças de software também, destaco duas: HCC e Exafusion. Para o HCC algumas mudanças na forma como o Exadata Software trata o cache (no flash) para colunas com HCC. Quanto ao Exafusion, agora o binário Oracle conversa direto com o Infiniband e permite uma redução das camadas no meio (entre banco e o hardware) e deixa o ambiente mais rápido.
Essas foram as mudanças mais sutis, ajustes e evoluções naturais mas não foram as principais. Para mim o Exadata X5 resume-se a NVMe. De forma bem simples, agora existe a possibilidade de utilizar discos Flash nos storage server (discos estes ligados no barramento PCIe).
NVMe
NVMe significa Non-Volatile Memory Express e permite conectar discos Flash diretamente no barramento PCIe através de uma placa dedicada. E essa é a principal diferença do novo Exadata, agora chamada de Extreme Flash Storage Servers. O padrão NVMe (link Wikipedia) foi idealizado para conectar discos Flash diretamente no barramento PCIe visando principalmente o paralelismo de acesso as informações. Com NVMe os discos conectados no mesmo barramento podem ser acessados paralelamente sem bloqueios e cada disco tem sua própria fila de requisições, registradores e afins.
Este suporte foi adicionado aos servidores Oracle X5-2/L lançados no início de dezembro (e utilizados por diversos produtos de engenharia da Oracle – Exadata/ZFS). No Exadata X5 substitui os discos de alto desemprenho (que deixarão de ser ofertados).
Falando especificamente do Exadata a solução da Oracle consiste em conectar placas F160 no barramento PCI (duas placas) e ligar os discos Flash (4 em cada placa). O esquema básico pode ser visto neste link. Segundo a especificação os discos são Intel (modelo P3700 pelo que pesquisei) e a placa de conexão ao PCIe é da própria Oracle/Intel.
Sobre os discos algumas coisas interessantes: tem células flash padrão eMLC, suportam 470mill IOPS de leitura randômicos e 170mill para escrita (ambas em 4KB), 2.8GB/s de leitura sequencial e 2.0GB/s de escrita. E tudo isso com latência inferior a 20 μs. Em um Oracle Exadata X5 Full Rack você conseguirá (com 14 servidores Extreme Flash) 4.114 milhões de IOPS e 263GB/s, só em IOPS é praticamente o dobro do Exadata X4 Full Rack com discos de alta performance.
Se você notou cada storage server tem somente 8 discos flash (e não 12 como era até o Exadata X4), mas isso não é um problema já que o total máximo raw em um full rack é de aproximadamente 179TB contra 201TB de um Exadata X4 Full Rack (redução de 11% de espaço raw aproximadamente). Além disso, o total de Flash disponível é RAW e não tem a “mágica” da compactação (como veiculado no Exadata X4) – e isso é bom pois você sabe exatamente o que tem.
Mas os ganhos são mais significativos, pense no NVMe e no paralelismo que você ganha. Agora cada disco pode (teoricamente) ser acessado pelo Exadata Software sem qualquer preocupação de bloqueios ou esperas. Cada disco está disponível sem passar por controladora SAS (que chega a no máximo 12GB/s) e sim diretamente no PCIe (que chega até 32GB/s) como documentado aqui e aqui.
O detalhe chave aqui é a arquitetura, em um ambiente tradicional você “sofre” com o problema da controladora SAS. O padrão SAS foi pensado para discos magnéticos e colocar discos flash atrás de uma controladora SAS irá com toda a certeza limitar os ganhos do Flash.
Discos, NVMe e Cache
Fazendo uma análise um pouco mais detalhada, porque a Oracle fez isso? Porque tornar os discos de alta performance do Oracle Exadata em discos Flash NVMe? Talvez concorrência seja a resposta mais adequada. Acredito que neste momento você já tenha ouvido falar de uma dos players mais conhecidos, o EMC XtremeIO (Storage Flash de alto desempenho da EMC).
O XtremeIO tem um padrão próprio de comunicação entre controladora e discos flash, e entrega desempenho e características de hardware semelhantes aos servidores Oracle com NVMe (falando somente de hardware, nada de software que interprete SQL como o Exadata Software). Tanto que as configurações são parecidas e tem quase o mesmo número quanto a IOPS e GB/s por discos, mas os discos tem a metade da capacidade em GB. De qualquer forma, o concorrente do XtremeIO seja o Storage Flash Oracle FS-1 e não o Oracle Exadata X5.
Claro que não posso deixar de citar o principal diferencial do Oracle Exadata, o Exadata Software desempenha papel fundamental aqui. Se você olhar para um EMC XtremeIO poderá ver números isolados maiores que o Oracle Exadata X5, mas e o ganho que o Exadata Software dá ao ambiente? Já falei de diversos detalhes dele em post recente (aqui). Tenho bancos OLTP com ganhos de 90% só pelo smartscan e cell offfload, como ganhos leia-se redução de 90% sobre o que foi requisitado pelo banco ao storage e o que foi retornado efetivamente. E isso nenhum outro appliance pode dar a você, nenhum outro consegue interpretar os SQL’s enviados e retornar somente os dados necessários.
As vezes algumas modificações podem nem sempre ser vantajosas, o Oracle Exadata X5 quando utilizado com drivers flash NVMe deixa de ter placas dedicadas para o Smart Flash Cache. Isso quer dizer que o NVMe será compartilhado com o Flash Cache, em um Exadata X4 você tem 44TB raw de flash. Usando como base um Oracle Exadata X5 full rack montado com discos de alta capacidade e placas dedicadas para Flash Cache o tamanho dedicado é de aproximadamente 89.6TB. Isso quer dizer que um ambiente com flash NVMe esses TB do Flash Cache terão que ser descontados do tamanho total disponível nos discos NVMe. Vamos ver como isso se comporta.
Mesmo não estando presente no Exadata X5 e suas placas e discos NVMe a Oracle dizia na época do lançamento do X4 que com a compactação nativa do flash você poderia ganhar até o dobro em espaço (o que não deixava de ser verdade), mas já analisei isso no lançamento do Oracle Exadata X4 e as mesmas restrições podem ser vistas aqui. Bancos que tem muitos dados binários (como PDF’s e imagens) podem não ver tantos ganhos assim. E vocês tem de convir comigo que armazenar dados binários em discos flash pode ser um aparente desperdício de recurso.
Algumas explicações quanto as restrições no número de discos flash podem existir. A primeira opção é a falta de conectores PCIe disponíveis parta ter duas placas NVMe, 4 placas Flash Cache e placas Infiniband. Outra, pode ser o consumo de energia de todos os componentes que poderia extrapolar caso as placas Flash Cache fossem adicionadas (existe até um ponto quanto a isso na notas do NVMe para servidores X5).
Futuro
Acredito que tenha ficado claro que estamos em um caminho sem volta, o uso de discos flash em ambientes de banco de dados (e em diversos outros) será cada vez maior. Infelizmente muitos dos conceitos que aprendemos com discos HDD não podem ser utilizados, até mesmo o que sabemos sobre discos SSD podem não ser útil e verdadeiro em ambientes empresariais. Como visto, discos Flash com capacidade NVMe são diferentes de discos SSD padrões. Siglas como SLC, MLC, eMLC e TDC se tornarão comuns, conceitos e detalhes como Write Cliff e Garbage Collector deverão ser conhecidos e até o básicos como blocos e páginas precisam ser revistos.
Claro que o Oracle Exadata X5 com discos Flash NVMe é dedicado a um nicho específico, bancos OLTP com média mínima de 70% de leituras sobre escritas. Sabe-se que flash tem vida útil limitada quanto a escritas e leituras (além de detalhes como Garbage Collector). Por isso espera-se utilizar NVMe em ambiente onde leituras são grande maioria.
A opção da Oracle em disponibilizar discos Flash NVMe para o Oracle Exadata X5 pode ser arriscada, compartilhar eles com o Smat Flash Cache é ainda mais. Acho interessante o que a Violin Memory faz, discos SSD foram abandonados e substituídos por placas flash. Acredito que seria uma opção mais interessante do que usar discos e pularia algumas etapas, mas um passo de cada vez na abriga pelo mercado de Storage Flash (aqui, aqui e aqui).
Estar atualizado quanto a conceitos novos de Flash ajudará muito na vida de um DBA (independente se for Oracle Exadata ou não). Conhecendo isso e analisando aos requisitos do seu ambiente você poderá montar um ambiente ideal as suas necessidades. Se quiser cortar etapas (e podendo pagar) você já tem o conjunto ideal no Oracle Exadata X5, hardware + software ajustados para bancos de dados Oracle, basta saber usá-lo.
O Oracle Exadata X5 foi um lançamento interessante, temos que ver como será na prática.
Este artigo também está publicado no meu blog pessoal neste link.