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 / unix / Perguntas / 789492
Accepted
Nemo
Nemo
Asked: 2025-01-13 18:34:06 +0800 CST2025-01-13 18:34:06 +0800 CST 2025-01-13 18:34:06 +0800 CST

Quanto tempo leva para executar o memtester em um servidor com 3 TB de RAM?

  • 772

Tenho alguns servidores baremetal executando RHEL, que anteriormente tinham alguns problemas com travamentos de java/JVM e, ocasionalmente, algumas mensagens de erro de memória em nível de kernel. Os servidores agora estão quase todos ociosos, pois as cargas de trabalho foram movidas para outro lugar, aguardando a substituição da memória.

Depois de ler a postagem de Aleksey Shipilёv Please test your memory , gostaria de executar o memtester no host para ver se ele detectaria esses problemas sem precisar reinicializar. Normalmente, usaríamos apenas o memtest86+ "normal" na reinicialização, mas pode ser interessante ter alternativas.

Quanto tempo levaria para concluir uma execução do memtester em um servidor da era de 2016 com 3 TB de memória?

rhel
  • 3 3 respostas
  • 3952 Views

3 respostas

  • Voted
  1. Best Answer
    Nemo
    2025-01-13T18:34:06+08:002025-01-13T18:34:06+08:00

    Uma execução do memtest86+ levou cerca de 3 dias em um desses hosts (v6.10). Provavelmente ajuda que o memtest seja multithread, como o artigo de Shipolev menciona.

    No mesmo servidor, uma execução de memtester 2700g 3(versão 4.5.1) ainda estava no primeiro loop de 3 após execução por 21 dias de tempo de relógio de parede. Estava usando 100% de um núcleo constantemente.

    Este era um R930 com CPU Intel E7-8880 v4 (176 núcleos) e 96x32 GB de RAM DDR4 a 2400 MHz.

    Concluindo, reiniciar a máquina e executar o memtest86+ usual continua sendo a melhor chance. As cargas de trabalho precisam ser interrompidas ou movidas para outro lugar para que tais investigações aconteçam.

    Não é uma opção testar preventivamente a memória dessa forma, então provavelmente valerá a pena conduzir o teste de memória somente após alguns erros terem sido detectados pelo kernel ou a quantidade de travamentos da JVM for tão grave que as cargas de trabalho tiveram que ser interrompidas ou movidas para outro lugar já. Usar o memtester ainda pode ser útil em alguns casos onde a quantidade de memória a ser testada é limitada e o acesso físico ou uma reinicialização são proibitivamente caros.

    Exemplo de log

    $ free -g
                  total        used        free      shared  buff/cache   available
    Mem:           3023          76        2934           0          11        2933
    Swap:            55           1          54
    
    $ time nice -n 10 sudo memtester 2700g 3
    memtester version 4.5.1 (64-bit)
    Copyright (C) 2001-2020 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    
    pagesize is 4096
    pagesizemask is 0xfffffffffffff000
    want 2764800MB (2899102924800 bytes)
    got  2764800MB (2899102924800 bytes), trying mlock ...locked.
    Loop 1/3:
      Stuck Address       : ok
      Random Value        : ok
      Compare XOR         : ok
      Compare SUB         : ok
      Compare MUL         : ok
      Compare DIV         : ok
      Compare OR          : ok
      Compare AND         : ok
      Sequential Increment: ok
      Solid Bits          : ok
      Block Sequential    : ok
      Checkerboard        : ok
      Bit Spread          : ok
      Bit Flip            : ok
      Walking Ones        : ok
      Walking Zeroes      : setting  11^C
    
    real    30966m20.456s
    user    27802m43.020s
    sys     3084m14.099s
    
    • 15
  2. Marcus Müller
    2025-01-13T20:49:34+08:002025-01-13T20:49:34+08:00

    Não há uma resposta geral possível: isso dependerá da RAM e do controlador de memória da CPU, e há várias ordens de magnitude de diferença que você pode esperar do hardware de servidor disponível atualmente.

    Geralmente, testar memória física testando memória virtual do espaço do usuário é... hm, essa é uma má ideia por design. Você gastaria mais tempo estressando a lógica de paginação no seu kernel, a MMU da sua CPU, as múltiplas camadas de coerência de cache em máquinas multi-core (o que uma máquina de 3 TB provavelmente é) do que realmente faria interagindo com RAM física, e se você não for cuidadoso ao fazer isso da maneira que sua CPU é otimizada para acessar a memória (em máquinas x86_64/AVX2 e posteriores, mm256_stream_*vs carregamento/armazenamentos clássicos vs...) você obteria outro fator, geralmente na ordem de 5×, na perda de desempenho.

    Então, você ir em memtest86+vez disso (o que realmente coloca este Q/A fora do tópico deste site, você não acha?) foi a jogada certa, mais ou menos (eu não acho que ele realmente saiba do cache e da topologia de coerência da sua máquina, então ele não pode realmente testar em paralelo bem). Mas honestamente: por quê? Até mesmo aquele blog, que assume máquinas muito menores (uma RAM de 128 GB parece ser grande para elas), diz, OK, você começa com RAM ECC. E de jeito nenhum você tem um único nó conectado a 3 TB de RAM que não seja RAM ECC. E se você tem RAM ECC, então você terá um contador de quantos erros ele teve que corrigir. Inversões de bits na RAM são esperadas, e em 3 TB de RAM, você pode ter certeza de que pelo menos uma ocorreu - mas é o trabalho do ECC converter o erro físico de volta para os dados corretos, para que você tenha memória confiável.

    Mas é claro que, embora o ECC corrija a maioria dos erros, também pode (má sorte) acontecer que os erros sejam tão graves que o resultado pareça dados válidos (ou algo que pode ser mais facilmente "corrigido" para os dados válidos errados do que para os dados corretos). Então, se você sabe qual geração de RAM sua máquina usa e que tipo de ECC ela usa, você pode fazer inferências do contador de erros ECC corrigíveis para a contagem de erros corrigidos incorretamente. Isso é muito melhor no uso prático do que executar uma verificação de memória sintética – que pode ou não ver coisas como efeitos vizinhos (pense em coisas como Rowhammer), enquanto os contadores ECC realmente observam o que dá errado durante o uso. Um pico em erros ECC corrigíveis seria motivo para investigação.

    • 12
  3. Simon Farnsworth
    2025-01-15T01:13:55+08:002025-01-15T01:13:55+08:00

    Vindo de uma direção diferente: se você tem memória ECC, você deve ter contadores de erros corrigidos e não corrigidos. No RHEL8 e RHEL9, instale o rasdaemonpacote, e então ras-mc-ctl --error-countlistará as contagens de erros registradas pelo hardware nesta inicialização:

    # ras-mc-ctl --error-count
    Label                   CE      UE
    mc#0csrow#1channel#1    0       0
    mc#0csrow#0channel#0    0       0
    …
    

    Além disso, você pode iniciar o rasdaemonserviço na inicialização, e ele colocará os erros detectados em um banco de dados que você pode consultar com ras-mc-ctl --errors. Isso permite que você compare os timestamps de erros de memória conhecidos com os timestamps de travamentos e erros de kernel.

    Finalmente, rasdaemona configuração do /etc/sysconfig/rasdaemonpermite que você o configure para dizer ao kernel para desligar páginas ruins da memória se elas tiverem muitos Erros Corrigidos em um período de tempo; se você configurar isso e vir muitas páginas offline, você sabe que tem memória defeituosa. Isso também lhe dá uma chance de manter o sistema funcionando com memória falha, reduzindo a capacidade de memória para remover a RAM defeituosa.

    • 5

relate perguntas

  • Por que o Linux estaria matando meu processo?

  • linux redhat 7 (ou centos 7) + firewalld mascarar o firewall

  • comando systemctl não funciona no RHEL 6

  • Como instalo o docker no RHEL 7 offline?

  • Desativar a maximização automática de janelas no Gnome3

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk 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