Каковы наилучшие возможные способы тестирования оперативной памяти (без ECC) под linux / arm?

19

Я хочу проверить целостность и глобальные характеристики чипов памяти без ECC на специальной плате

Существуют ли какие-либо инструменты, работающие под Linux, чтобы я мог одновременно контролировать систему и глобальную температуру?

Существуют ли какие-либо специальные тесты без ECC, которые необходимо выполнить в целом?

РЕДАКТИРОВАТЬ 1:

Я уже знаю, как контролировать температуру (я использую специальную платформу /sys/devices/platform/......../temp1_input).

На данный момент :

  • wazoox: это работает, но я должен написать свои собственные тесты
  • Джейсон Хантли:
    • ramspeed: не работает на руке
    • Тест потока: это работает и очень быстро, поэтому я посмотрю, если это точно и полно
    • memtest: попробую позже, так как не запускается напрямую из linux
    • стресс для федоры: я попробую позже, для меня слишком проблематично установить федору сейчас

Я нашел этот дистрибутив: http://www.stresslinux.org/sl/

Я продолжу проверять инструменты, которые работают непосредственно под linux без слишком больших зависимостей, после того, как я, возможно, попробую такие решения, как StressLinux, Memtest, Stress для Fedora.

Спасибо за ответы, я буду продолжать расследование

Моул
источник
Будет полезно, если вы предоставите нам дистрибутив Linux, с которым работаете. Вы используете сервер или настольный дистрибутив? Включает ли он XServer?
Джейсон Хантли
Я использую Linux 3.0 с нуля с busybox, rootfs на nfs, поэтому я компилирую инструменты с другого хоста с помощью кросс-компилятора. Там нет XServer.
Моул

Ответы:

13

Вот как я иногда тестирую RAM: сначала монтируем два tmpfs (по умолчанию tmpfs составляет половину оперативной памяти):

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

Проверьте свободную память и свободное место:

# 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

Теперь заполните tmpfs с помощью 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

Вы можете проверить, что ваша память на самом деле достаточно заполнена:

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

Теперь вы можете запускать различные тесты, например, проверять идентичность обоих временных файлов, напрямую или запускать md5sum, sha1sum и т. Д .:

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

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

Про мониторинг температуры я знаю только о lm-сенсорах. Я не знаю, управляет ли он вашим конкретным оборудованием, но вы все равно можете попробовать.

wazoox
источник
4
На этот тест будет влиять кэш процессора, но это хорошая идея.
Мирча Вутцовичи
2
Я не проверял себя, но Мирча, вероятно, прав: так что я бы "echo 3> / proc / sys / vm / drop_caches" освободил кэши страниц, dentries и inode, которые должны это сделать.
Мануэль
Это кэши файловой системы, а не кэши ЦП.
Мирча Вутцовичи
1
+1 Этот ddметод (на старом AMD Athlon 64 3200+) дал мне результаты, постоянно пропорциональные изменениям тактовой частоты памяти, что я считаю достаточно хорошим. Не уверен, однако, почему вы захотите забить всю системную память /dev/zero- моя система зависла, когда я попытался это сделать.
Lumi
3
Я адаптировал это в простом скрипте bash, который я использую для тестирования поставщиков VPS - bitbucket.org/snippets/danielsokolowski/G5oeA
Даниэль Соколовский
7

Каковы наилучшие возможные способы тестирования оперативной памяти (без ECC) под linux / arm?

RamSpeed ​​- единственный мультиплатформенный инструмент тестирования памяти, о котором я знаю. Вы можете скомпилировать его для arm, если это поддерживается:

http://alasir.com/software/ramspeed/ , старая ссылка не работает, используйте:

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

Если это не поддерживается, вы можете выполнить сравнение с помощью потока:

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

хотите протестировать целостность и глобальные характеристики чипов памяти без ECC на специальной плате

Здесь я неоднократно использовал memtest для проверки целостности, и она прекрасно работает:

http://www.memtest.org/

* Обратите внимание, я только прочитал это поддерживает руку. Тем не менее, я не проверял на руке.

Существуют ли какие-либо инструменты, работающие под Linux, чтобы я мог одновременно контролировать систему и глобальную температуру?

Если используемый вами дистрибутив поддерживает yum, вы можете легко установить lm_sensors:

ням установить lm_sensors

Вы также можете скачать и скомпилировать с: здесь http://www.lm-sensors.org/

Тем не менее, я не уверен, что он предоставит данные о температуре вашей памяти. Ваша материнская плата также должна иметь датчики для измерения температуры.

Существуют ли какие-либо специальные тесты без ECC, которые необходимо выполнить в целом?

memtest включает тесты для ECC и не-ECC

Я только что вспомнил одну последнюю вещь, которую ты мог попробовать. Получить федору для архитектуры руки или оборотов. Вы можете запустить стресс-пакет, который проведет стресс-тестирование вашего процессора и памяти:

стресс-1.0.4-4.fc13.armv5tel.rpm

Если в комплект поставки busybox входит установщик rpm, возможно, вы сможете развернуть один из пакетов arm из дистрибутива fedora.

Джейсон Хантли
источник
Интересно, как ссылка RAMspeed теперь перенаправляет на спам-сайты.
Сиро Сантилли 新疆 改造 中 at 法轮功 六四 事件
да, похоже, что их сайт исчез, обновляя ссылку на github.
Джейсон Хантли
1

Запишите файл в существующий tmpfs, такой как / tmp, с dd, как предложено в wazoox, но ограничьте его размер до половины вашей свободной памяти.

Сначала выясните, сколько памяти доступно:

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

Затем запишите файл, в данном случае 4 ГБ, используя 4000 блоков по 1 МБ:

> 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

Таким образом, вы избежите подкачки, и вам не нужно ничего монтировать.

baldrianbandit
источник
Кажется, что-то искусственно ограничивает скорость tmpfsна моих машинах RHEL6 / 7. Я получаю те же 4 ГБ / с, что и вы, независимо от того, запускаю ли я эту команду на четырехканальном компьютере DDR3-1866, на четырехканальном компьютере DDR4-2666 или на той же машине, на которой заполнены только два канала памяти. Они должны записываться в память со скоростью 60, 85 и 42 ГБ / с соответственно, а не 4 ГБ / с.
Марк Бут
Может быть, dd просто делает циклы с постоянным интервалом ожидания и, таким образом, ограничивает скорость всего действия. Попробуйте все наоборот: dd if = / dev / zero of = / tmp / testfile bs = 4000M count = 1
baldrianbandit
Это очень странно, я пробовал с различными bsи countс, и лучшая комбинация была с, bs=512Kно она никогда не идет выше 4,2 ГБ / с на машине, которая дает 43 ГБ / с с тестом STREAM.
Марк Бут
0

Я использовал мем-тест u-boot, есть два теста (см. U-boot / common / cmd_mem.c):

Первый тест прост (запись, проверка), второй тест активируется #define CONFIG_SYS_ALT_MEMTEST 1и добавляет больше тестов,

позаботиться о прохождении начального смещения (ARGV [1]) после того, как пространство памяти U-Boot, то есть mtest 0x200000.

Моул
источник