Memory Stress testing in an Environmental chamber

Here you can find all the instructions about how to setup iMX6 Rex for memory stress testing in an environmental chamber.

Content

Hardware configuration

For our testing we used following hardware configuration (you can use anything you have, just be aware of temperature range of the components fitted on your board):

  • 3x iMX6 Rex Pro with
    • 1GHz iMX6 Quad CPU - extended temperature range (-20°C ~ 105°C)
    • 4x 4Gb DDR3 Memory chips - commercial temperature range (0°C ~ +95°C)
    • 1GBps Ethernet PHY Tranciever KSZ9021RN - commercial temperature range (0°C ~ +70°C)
  • 1x iMX6 Rex Prototype with
    • 1GHz iMX6 Quad CPU - extended temperature range (-20°C ~ 105°C)
    • 4x 2Gb DDR3 Memory chips - commercial temperature range (0°C ~ +95°C)
    • 1GBps Ethernet PHY Tranciever KSZ9021RN - commercial temperature range (0°C ~ +70°C)
Note: we used an industrial iMX6 Rex heatsink. With a bigger heatsink you can achieve higher temperature.

Picture: The setup in environmental chamber iMX6 Rex Environmental Chamber Testing - Boards

Test description

The main purpose of this test is to check memory stability of iMX6 Rex module. During the test you will be running:
  • 4 threads of extensive memory stress test
  • 4 threads of CPU stress test
This is the main command used for the test:
# stressapptest -s 600000 -M 768 -m 4 -C 4 -W --printsec 600 -l /home/ubuntu/testing-env-chamber/stressapptest.log
You can find detailed description about how to setup an run the whole test in Appendix : How to prepare the test. It describes all the scripts and explains log files.

Our Results

Here are the results of our testing. In the picture below you can see the temperature profile which was set during the testing.

iMX6 Rex – Env chamber – Temperature profile Switch ON/OFF test - PASS
What we were doing: We switched OFF boards, we left them OFF for 10 minutes and then we switched them ON. We have done these tests several times for temperatures between -30°C to -35°C and for a temperature +70°C. All the boards booted up successfully.
iMX6 Rex Environmental Chamber Testing -25 330px iMX6 Rex Environmental Chamber Testing 70 330px
Running the boards at -25°C - PASS
What we were doing: We set ambient temperature to -25°C and we were running the CPU and Memory stress tests. env-chamber-testing_-25°C

Running the boards at +70°C - PASS
What we were doing: We set ambient temperature to -70°C and we were running the CPU and Memory stress tests. env-chamber-testing_+70°C

Fast change of the temperature (from -25°C to +70 °C) - PASS What we were doing: We were changing ambient temperature from -25°C to +70 °C and we were running the CPU and Memory stress tests.

Appendix

How to prepare and start the test

1. SD setup
For this test we used this kernel and xubuntu filesystem. Follow these instruction to create a new SD card.

2. Create the log files
# mkdir /home/ubuntu/testing-env-chamber
# cd /home/ubuntu/testing-env-chamber
# touch cpu-temp.log
# touch stressapptest.log
3. Setup the cron
To be able to check the CPU temperature every minute we setup a new cron job. Before we do so we need to install postfix package (for Ubuntu file systems):
# sudo apt-get install postfix
To setup a cron tab we will open the file containing all cron jobs. If you run the crontab for the first time you may need to select the text editor.
# sudo crontab -e
Paste following line to the end of this file. We will use the same time format as stressapptest, we will get the current CPU temperature and save it in the log file.
Note: The percent char '%' has a special purpose in the cron file. When using it in the date command you need to use backslash before the percent '\%'.
* * * * * { echo -n $(date +\%Y/\%m/\%d-\%T); echo -n "("; echo -n $(date +\%Z); echo -n ") "; cat /sys/devices/virtual/thermal/thermal_zone0/temp; } >> /home/ubuntu/testing-env-chamber/cpu-temp.log
4. Setup the SSH connections
We created a simple Eth net with switch and control laptop. We opened 2 SSH session per board (8 session in total). In the first session we started CPU and memory stress test. In the window below we printed out the current CPU temperature. For the next three board we did exactly the same. env-chamber-testing 5. Set up the date
Because we have not set up the RTC clock we need to change the time after the board boots up. First we set the time zone:
# ln -sf /usr/share/zoneinfo/Europe/Bratislava /etc/localtime
Then we to setup the actual time. Use the sequence of digits in this order: mouth day hour minute year (in the example used 04-July-2014 08:26).
# date 070408262014
6. Setup the CPU temperature printout
Before we start the CPU and memory stress test, we backup the old logs:
# cd /home/ubuntu/testing-env-chamber
# mv cpu-temp.log cpu-temp-testing1.log
# mv stressapptest.log stressapptest-testing1.log
# touch cpu-temp.log
# touch stressapptest.log
To read the temperature we use tail which outputs the last part of files (the cron job we setup is writing to this log file)
# tail -F cpu-temp.log
7. Start the stress test
# stressapptest -s 600000 -M 768 -m 4 -C 4 -W --printsec 600 -l /home/ubuntu/testing-env-chamber/stressapptest.log
8. Look for errors in the log
When the boards are still running you can search for errors in the log file (instead of rolling the stress test printout):
# grep -i "error" stressapptest.log