Apa cara terbaik untuk benchmark RAM (no-ECC) di linux / arm?

19

Saya ingin menguji integritas dan kinerja global dari chip memori tanpa-ECC pada papan khusus

Apakah ada beberapa alat yang berjalan di linux sehingga saya bisa memonitor sistem dan suhu global dalam waktu bersamaan?

Apakah ada beberapa tes khusus tanpa ECC yang harus dilakukan secara umum?

EDIT 1:

Saya sudah tahu cara memonitor suhu (saya menggunakan fitur platform khusus /sys/devices/platform/......../temp1_input).

Untuk sekarang :

  • wazoox: ini bekerja tetapi saya harus membuat kode tes saya sendiri
  • Jason Huntley:
    • ramspeed: tidak bekerja di lengan
    • tolok ukur stream: ini berfungsi dan sangat cepat, jadi saya akan melihat apakah itu akurat dan lengkap
    • memtest: Saya akan coba nanti, karena tidak berjalan langsung dari linux
    • stres untuk fedora: Saya akan coba nanti, terlalu bermasalah bagi saya untuk menginstal fedora sekarang

Saya menemukan distribusi ini: http://www.stresslinux.org/sl/

Saya akan terus memeriksa alat yang berjalan langsung di bawah linux tanpa ketergantungan yang terlalu besar, setelah saya mungkin akan mencoba solusi seperti stresslinux, memtest, stress untuk fedora.

Terima kasih atas jawaban Anda, saya akan terus menyelidiki

moul
sumber
Ini akan membantu jika Anda memberi kami distribusi linux yang sedang Anda tangani. Apakah Anda menjalankan distribusi server atau desktop? Apakah ini termasuk XServer?
Jason Huntley
Saya menggunakan linux 3.0 bare metal dengan busybox, rootfs ada di nfs, jadi saya mengkompilasi alat dari host lain dengan kompiler arm cross. Tidak ada XServer.
moul

Jawaban:

13

Inilah cara saya kadang-kadang menguji ram: mount pertama dua tmpfs (secara default tmpfs adalah setengah ram):

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

Periksa memori bebas dan ruang kosong:

# 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

Sekarang isi tmpfs dengan 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

Anda dapat memeriksa apakah memori Anda sebenarnya cukup penuh:

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

Sekarang Anda dapat menjalankan berbagai tes, misalnya memeriksa apakah kedua file temp identik, langsung atau menjalankan md5sum, sha1sum, dll:

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

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

Tentang pemantauan suhu, saya hanya tahu tentang lm-sensor. Saya tidak tahu apakah itu mengelola perangkat keras khusus Anda, tetapi Anda mungkin bisa mencobanya.

wazoox
sumber
4
Penghitungan ini akan dipengaruhi oleh cache CPU, tapi itu ide yang bagus.
Mircea Vutcovici
2
Tidak menguji diri saya sendiri, tetapi Mircea mungkin benar: jadi saya akan "echo 3> / proc / sys / vm / drop_caches" untuk membebaskan pagecache, gigi, dan inode, yang seharusnya melakukannya.
Manuel
Itu adalah cache sistem file, bukan cache CPU.
Mircea Vutcovici
1
+1 ddMetode ini (pada AMD Athlon 64 3200+ lama) telah memberi saya hasil yang secara proporsional sebanding dengan perubahan dalam kecepatan jam memori, yang saya ambil berarti cukup bagus. Namun, tidak yakin mengapa Anda ingin menyumbat seluruh memori sistem /dev/zero- sistem saya membeku ketika saya mencoba melakukan itu.
Lumi
3
Saya telah mengadaptasinya dalam skrip bash sederhana yang saya gunakan untuk membandingkan penyedia VPS - bitbucket.org/snippets/danielsokolowski/G5oeA
Daniel Sokolowski
7

Apa cara terbaik untuk benchmark RAM (no-ECC) di linux / arm?

RamSpeed ​​adalah satu-satunya alat benchmark memori multiplatform yang saya ketahui. Anda mungkin dapat mengompilasinya untuk arm, jika didukung:

http://alasir.com/software/ramspeed/ , tautan lama sudah mati, gunakan:

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

Jika tidak didukung, Anda mungkin dapat melakukan benchmark menggunakan aliran:

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

ingin menguji integritas dan kinerja global dari chip memori tanpa-ECC pada papan khusus

Di sini, saya telah menggunakan memtest pada banyak kesempatan untuk memeriksa integritas dan ini bekerja dengan baik:

http://www.memtest.org/

* Catatan, saya hanya membaca ini mendukung Arm. Namun, saya belum diuji pada Lengan.

Apakah ada beberapa alat yang berjalan di linux sehingga saya bisa memonitor sistem dan suhu global dalam waktu bersamaan?

Jika distribusi yang Anda gunakan mendukung yum, Anda dapat dengan mudah menginstal lm_sensors:

yum instal lm_sensors

Anda juga dapat mengunduh dan mengkompilasi dari: di sini http://www.lm-sensors.org/

Namun, saya tidak yakin itu akan memberikan data suhu tentang memori Anda. Motherboard Anda juga harus memiliki sensor untuk membaca suhu mem.

Apakah ada beberapa tes khusus tanpa ECC yang harus dilakukan secara umum?

memtest termasuk tes untuk ECC dan non-ECC

Saya baru ingat satu hal terakhir yang bisa Anda coba. Dapatkan fedora untuk arsitektur lengan atau rpm. Anda dapat menjalankan paket stres yang akan menguji cpu dan memori Anda:

stress-1.0.4-4.fc13.armv5tel.rpm

Jika busybox memiliki penginstal rpm yang disertakan, Anda mungkin dapat menggunakan salah satu arm rpms dari distribusi fedora.

Jason Huntley
sumber
Menarik bagaimana tautan RAMspeed sekarang mengalihkan ke situs web spam.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
ya, sepertinya situs mereka hilang, memperbarui tautan ke github.
Jason Huntley
1

Tulis file ke tmpfs yang ada seperti / tmp dengan dd seperti yang disarankan wazoox, tetapi batasi ukurannya hingga kurang dari setengah memori bebas Anda.

Pertama, cari tahu berapa banyak memori yang tersedia:

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

Kemudian, tulis file, dalam hal ini total 4GB menggunakan 4000 blok 1MB:

> 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

Dengan cara ini Anda akan menghindari bertukar dan tidak perlu me-mount apa pun.

baldrianbandit
sumber
Sesuatu sepertinya secara artifisial membatasi kecepatan tmpfspada mesin RHEL6 / 7 saya. Saya mendapatkan 4GB / s yang sama dengan Anda apakah saya menjalankan perintah ini pada mesin DDR3-1866 saluran quad, mesin DDR4-2666 saluran quad, atau mesin yang sama dengan hanya dua saluran memori yang dihuni. Ini harus ditulis ke memori pada 60, 85 dan 42GB / s hormat, bukan 4GB / s.
Mark Booth
Mungkin hanya melakukan loop dengan intervall menunggu konstan dan dengan demikian, membatasi kecepatan seluruh tindakan. Coba sebaliknya: dd if = / dev / zero of = / tmp / testfile bs = 4000M count = 1
baldrianbandit
Ini sangat aneh, saya sudah mencoba dengan berbagai bsdan counts dan kombinasi terbaik dengan bs=512Ktetapi tidak pernah berjalan di atas 4.2GB / s pada mesin yang memberikan 43GB / s dengan benchmark STREAM.
Mark Booth
0

Saya menggunakan memtest u-boot, ada dua tes (lihat u-boot / common / cmd_mem.c):

Tes pertama sederhana (tulis, periksa), tes kedua diaktifkan oleh #define CONFIG_SYS_ALT_MEMTEST 1dan menambahkan lebih banyak tes,

berhati-hatilah dengan memulai offset awal (argv [1]) setelah ruang memori u-boot, yaitu mtest 0x200000.

moul
sumber