AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1160422
Accepted
René Nyffenegger
René Nyffenegger
Asked: 2024-06-05 03:03:48 +0800 CST2024-06-05 03:03:48 +0800 CST 2024-06-05 03:03:48 +0800 CST

Posso determinar quanta CPU é usada para calcular a paridade RAID?

  • 772

Eu tenho uma matriz RAID 5 na qual um banco de dados lê e grava pequenas quantidades de dados.

Em circunstâncias normais, as operações do banco de dados, incluindo a confirmação, são executadas em um tempo aceitável. No entanto, quando uma grande quantidade de dados é carregada na matriz RAID (mas não no banco de dados), a confirmação (mas não as outras operações) torna-se inaceitavelmente lenta.

Minha suposição atual é que o commit demora muito porque as informações de paridade precisam ser calculadas e/ou gravadas no disco.

Existe uma maneira de verificar minha suposição, ou seja, existe uma ferramenta que exibe a quantidade de CPU necessária para calcular as informações de paridade e se esse é o gargalo.

Além disso, estou pensando em mudar o array para RAID 10 ou RAID 1. Mas antes de fazer isso, existe uma abordagem científica que me permita estimar se vale a pena o incômodo?

Estou executando o Debian 12 com um RAID de software ( /dev/md/).

raid
  • 1 1 respostas
  • 65 Views

1 respostas

  • Voted
  1. Best Answer
    Max Haase
    2024-06-05T04:38:58+08:002024-06-05T04:38:58+08:00

    Abra vários terminais e fique de olho em top ou htop . Procure especificamente picos no uso da CPU durante confirmações do banco de dados.

    top
    

    ou

    htop
    

    Use iostat para ver quanto tempo a CPU gasta em operações de E/S:

    iostat -x 1
    

    O comando sar pode ser usado para coletar, relatar ou salvar informações de atividade do sistema, que incluem o uso da CPU.

    sar -u 1 5
    

    Fornece uma visão geral do uso da CPU, incluindo o sistema e os tempos de espera de E/S

    Dependendo do controlador RAID ou do software RAID que você está usando, pode haver ferramentas ou logs específicos que podem fornecer informações sobre as operações RAID. Para mdadm, verifique /proc/mdstat para status do RAID. Use iostat -xmd 1 para estatísticas detalhadas de E/S de RAID.

    Além disso, traçar o perfil do processo de confirmação do banco de dados. Use strace para rastrear chamadas e sinais do sistema. Isso pode ajudar a identificar onde o processo passa a maior parte do tempo.

    strace -c -p <database_pid>
    

    Isso resumirá o uso de chamadas do sistema e poderá destacar o tempo gasto em operações de E/S.

    Use perf para criar o perfil do sistema e identificar gargalos.

    perf top
    

    ou

    perf record -a -g
    

    seguido pela

    perf report
    

    Eu acho que você já fez tudo isso.

    É provável que o RAID 10 melhore significativamente o desempenho, mas eu gostaria que ele fosse devidamente documentado com resultados empíricos e revisado antes de emitir alguma RFC. O seguinte exigirá um pouco de esforço, mas definitivamente vale a pena.

    Use ferramentas de benchmarking para medir o desempenho antes e depois das alterações. Ferramentas como fio (Flexible I/O Tester) podem ser usadas para simular cargas de banco de dados e medir o desempenho.

    IMPORTANTE:
    Crie um ambiente de teste separado e isolado para configurar e avaliar um array RAID 10 sem afetar seu sistema de produção atual.

    Execute o benchmark fio em seu array RAID 5 existente :

    fio --name=raid5-test --rw=randwrite --bs=4k --size=1G --numjobs=4 --time_based --runtime=60 --group_reporting --filename=/path/to/raid5/storage
    

    Criar matriz RAID 10 de teste :

    mdadm --create --verbose /dev/md-test --level=10 --raid-devices=4 /dev/sdx /dev/sdy /dev/sdz /dev/sdw
    

    Use discos sobressalentes ou virtuais para esta configuração de teste (/dev/sdx, /dev/sdy, etc.).

    Formatar e montar matriz RAID 10 de teste:

    mkfs.ext4 /dev/md-test
    mkdir /mnt/raid10-test
    mount /dev/md-test /mnt/raid10-test
    

    Execute o fio Benchmark no RAID 10:

    fio --name=raid10-test --rw=randwrite --bs=4k --size=1G --numjobs=4 --time_based --runtime=60 --group_reporting --filename=/mnt/raid10-test/testfile
    

    Compare os resultados do fio dos benchmarks RAID 5 e RAID 10 para avaliar melhorias de desempenho.

    Avalie os resultados

    CPU Usage and I/O Wait:
    Analyze the iostat and strace outputs to identify if CPU usage for parity calculation is a significant bottleneck.
    
    Benchmark Results:
    Compare the throughput, latency, and IOPS from the fio tests on RAID 5 and RAID 10.
    

    Métricas para comparar:

    IOPS: Higher is better. Compare the IOPS for write operations.
    Bandwidth (BW): Higher is better. Compare the throughput in MiB/s.
    Latency: Lower is better. Compare the average, min, and max latencies.
    Standard Deviation (stdev): Lower is better. Indicates consistency in performance.
    

    Em seguida, decida mudar para o RAID 10. Com base em seus benchmarks e na análise de uso da CPU, você pode tomar uma decisão informada sobre se a mudança para o RAID 10 resolverá seus problemas de desempenho.

    Ao criar um array RAID 10 de teste em um ambiente isolado , você pode avaliar seu desempenho e compará-lo com sua configuração RAID 5 atual sem interromper seu sistema de produção. Dessa forma, você pode avaliar cientificamente se vale a pena mudar para o RAID 10 e se isso resolverá seus problemas de desempenho de maneira eficaz.

    Boa sorte!

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve