Ceph
Benchmark Ceph Cluster Performance¶
uma das questões mais comuns que ouvimos é ” Como posso verificar se o meu cluster está funcionando com o máximo desempenho?”. Não me admire mais-neste guia, vamos ajudá-lo através de algumas ferramentas que você pode usar para comparar o seu cluster Ceph.
Nota: as ideias neste artigo são baseadas no post de Sebastian Han no blog, post de TelekomCloud no blog e entradas de desenvolvedores e engenheiros da Ceph.
obter estatísticas de desempenho de base *
fundamentalmente, benchmarking é tudo sobre comparação. Você não saberá se o seu cluster Ceph está funcionando abaixo do par, a menos que você primeiro identifique qual é o seu máximo desempenho possível. Então, antes de começar a fazer o benchmarking do seu cluster, você precisa obter estatísticas de desempenho de base para os dois principais componentes de sua infraestrutura Ceph: seus discos e sua rede.
Benchmark Your Disks¶
The simplest way to benchmark your disk is with dd. Use o seguinte comando para ler e gravar um arquivo, lembrando-se de adicionar o oflag parâmetro para ignorar o disco de cache de página:shell> dd if=/dev/zero of=here bs=1G count=1 oflag=direct
Observe a última estatística que indica o desempenho do disco, em MB/s. Realize este teste para cada disco no seu cluster, observando os resultados.Outro fator chave que afeta o desempenho do cluster Ceph é o Rendimento da rede. Uma boa ferramenta para isso é iperf, que usa uma conexão cliente-servidor para medir a largura de banda TCP e UDP.
pode instalar o iperf usando o apt-get install O iperf ou o yum install O iperf.
iperf precisa ser instalado em pelo menos dois nós no seu conjunto. Então, em um de nós, iniciar o iperf servidor usando o seguinte comando:
shell> iperf -s
Em outro nó, inicie o cliente com o seguinte comando, lembrando-se de usar o endereço IP do nó que hospeda o servidor iperf:
shell> iperf -c 192.168.1.1
Nota a largura de banda de estatística em Mbits/seg, como indica a taxa de transferência máxima suportada pelo seu operador de rede.
agora que você tem alguns números de base, você pode começar a benchmarking seu cluster Ceph para ver se ele está lhe dando desempenho semelhante. O Benchmarking pode ser realizado a diferentes níveis: você pode realizar o benchmarking de baixo nível do próprio aglomerado de armazenamento, ou você pode realizar o benchmarking de alto nível das principais interfaces, tais como dispositivos de bloco e gateways de objetos. As secções seguintes discutem cada uma destas abordagens.
NOTA: Antes de executar qualquer um dos benchmarks em secções subsequentes, largue todas as bigodes usando um comando como este:shell> sudo echo 3 | sudo tee /proc/sys/vm/drop_caches && sudo sync
Benchmark a Ceph Storage Cluster¶
Ceph includes the rados bench command, designed specifically to benchmark a RADOS storage cluster. Para usá-lo, criar um pool de armazenamento e, em seguida, usar o banco de rados para executar uma referência de escrita, como mostrado abaixo.
o comando rados está incluído no Ceph.
shell> ceph osd pool create scbench 128 128
shell> rados bench -p scbench 10 write --no-cleanup
isso cria um novo pool chamado ‘scbench’ e, em seguida, executa uma referência de escrita por 10 segundos. Repare na opção — no-cleanup, que deixa para trás alguns dados. A saída lhe dá um bom indicador de quão rápido seu conjunto pode escrever dados.
dois tipos de referências de leitura estão disponíveis: seq para leituras sequenciais e rand para leituras aleatórias. Para realizar uma leitura de referência, use os comandos abaixo:shell> rados bench -p scbench 10 seq
shell> rados bench -p scbench 10 rand
Você pode também adicionar o parâmetro-t para aumentar a simultaneidade das leituras e escritas (padrões para 16 segmentos), ou o parâmetro-b para alterar o tamanho do objeto a ser escrito (o padrão é 4 MB). Também é uma boa idéia executar várias cópias deste benchmark contra diferentes pools, para ver como o desempenho muda com vários clientes.
uma vez que você tem os dados, você pode começar a comparar o conjunto de leitura e escrever estatísticas com os referenciais apenas em disco realizados anteriormente, identificar quanto de um intervalo de desempenho existe (se houver), e começar a procurar por razões.
pode limpar os dados de referência deixados para trás pela referência de Escrita com este comando:
shell> rados -p scbench cleanup
Benchmark a Ceph Block Device¶
If you’re a fan of Ceph block devices, there are two tools you can use to benchmark their performance. O Ceph já inclui o comando rbd bench, mas você também pode usar a popular ferramenta de benchmarking de I/O fio, que agora vem com o suporte construído para dispositivos de bloco de RADOS.
o comando rbd está incluído no Ceph. O suporte RBD na fio é relativamente novo, portanto, você precisará baixá-lo de seu repositório e então compilar e instalá-lo using_ configure && make && make install_. Note que você deve instalar o pacote de desenvolvimento librbd-dev com o apt-get install librbd-dev ou yum install librbd-dev antes de compilar o fio, a fim de ativar o seu suporte RBD.
Antes de usar qualquer uma destas duas ferramentas, no entanto, criar um dispositivo de bloco usando os comandos abaixo:shell> ceph osd pool create rbdbench 128 128
shell> rbd create image01 --size 1024 --pool rbdbench
shell> sudo rbd map image01 --pool rbdbench --name client.admin
shell> sudo /sbin/mkfs.ext4 -m0 /dev/rbd/rbdbench/image01
shell> sudo mkdir /mnt/ceph-block-device
shell> sudo mount /dev/rbd/rbdbench/image01 /mnt/ceph-block-device
o comando rbd bench-write gera uma série de escritas sequenciais para a imagem e mede o rendimento de escrita e latência. Aqui está um exemplo:
shell> rbd bench-write image01 --pool=rbdbench
ou, você pode usar fio para comparar o seu dispositivo de bloco. Um exemplo rbd.o modelo do fio está incluído com o código fonte do fio, que realiza um teste de escrita aleatória de 4K contra um dispositivo de bloco de RADOS via librbd. Observe que você terá que atualizar o modelo com os nomes corretos para o seu pool e dispositivo, como mostrado abaixo.
ioengine=rbd
clientname=admin
pool=rbdbench
rbdname=image01
rw=randwrite
bs=4k
iodepth=32
em seguida, executar fio como segue:shell> fio examples/rbd.fio
Benchmark a Ceph Object Gateway¶
When it comes to benchmarking the Ceph object gateway, look no further than swift-bench, the benchmarking tool included with OpenStack Swift. A ferramenta swift-bench testa o desempenho do seu cluster Ceph simulando o cliente colocar e obter pedidos e medir o seu desempenho.
pode instalar swift-bench usando o pip install swift & & pip install swift-bench.
para usar swift-bench, você precisa primeiro criar um usuário e sub-usuário gateway, como mostrado abaixo:shell> sudo radosgw-admin user create --uid="benchmark" --display-name="benchmark"
shell> sudo radosgw-admin subuser create --uid=benchmark --subuser=benchmark:swift
--access=full
shell> sudo radosgw-admin key create --subuser=benchmark:swift --key-type=swift
--secret=guessme
shell> radosgw-admin user modify --uid=benchmark --max-buckets=0
em seguida, crie um arquivo de configuração para swift-bench em uma máquina cliente, como abaixo. Lembre-se de atualizar o URL de autenticação para refletir o gateway do objeto Ceph e usar o nome de usuário e credenciais corretas.
auth = http://gateway-node/auth/v1.0
user = benchmark:swift
key = guessme
auth_version = 1.0
você pode agora executar uma referência como abaixo. Use o parâmetro-c para ajustar o número de conexões simultâneas (este exemplo usa 64) e o parâmetro-s para ajustar o tamanho do objeto que está sendo escrito (este exemplo usa objetos 4K). Os parâmetros-n E-g controlam o número de objetos a colocar e obter, respectivamente.shell> swift-bench -c 64 -s 4096 -n 1000 -g 100 /tmp/swift.conf
embora a swift-bench mede o desempenho em número de objetos/s, é fácil o suficiente para converter isso em MB/s, multiplicando pelo tamanho de cada objeto. No entanto, você deve ter cuidado ao comparar diretamente com a linha de base de desempenho de disco estatísticas obtido anteriormente, uma vez que uma série de outros fatores também influenciam estas estatísticas, tais como:
- o nível de replicação (e sobrecarga de latência)
- total dados do diário de gravações (deslocamento em algumas situações, os dados do diário de coalescência)
- fsync no OSDs para garantir a segurança dos dados
- sobrecarga de metadados para manter os dados armazenados no RADOS
- sobrecarga de latência (rede, debian, etc) faz com que o readahead mais importante
DICA: Quando se trata de objetos desempenho gateway, não há nenhuma regra dura e rápida que você pode usar para melhorar facilmente o desempenho. Em alguns casos, os engenheiros do Ceph foram capazes de obter um desempenho melhor do que a linha de base usando estratégias inteligentes de caching e coalescing, enquanto em outros casos, o desempenho do gateway objeto foi menor do que o desempenho do disco devido à latência, fsync e metadados overhead.
Conclusion¶
There are a number of tools available to benchmark a Ceph cluster, at different levels: disk, network, cluster, device and gateway. Você deve agora ter alguma visão sobre como abordar o processo de benchmarking e começar a gerar dados de desempenho para o seu cluster. Boa sorte!