linuxubuntudebiancputemperature

Is there any way in debian/ubuntu to put CPU under load until it reaches a certain temperature?


I need this for some stress testing with my CPU. It uses Linux-Debian/Ubuntu OS and I was wondering if there's any way that I could put it under load until it reaches a certain temperature.

Are there any commands, packages or bash scripts for this?

Any help is appreciated!


Solution

  • Download Prime95 from here or use any other CPU-Stress test that works under Debian/Ubuntu.

    Get the following package:

    sudo apt-get install lm-sensors
    

    Start the sensors in terminal and update continously:

    watch sensors
    

    Now start Prime95 or your preferred stress-test and you can see cpu-temp inside terminal. Stop Stress test if cpu-temp exceeds your desired temperature. (modern cpu's are lowering clockspeed or shutting down automatically before damage from overheating is taken)

    OR (automatically stopping at a user-specified temp)

    Get the following packages:

    sudo apt-get install lm-sensors
    sudo apt-get install stress
    

    store the following code as bashfile i.e. stresstest.sh and run it with sh /path/to/stresstest.sh

    #!/bin/bash
    sensors=/usr/bin/sensors
    
    read_temp() {
        # get max Packagetemp from lm-sensors
        ${sensors} | grep 'Package' | awk '{print int($4)}'
    }
    
    echo 'Maximum CPU-Temperature:'
    # insert tjMax manually
    read tjMax
    
    echo 'Workers for testing:'
    # more workers cause higher load on the cpu
    read workers
    
    echo 'starting stress-test.'
    
    pckgMax=$( read_temp )
    while [ $tjMax -gt $pckgMax ]
    do
        # update Packagetemp
        pckgMax=$( read_temp )
        # do 10sec stress-test
        # if you discover high temperature overhead, try lowering the --timeout
        stress --cpu ${workers} --timeout 10
    done
    
    echo 'reached tjMax.'
    echo 'stopping stress-test.'
    # kill this script and all running sub-processes
    kill -- -0