O benchmark de aplicativo Sysbench OLTP é executado em cima de um banco de dados MySQL executando o mecanismo de armazenamento InnoDB. O trabalho do mecanismo de armazenamento é gerenciar a interface do banco de dados em disco para os aplicativos que leem e gravam dados de e para o mecanismo de armazenamento. O mecanismo de armazenamento, por sua vez, gerencia threads e logs de E/S e mantém um cache na memória para minimizar o acesso ao disco. O gráfico abaixo dá uma visão geral simplista do motor.
O benchmark de aplicativo Sysbench OLTP é executado em cima de um banco de dados MySQL executando o mecanismo de armazenamento InnoDB. O trabalho do mecanismo de armazenamento é gerenciar a interface do banco de dados em disco para os aplicativos que leem e gravam dados de e para o mecanismo de armazenamento. O mecanismo de armazenamento, por sua vez, gerencia threads e logs de E/S e mantém um cache na memória para minimizar o acesso ao disco. O gráfico abaixo dá uma visão geral simplista do motor.
Como o mecanismo InnoDB mantém um cache na memória chamado buffer pool, o desempenho será diretamente afetado pela proporção do tamanho do conjunto de trabalho para o tamanho do buffer pool. Em outras palavras, se o pool de buffers for grande o suficiente para conter o conjunto de trabalho ou o conjunto de trabalho for pequeno o suficiente para caber no pool de buffers, a maioria das operações nunca será vinculada a E/S. No entanto, se o banco de dados for muito grande para caber na memória, o desempenho de E/S ditará os tempos de resposta transacional e o throughput. Estamos caracterizando o desempenho da unidade nesta situação em que o banco de dados não cabe na memória, o que leva ao aumento do tráfego de E/S do mecanismo de armazenamento InnoDB.
Múltiplos encadeamentos (o número depende da configuração do banco de dados para aplicativos de alto desempenho e varia de 32 a 128) leem dados de maneira aleatória do armazenamento de apoio com um tamanho de bloco de 16 Kbytes. Essas leituras estão relacionadas a consultas de banco de dados que solicitam dados do armazenamento de apoio. À medida que as leituras são processadas, elas são automaticamente armazenadas em cache no buffer pool. À medida que o pool de buffers é preenchido, o InnoDB usa uma política LRU (menos usada recentemente) para remover páginas mais antigas e liberar espaço para dados mais recentes.
As gravações do banco de dados são primeiro direcionadas para o log de transações e para o buffer pool. O log de transações é um buffer de anel gravado sequencialmente que é atualizado para cada transação de gravação. Dependendo da configuração do MySQL, esta atualização pode levar a uma gravação imediata no disco ou pode persistir temporariamente na RAM como um buffer que eventualmente é liberado para o disco pelo sistema de arquivos. O tamanho desse buffer de log varia, mas geralmente fica em torno de 256 MB. As configurações recomendadas para conformidade com ACID exigem que as gravações de log atinjam o disco em cada confirmação do banco de dados. Essas gravações têm 4 K de comprimento.
O log só faz escritas “fisiológicas” onde se escreve o delta entre os dados anteriores e os novos dados. Para os dados originais, o InnoDB grava no buffer pool na RAM, que também deve ser drenado de forma assíncrona. O processo de gravar os dados de volta no sistema de arquivos é configurável e ocorre em segundo plano. As gravações também são 16K. As gravações são, na verdade, gravações duplas em que o mecanismo primeiro grava os dados em um local intermediário chamado buffer de gravação dupla. O mecanismo então copia esses dados para seu local final no sistema de arquivos. Isso é necessário para evitar o problema de “página rasgada” em que uma página de banco de dados de 16 KB é parcialmente gravada no disco devido a uma perda de energia ou outro evento catastrófico.
Origens do benchmark Sysbench
Trouxemos a configuração de teste do Sysbench para o nosso laboratório após várias conversas com mícron sobre como eles simulam ambientes reais de aplicativos MySQL para teste e medição de SSD. Eles desenvolveram uma metodologia de teste em torno do Sysbench depois de descobrir que os benchmarks de armazenamento sintético raramente forneciam uma visão completa de como uma unidade se comportaria sob uma determinada carga de trabalho de aplicativo. O teste Sysbench permite que a Micron simule um ambiente que represente mais de perto uma carga de trabalho de banco de dados MySQL padrão, que prevalece em aplicativos como Facebook, Craigslist e Booking.com
Trabalhamos em estreita colaboração com Moussa Ba, que ajudou a co-autor deste artigo. Moussa é engenheiro de software da equipe de desenvolvimento de PCIe da Micron, onde seu trabalho inclui otimização de software de sistema e aplicativo para dispositivos I/O de alto desempenho.
Referência OLTP do Sysbench
Sysbench é um benchmark de desempenho do sistema que inclui um perfil de teste OnLine Transaction Processing (OLTP). O teste OLTP não é uma aproximação de um teste OLTP, mas sim um verdadeiro benchmark baseado em banco de dados que conduz consultas transacionais a uma instância do MySQL em um ambiente CentOS.
A primeira etapa na configuração do benchmark é criar o próprio banco de dados, o que é feito especificando o número de tabelas no banco de dados, bem como o número de linhas por tabela. Em nosso teste, definimos 100 tabelas com 10 milhões de linhas cada, o que resultou em um banco de dados de 1 bilhão de entradas. Esse banco de dados tinha 260 GB.
O Sysbench possui dois modos de operação: o modo padrão que lê e grava no banco de dados e um modo somente leitura. O modo R/W padrão executará os seguintes tipos de consulta: 5 consultas SELECT, 2 consultas UPDATE, 1 consulta DELETE e 1 INSERT. Observando as contagens de E/S, a taxa de leitura/gravação observada é de cerca de 75% de leituras e 25% de gravações.
Ambiente de Teste Sysbench
As soluções de armazenamento são testadas com o benchmark Sysbench OLTP no Laboratório de teste StorageReview Enterprise utilizando servidores autônomos. Atualmente, utilizamos PowerEdge R730s de canal comercial da Dell para mostrar desempenho realista e uma sólida relação preço/desempenho, alterando apenas o adaptador de armazenamento ou a interface de rede para conectar nosso R730 a diferentes produtos de armazenamento. O PowerEdge R730 provou oferecer grande compatibilidade com dispositivos de terceiros, tornando-o uma excelente plataforma para este ambiente de teste diversificado. O R730 também aproveita a poderosa arquitetura de classe Haswell da Intel, que nos dá o poder de computação para enfatizar adequadamente uma ampla variedade de ofertas de armazenamento e maximizar seu potencial de desempenho.
Ambiente de referência Sysbench de primeira geração
Lenovo ThinkServer RD630 – Plataforma de teste SATA/SAS/PCIe
- 2594-ABU Modelo mais vendido
- CPUs Intel E5-2650 duplas (2.0 GHz, 8 núcleos, cache de 20 MB)
- 128 GB de RAM (8 GB x 16 DDR3, 64 GB por CPU)
- 100 GB mícron SSD RealSSD P400e (via LSI 9207-8i) Unidade de inicialização
- 960 GB Micron M500 (via 9207-8i) Armazenamento de banco de dados pré-construído
- CentOS 6.3 64 bits
- Percona XtraDB 5.5.30-rel30.1
- Tabelas de banco de dados: 100
- Tamanho do banco de dados: 10,000,000
- Segmentos de banco de dados: 32
- Memória RAM: 24 GB
Ambiente de referência do Sysbench de segunda geração
Dell PowerEdge R730 – plataforma de teste SATA/SAS/PCIe
- CPUs duplas Intel E5-2690 v3 (2.6 GHz, 12 núcleos, 30 MB de cache)
- 256 GB de RAM (16 GB x 16 DDR4, 128 GB por CPU)
- SSD de inicialização de 100 GB, SSD de armazenamento de banco de dados de 480 GB
- 2 x Adaptador Mellanox ConnectX-3 InfiniBand
- 2 x Emulex 16GB FC HBA de porta dupla
- 2 x NIC de porta dupla Emulex 10GbE
- CentOS 6.6 64 bits
- Percona XtraDB 5.5.30-rel30.1
- Tabelas de banco de dados: 100
- Tamanho do banco de dados: 10,000,000
- Segmentos de banco de dados: 32
- Memória RAM: 24 GB
Dell PowerEdge R730 Virtualized Sysbench Cluster de 4 nós
- Oito CPUs Intel E5-2690 v3 para 249 GHz em cluster (dois por nó, 2.6 GHz, 12 núcleos, cache de 30 MB)
- 1 TB de RAM (256 GB por nó, 16 GB x 16 DDR4, 128 GB por CPU)
- Inicialização do cartão SD (Lexar 16 GB)
- 4 adaptadores Mellanox ConnectX-3 InfiniBand (vSwitch para vMotion e rede VM)
- 4 x Emulex 16GB FC HBA de porta dupla
- 4 x NIC de porta dupla Emulex 10GbE
- VMware ESXi vSphere 6.0 / Enterprise Plus 8-CPU
O principal objetivo dessa plataforma é destacar o desempenho do armazenamento corporativo em um ambiente e carga de trabalho corporativos reais, em vez de depender de cargas de trabalho sintéticas ou pseudosintéticas. Os geradores de carga de trabalho sintético são ótimos para mostrar o desempenho dos dispositivos de armazenamento com um padrão de E/S sintético contínuo, mas não levam em consideração nenhuma das outras variáveis externas que esclarecem como os dispositivos realmente funcionam em ambientes de produção. Os geradores de carga de trabalho sintético têm o benefício de mostrar um padrão de E/S limpo repetidamente, mas nunca replicarão um verdadeiro ambiente de produção. A introdução do desempenho de aplicativos em produtos de armazenamento começa a mostrar como o armazenamento interage com seus drivers, o sistema operacional local, o aplicativo sendo testado, a pilha de rede, a comutação de rede e os servidores externos. Essas são variáveis que um gerador de carga de trabalho sintético simplesmente não pode levar em consideração, e também são uma ordem de magnitude mais intensiva em recursos e infraestrutura em termos do equipamento necessário para executar esse benchmark específico.
Resultados gerais de desempenho do Sysbench
Testamos uma ampla variedade de soluções de armazenamento com o benchmark Sysbench OLTP que atende aos requisitos mínimos do ambiente de teste. Para se qualificar para o teste, o dispositivo de armazenamento deve ter uma capacidade utilizável superior a 260 GB e ser projetado para operar sob condições corporativas estressantes. Dispositivos de armazenamento conectados localmente, como SSDs SAS, SATA e PCIe, são testados em um servidor bare-metal com uma instância Sysbench. As plataformas SAN e hiperconvergentes mais recentes executam 4, 8, 12 ou 16 VMs simultaneamente para mostrar como várias cargas de trabalho operam ao mesmo tempo em cada uma. Essa metodologia de teste ajuda a desmistificar as comparações de desempenho entre os sistemas hiperconvergentes mais recentes e os arrays de armazenamento SAN tradicionais.
Resultados de desempenho do Sysbench virtualizado hiperconvergente/SAN (16 VM agregado)
dispositivo | TPS agregado de 32 fios | Tempo médio de resposta (ms) | Latência do percentil 99 (ms) |
---|---|---|---|
X-IO ISE 860 (4) Dell R730, X-IO ISE 860 AFA (2) Volumes de 10 TB |
6625 | 80 | 418 |
Resultados de desempenho do Sysbench virtualizado hiperconvergente/SAN (12 VM agregado)
dispositivo | TPS agregado de 32 fios | Tempo médio de resposta (ms) | Latência do percentil 99 (ms) |
---|---|---|---|
X-IO ISE 860 (4) Dell R730, X-IO ISE 860 AFA (2) Volumes de 10 TB |
7160 | 54 | 177 |
Resultados de desempenho do Sysbench virtualizado hiperconvergente/SAN (8 VM agregado)
dispositivo | TPS agregado de 32 fios | Tempo médio de resposta (ms) | Latência do percentil 99 (ms) |
---|---|---|---|
X-IO ISE 860 (4) Dell R730, X-IO ISE 860 AFA (2) Volumes de 10 TB |
6568 | 39 | 83 |
VMware Virtual SAN (ESXi 6.0) (4) Dell R730xd, 80 HDDs de 1.2 TB, 16 SSDs de 800 GB |
4259 | 60 | 131 |
Resultados de desempenho do Sysbench virtualizado hiperconvergente/SAN (4 VM agregado)
dispositivo | TPS agregado de 32 fios | Tempo médio de resposta (ms) | Latência do percentil 99 (ms) | Latência de pico (ms) |
---|---|---|---|---|
DotHill Ultra48 Híbrido (4) Dell R730, híbrido DotHill Ultra48 (2) pools RAID14 de 1 discos, 40 HDDs de 1.8 TB, 8 SSDs de 400 GB |
4645 | 28 | 51 | 676 |
X-IO ISE 860 (4) Dell R730, X-IO ISE 860 AFA (2) Volumes de 10 TB |
4424 | 29 | 57 | 983 |
VMware Virtual SAN (ESXi 6.0) (4) Dell R730xd, 80 HDDs de 1.2 TB, 16 SSDs de 800 GB |
2830 | 45 | 94 | 480 |
Nutanix NX-8150 (ESXi 6.0) (4) NX-8150, 80 HDDs de 1 TB, 16 SSDs de 800 GB Volume de banco de dados vDisk RAID0 x 4 |
2390 | 54 | 173 | 4784 |
Nutanix NX-8150 (ESXi 6.0) (4) NX-8150, 80 HDDs de 1 TB, 16 SSDs de 800 GB Implantação de banco de dados padrão |
1422 | 90 | 216 | 5508 |
Acelerador de aplicativos PCIe / Multi-SSD/HDD RAID Sysbench Resultados de desempenho
dispositivo | TPS médio de 32 fios | Tempo Médio de Resposta | Latência do percentil 99 |
---|---|---|---|
Huawei ES3000 2.4 TB SSD PCIe MLC x 1 |
2734.69 | 11.7 | 19.84 |
Huawei ES3000 1.2 TB SSD PCIe MLC x 1 |
2615.12 | 12.23 | 21.80 |
FusionioDrive2 Duo 2.4 TB SSD PCIe MLC x 1 |
2521.06 | 12.69 | 23.92 |
Micron P320h 700 GB SSD PCIe SLC x 1 |
2443.56 | 13.09 | 22.45 |
Micron P420m 1.4 TB SSD PCIe MLC x 1 |
2361.29 | 13.55 | 25.84 |
Fusão ioDrive2 1.2TB SSD PCIe MLC x 1 |
2354.06 | 13.59 | 29.35 |
Virident FlashMAX II 2.2 TB SSD PCIe MLC x 1 |
2278.11 | 14.04 | 26.04 |
LSI Nytro WarpDrive 800 GB SSD PCIe MLC x 1 |
1977.67 | 16.18 | 39.94 |
LSI Nytro WarpDrive 400 GB SSD PCIe MLC x 1 |
1903.14 | 16.81 | 39.30 |
Resultados individuais SAS/SATA SSD
dispositivo | TPS médio de 32 fios | Tempo Médio de Resposta | Latência do percentil 99 |
---|---|---|---|
Toshiba HK3R2 960 GB MLC SATA x 1 |
1673.23 | 19.12 | 49.65 |
SanDisk CloudSpeed Eco 960GB cmLC SATA x 1 |
1556.99 | 20.55 | 49.05 |
Intel S3700 800 GB eMLC SATA x 1 |
1488.71 | 21.49 | 40 |
Toshiba PX02SM 400 GB eMLC SAS (6 Gb/s) x 1 |
1487.03 | 21.52 | 62.02 |
Smart Optimus 400 GB eMLC SAS x 1 |
1477.1 | 21.66 | 52.69 |
OCZ Talos 2C 480GB MLC SAS x 1 |
1438.7 | 22.24 | 47.32 |
OCZ Intrepid 3600 400 GB eMLC SAS x 1 |
1335.3 | 23.96 | 48.42 |
OCZ Talos 2R 400GB eMLC SAS x 1 |
1421.15 | 22.51 | 45.06 |
SanDisk Extreme 480GB MLC SATA x 1 |
1303.48 | 24.55 | 53.56 |
STEC s842 800 GB eMLC SAS x 1 |
1293.56 | 24.74 | 67.20 |
Intel S3500 512 GB eMLC SATA x 1 |
1,287.65 | 24.85 | 64.15 |
Intel S3500 480 GB eMLC SATA x 1 |
1241.59 | 25.77 | 54.27 |
Seagate 600 Pro 400 GB eMLC SATA x 1 |
1198.2 | 26.7 | 62.69 |
Hitachi SSD400S.B 400GB SLC SAS x 1 |
1191.47 | 26.85 | 47.87 |
OCZ Vector 512 GB MLC SATA x 1 |
1130.03 | 28.32 | 62.67 |
SanDisk Extreme II 480 GB MLC SATA x 1 |
981.34 | 32.61 | 102.58 |
Hitachi SSD400M eMLC SAS x 1 |
878.9 | 36.41 | 68.03 |
eSSD da Toshiba SLC SAS x 1 |
758.41 | 42.19 | 140.59 |
Micron M500 480 GB MLC SATA x 1 |
668.6 | 47.86 | 461.80 |