Quais são as melhores maneiras possíveis para comparar a RAM (sem ECC) no linux / arm?

19

Desejo testar a integridade e o desempenho global de chips de memória não-ECC em uma placa personalizada

Existem algumas ferramentas que rodam no Linux para que eu possa monitorar a temperatura global e do sistema ao mesmo tempo?

Existem alguns testes específicos não ECC para fazer em geral?

EDIT 1:

Eu já sei como monitorar a temperatura (uso um recurso especial da plataforma /sys/devices/platform/......../temp1_input).

Para agora :

  • wazoox: funciona, mas eu tenho que codificar meus próprios testes
  • Jason Huntley:
    • ramspeed: não funciona no braço
    • benchmark de fluxo: funciona e é muito rápido, por isso vou ver se é preciso e completo
    • memtest: tentarei mais tarde, pois não roda diretamente do linux
    • estresse para o fedora: vou tentar mais tarde também, é muito problemático instalar o fedora agora

Encontrei esta distribuição: http://www.stresslinux.org/sl/

Continuarei a verificar as ferramentas que são executadas diretamente no linux sem dependências muito grandes, depois de talvez tentar soluções como stresslinux, memtest, stress para o fedora.

Obrigado pelas respostas, continuarei a investigar

moul
fonte
Ajudaria se você nos fornecer a distribuição linux com a qual você está trabalhando. Você está executando uma distribuição de servidor ou desktop? Inclui o XServer?
Jason Huntley
Eu uso o linux 3.0 bare metal com o busybox, o rootfs está no nfs, então eu compilo ferramentas de outro host com um compilador cross arm. Não há XServer.
Moul

Respostas:

13

Aqui está o modo como às vezes testo a ram: primeiro monte dois tmpfs (por padrão, tmpfs é metade da ram):

# mount -t tmpfs /mnt/test1 /mnt/test1
# mount -t tmpfs /mnt/test2 /mnt/test2

Verifique a memória livre e o espaço livre:

# free
             total       used       free     shared    buffers     cached
Mem:        252076     234760      17316          0      75856      62328
-/+ buffers/cache:      96576     155500
Swap:      1048820        332    1048488

# df -h -t tmpfs
Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
tmpfs                 124M     0  124M   0% /lib/init/rw
udev                   10M  104K  9,9M   2% /dev
tmpfs                 124M     0  124M   0% /dev/shm
/mnt/test1            124M     0  124M   0% /mnt/test1
/mnt/test2            124M     0  124M   0% /mnt/test2

Agora preencha os tmpfs com dd:

# dd if=/dev/zero of=/mnt/test1/test bs=1M 
dd: écriture de `/mnt/test1/test': Aucun espace disponible sur le périphérique
123+0 enregistrements lus
122+0 enregistrements écrits
128802816 octets (129 MB) copiés, 1,81943 seconde, 70,8 MB/s

# dd if=/dev/zero of=/mnt/test2/test bs=1M 
dd: écriture de `/mnt/test2/test': Aucun espace disponible sur le périphérique
123+0 enregistrements lus
122+0 enregistrements écrits
128802816 octets (129 MB) copiés, 5,78563 seconde, 22,3 MB/s

Você pode verificar se sua memória está realmente cheia:

# free
             total       used       free     shared    buffers     cached
Mem:        252076     248824       3252          0       1156     226380
-/+ buffers/cache:      21288     230788
Swap:      1048820      50020     998800

Agora você pode executar vários testes, por exemplo, verifique se os dois arquivos temporários são idênticos, diretamente ou executando md5sum, sha1sum, etc:

# time cmp /mnt/test1/test /mnt/test2/test 

real    0m4.328s
user    0m0.041s
sys     0m1.117s

Sobre o monitoramento de temperatura, conheço apenas sensores lm. Não sei se ele gerencia seu hardware específico, mas você provavelmente poderia tentar de qualquer maneira.

wazoox
fonte
4
Esse benchmark será afetado pelo cache da CPU, mas é uma boa ideia.
Mircea Vutcovici 21/03
2
Não testei a mim mesmo, mas o Mircea provavelmente está certo: então eu "ecoaria 3> / proc / sys / vm / drop_caches" para liberar pagecaches, dentries e inodes, que devem fazê-lo.
Manuel
Esses são caches do sistema de arquivos, não caches da CPU.
Mircea Vutcovici
1
+1 Este ddmétodo (em um antigo AMD Athlon 64 3200+) me proporcionou resultados consistentemente proporcionais às mudanças na velocidade do clock da memória, o que considero bom o suficiente. Porém, não sei por que você deseja obstruir toda a memória do sistema /dev/zero- meu sistema congelou quando tentei fazer isso.
Lumi
3
Eu adaptei isso em um script simples que eu uso para referência VPS provedores - bitbucket.org/snippets/danielsokolowski/G5oeA
Daniel Sokolowski
7

Quais são as melhores maneiras possíveis para comparar a RAM (sem ECC) no linux / arm?

O RamSpeed ​​é a única ferramenta de benchmark de memória multiplataforma que eu conheço. Você pode compilá-lo para arm, se suportado:

http://alasir.com/software/ramspeed/ , o link antigo está morto, use:

https://github.com/cruvolo/ramspeed-smp

Se não for suportado, você poderá fazer benchmarks usando o stream:

http://www.cs.virginia.edu/stream/ref.html

deseja testar a integridade e o desempenho global de chips de memória não-ECC em uma placa personalizada

Aqui, eu usei o memtest em várias ocasiões para verificação de integridade e funciona muito bem:

http://www.memtest.org/

* Note, eu só li isso suporta Arm. No entanto, eu não testei em um braço.

Existem algumas ferramentas que rodam no Linux para que eu possa monitorar a temperatura global e do sistema ao mesmo tempo?

Se a distribuição que você está usando suportar yum, você poderá instalar facilmente lm_sensors:

yum install lm_sensors

Você também pode baixar e compilar em: aqui http://www.lm-sensors.org/

No entanto, não tenho certeza de que ele fornecerá dados de temperatura referentes à sua memória. Sua placa-mãe também precisa ter sensores para ler a temperatura da memória.

Existem alguns testes específicos não ECC para fazer em geral?

O memtest inclui testes para ECC e não-ECC

Acabei de me lembrar de uma última coisa que você poderia tentar. Obtenha o fedora para arquitetura de arm ou o rpm. Você pode executar o pacote de estresse, que testará seu CPU e memória:

stress-1.0.4-4.fc13.armv5tel.rpm

Se o busybox tiver um instalador de rpm incluído, você poderá implantar um dos arm rpms da distribuição do fedora.

Jason Huntley
fonte
Interessante como o link de velocidade RAM agora redireciona para sites com spam.
Ciro Santilli # 24/18
sim, parece que o site deles sumiu, atualizando o link para o github.
Jason Huntley
1

Escreva um arquivo em um tmpfs existente como / tmp com dd, como sugerido pelo wazoox, mas limite seu tamanho a menos da metade da sua memória livre.

Primeiro, descubra quanta memória está disponível:

> free -h                                                                       
              total        used        free      shared  buff/cache  available 
Mem:            15G        3.0G         11G        540M        1.0G         11G 
Swap:            9G        1.2M          9G                                     

Em seguida, escreva um arquivo, neste caso 4 GB no total usando 4000 blocos de 1 MB:

> dd if=/dev/zero of=/tmp/testfile bs=1M count=4000 
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB, 3.9 GiB) copied, 1.1395 s, 3.7 GB/s

Dessa forma, você evitará trocar e não será necessário montar nada.

baldrianbandit
fonte
Algo parece estar limitando artificialmente a velocidade das tmpfsminhas máquinas RHEL6 / 7. Eu recebo os mesmos 4 GB / s que você, executando este comando na máquina DDR3-1866 de quatro canais, na máquina DDR4-2666 de quatro canais ou na mesma máquina com apenas dois canais de memória preenchidos. Eles devem estar gravando na memória a 60, 85 e 42GB / s, respectivamente, não a 4GB / s.
Mark Booth
Pode ser que dd esteja apenas fazendo loops com um intervalo de espera constante e, portanto, limitando a velocidade de toda a ação. Experimente o contrário: dd if = / dev / zero of = / tmp / testfile bs = 4000M count = 1
baldrianbandit
É muito estranho, eu tentei com uma variedade de bse counts e a melhor combinação foi com bs=512Kmas nunca vai acima de 4.2GB / s em uma máquina que dá 43GB / s com o benchmark STREAM.
Mark Booth
0

Eu usei o memtest do u-boot, existem dois testes (consulte u-boot / common / cmd_mem.c):

O primeiro teste é simples (gravação, verificação), o segundo teste é ativado #define CONFIG_SYS_ALT_MEMTEST 1e adiciona mais testes,

cuide de passar um deslocamento inicial (argv [1]) após o espaço de memória do u-boot, ie mtest 0x200000.

moul
fonte