Exadata X4 – Parte II
O lançamento do Exadata X4 trouxe muitas mudanças, principalmente nos Storage Servers. Como disse no outro post as mudanças dos Storage Servers precisam ser detalhadas com mais cuidado, ler nas entre linhas e notas de rodapé. Infelizmente este é um artigo extenso e cheio de detalhes técnicos, mas garanto que a leitura vale o tempo investido.
Discos
O primeiro destaque do X4 está nos discos, especificamente nos discos de alta performance. Eles foram modificados e tiveram o tamanho alterado de 600GB para 1.2TB, mas eles deixaram de ser 15k rpms para ser de 10k rmps, além disso, são discos de 2.5”. E essas mudanças trazem algumas ressalvas.
Se você ler o data sheet do Exadata X3 verá que um full rack X3 com discos de alta performance faz 50.000 IOPS somente com discos. Vamos tentar entender como a Oracle chega nesse valor. Sabendo que um Exadata X3 utiliza discos Seagate (parecidos com esse) podemos utilizar seus parâmetros na fórmula de IOPS. Calcular o IOPS de um disco é simples, basta dividir 1 pela soma da latência rotacional com o tempo de busca do disco, mais detalhes aqui. Para o disco do X3 temos que o IOPS calculado é de 185 ( 1/(0.002 + 0.0034) ), um valor bem próximo do mundo real. Multiplicando isso pela quantidade de discos de um Exadata Full (168 discos) temos 31.080 IOPS. Os IOPS são para o pior caso, leituras não sequenciais feitas diretamente nos discos, sem flash e sem qualquer ordenação dos dados.
Você deve estar pensando, a Oracle mente no data sheet não é? A resposta não é um simples sim ou não. Este artigo traz noções interessantes sobre discos e storage para DBA’s e com base nele tomamos que o melhor IO é aquele em que a cabeça do disco não precisa se movimentar para fazer a leitura, eliminando o tempo de busca. O mesmo disco chegaria a 500 IOPS e um Exadata fazendo busca serial (com os discos já devidamente posicionados) chegaria a 84.000 IOPS.
Infelizmente é praticamente impossível isso ocorrer, então tentamos reduzir o tempo de busca do disco. No Exadata (e em qualquer outro Storage) você faz isso através da divisão entre áreas quentes e frias do disco (hot e cold), mas por quê? Pelo simples fato de que colocando sua área dados (+DATA) na área hot a cabeça dos discos irá se movimentar menos para acessar os blocos de 8k (mais detalhes aqui). Não sei quais os parâmetros que a Oracle usou para calcular os IOPS (porcentagem de leituras sequenciais e tamanhos do bloco, quem já brincou com o IOMeter sabem como isso pode ser gerenciado), mas supondo que o tempo de busca caia para 40% do valor de fábrica do disco chegamos a um valor de 295 IOPS por disco e 49.560 IOPS em um full rack X3. Valor muito próximo do datasheet, mas um pouco subjetivo já que no pior caso temos aproximadamente 30 mil IOPS (um full table scan em uma tabela totalmente desorganizada no disco, o que não é nada comum de ocorrer não é?).
Voltando ao X4 e seus discos de 10k rpms podemos tentar aplicar parâmetros semelhantes (aqui ou aqui) e calcular que cada disco faz aproximadamente 131 IOPS( 1/(0.003 + 0.0046) ) o que daria ao X4 uma performance de 22.008 IOPS em um Full Rack, no melhor caso (sem tempo de busca) chegaria a 55.944 IOPS . Tomando como base os mesmos parâmetros que usamos para os discos do X3 podemos calcular que cada disco do X4 pode fazer 206 IOPS. Isso dá ao X4 um valor de 34.608 IOPS, um valor bem diferente do data sheet.
No mundo real isso pode ser um pouco diferente, mas deixo a pergunta: isso é importante no Exadata? Na minha opinião não muito, explicarei. Se você olhar o Exadata como um todo vai ver que os bancos afetados pelos discos mais lentos seriam as soluções OLTP que fazem leituras aleatórias do disco, mas veja bem, para que existe a flash do Exadata? Ela foi desenhada para que tipos de bases? Exatamente, ela é muito usada por bases OLTP e no X4 o que mais teve alterações (para melhor) foi a flash. Ela está maior, mais rápida e mais inteligente.
A escolha por discos de alta performance com 10mil rpm’s no Exadata X4 não deve ter sido uma escolha fácil para a Oracle, mas o Exadata não é só disco. Nunca devemos ver ele como uma solução de um único caminho. Os discos não são os mais rápidos, ok, mas a flash está ai.
Flash
Falando em flash, temos a mudança mais controversa do Exadata X4. Se você olhar superficialmente o data sheet do X4 e o Techincal Overview vai ver que a mudança da flash gira na adição de espaço (por tamanho e compactação) e velocidade. Infelizmente nem tudo são flores. Uma mudança muito destacada em todos os documentos lançados pela Oracle é a capacidade de compactação nativa da flash e que agora, segundo ela, consegue armazenar até 440TB.
O tamanho da flash realmente aumentou no Exadata X4, agora cada Storage Server tem 4 novas placas F80 totalizando 3.2TB por célula. Isso dá um total de 44.8 TB de flash (RAW). Além disso, as placas flash F80 tem compressão nativa por hardware, e é ai que temos que tomar cuidado.
Se você ler o data sheet do X4 e o White papper verá que o tamanho RAW é de 44.8TB, enquanto o press release e a comparação feita com o X3 (slide 21) vai ver 88TB de espaço RAW. Além disso, em todos os documentos acima existe a informação de que o tamanho efetivo da flashcache é de 440TB.
E é ai que temos que tomar cuidado. A diferença de 44.8TB para 440TB é de 10x, isso quer dizer que a compressão da flash chega a 10x? Sim e não. Se você observar com detalhes na documentação ia ver duas palavras logical e effective e é ai que devemos ter cuidado. Ler com cuidado os detalhes e entender o que a Oracle quis dizer com tamanho lógico e efetivo.
Lendo o data sheet achamos (deixarei em negrito o interessante): “With Flash Cache Compression turned on, a full rack Exadata Database Machine X4-2 provides up to 88 TB of logical flash cache capacity” e também “It is common for hit rates in the Exadata Smart Flash Cache to be over 90%, or even 98% in real-world database workloads…Such high flash cache hit rates mean that Exadata Smart Flash Cache provides an effective flash capacity that is often 10 times larger than the physical flash cache. For example, a full rack Exadata Database Machine X4-2 often has an effective flash capacity of 440 TB.”.
Complementando um pouco, temos as estas linhas tiradas dos documentos e imagem abaixo: “Flash Cache Compression benefits vary based on the compressibility of the user data. Tables that are uncompressed will see the largest benefits… OLTP applications will often see the overall logical size of the flash cache double even if they use Advanced Row compression. Tables that use Hybrid Columnar Compression or LOB Compression will see minimal additional compression since these are already very highly compressed formats.”
Perceberam as palavras em negrito? Sinceramente logical não significa nada para mim (não bate com nenhuma definição conhecida) e effective seria a capacidade total disponível se a compactação tivesse sucesso. Tudo isso quer dizer que SE o seu dado permitir compactação ele poderá ser compactado de 2x até 10x. Uma associação que eu acredito ser errada é ligar a taxa de cachê hit com o tamanho da flash, acerto em cachê nunca permitiu armazenar mais dados, mas sim quais dados armazenar. Se você ler nas entrelinhas perceberá que os números tem como base uma análise do que foi observado em outros Exadatas de outros clientes, mas isso não quer dizer que podem ser aplicados ao seu modelo.
Deixando um pouco de lado essas informações de marketing o que temos no mundo real? Basicamente você com certeza irá observar dados que podem ser compactados na flash. Realmente o flash cachê tem um alto cachê hit e nele estão os dados mais acessados. Em um ambiente OLTP o que será mais utilizado, dados tabulares ou LOBS? Então, os dados tabulares serão compactados nativamente pela flash, permitindo sim armazenar mais que os 44.8TB da flash.
Observe que se você fizer um simples 2 para 1 na compactação da flash ela pode armazenar até 88TB e isso já representa quase o tamanho completo do Exadata X4 com discos de alta performance. Um X4 com discos de alta performance tem (após o mirror do ASM) a capacidade de armazenar 90TB de dados.
Isso tudo é mundo legal, mas pode custar caro. A compressão da flash está ativa por padrão, mas depende do licenciamento do Advanced Compression Option (slide 22). Nem todo o cliente tem o Advance Compression licenciado no seu Exadata, e todas as vantagens da compressão da flash podem ser jogadas fora.
1 + 1 = 4
Você deve estar pensando que o X4 não é tudo isso e o marketing está tentando nos enganar. Felizmente você está errado. O Exadata X4 foi uma grande mudança, a mais significativa desde o surgimento do V2.
Se você olhar de forma isolada a mudança dos discos verá que eles perderam performance, isso é verdade. Mas se você colocar na conta a flash verá que você esta ganhando. Os IOPS providos pela flash do X4 são (só para leitura) 2,660,000 um aumento de 77% comparado com a flash do X3. Assim somando tudo no final você tem sim um Exadata muito mais rápido que as versões anteriores.
Uma conta que poucos fazem é o impacto da compressão tem sobre os IOPS. Dados compactados reduzirão IOPS, principalmente de discos. Além disso, os blocos são enviados compactados diretamente a memória do banco de dados, consequentemente mais dados podem ser entregues usando menos rede. Percebeu como mais é menos? Se você fosse trafegar os mesmos dados de forma descompactada, qual a largura de dados/rede necessária?
As mudanças dos discos mais as mudanças da flash chegamos a um resultado bem interessante. No Exadata nunca podemos observar só um ponto, é um solução completa. Um conjunto de funcionalidades que são complementares. Exadata não é somente hardware, é hardware+software+inteligência.
Este post também foi publicado no meu blog.