8 Stimmen

Linux: Wie belastet man den Systemspeicher?

Ich arbeite an einer kleinen Funktion, die meinen Benutzern ein Bild davon gibt, wie stark die CPU ausgelastet ist.

Ich benutze cat /proc/loadavg , die die bekannten 3 Zahlen liefert.

Mein Problem ist, dass die CPU im Moment nichts tut, während ich entwickle.

Gibt es einen guten Weg, um etwas Last auf der CPU zu erzeugen, ich dachte an etwas wie makecpudosomething 30 für eine Last von 0,3 oder ähnlich. Gibt es eine solche Anwendung?

Gibt es außerdem eine Möglichkeit, RAM kontrolliert zu verbrauchen?

15 Stimmen

Starten Sie eine Java-Anwendung.

2 Stimmen

@Paul - Er sagte "RAM kontrolliert auffressen". Java würde einfach alles durchkauen, was es will...:-P

0 Stimmen

Möchten Sie die CPU-Last oder die CPU-Auslastung berechnen?

3voto

user128364 Punkte 3963

Sie können das Dienstprogramm stressen, da es ein Workload-Generator-Tool ist, das Ihr System einem konfigurierbaren Maß an CPU-, Speicher-, E/A- und Festplatten-Stress aussetzt.

Um 1 vm stressor mit 1 GB virtuellem Speicher für 60s auszuführen, geben Sie ein:

stress --vm 1 --vm-bytes 1G --vm-keep -t 60s

2voto

liori Punkte 38648

2voto

Janaka Punkte 21

Verwenden Sie "memtester", um Ihre Speicherregressionstests unter Linux durchzuführen.

1voto

Ich nahm dieses Programm und änderte die Zeile: mem = 1024*1024*512; //512 mb um dies zu sagen: mem = 1*1024*1024*1024; //1 GB und kompiliere es.

$ gcc iss_mem.c -o iss_mem

Und schreiben Sie einen Bash-Wrapper um die kompilierte Version des obigen C-Programms. Es hilft mir, eine Menge Speicherlast in meinem Server zu erzeugen.

#!/bin/bash
# Author: Mamadou Lamine Diatta
#         Senior Principal Consultant / Infrastructure Architect
# Email:  diatta at post dot harvard dot edu
# --------------------------------------------------------------------------------------
# *************************************************************************************

memsize_kb=`grep -i MemTotal /proc/meminfo | awk '{print $2}'`
MemTotal=$(($memsize_kb*1024))
for i in `seq 1 50`
do

        echo "`date +"%F:%H:%M:%S"` ----------------- Running [ $i ] iteration(s)"
        MemToAlloc=$((1*1024*1204*1204))
            # 1Gb of memory per iss_mem call
        TRESHOLD=$(($MemTotal/$MemToAlloc))
             # We are not supposed to make the system
             # run out of memory
        rand=1000
            # High enough to force a new one
        while (( $rand > $TRESHOLD ))
        do
                rand=$(($RANDOM/1000))
        done
        if [ $rand -eq 0 ]
        then
                rand=1
        fi

        echo `date +"%F:%H:%M:%S"` Running $rand iss_mem in parallel ...
        for j in `seq 1 $rand`
        do
             ${ISSHOME}/bin/iss_mem > /dev/null &
                # NOTE: gcc iss_mem.c -o iss_mem
        done

        sleep 180
        jobs -p
        kill `jobs -p`

        sleep 30

done
# -------------------------------------------------------------------------------------
# *************************************************************************************

0voto

John Gietzen Punkte 47223

Haben Sie die Verwendung von prime95 ?

Ich bin mir nicht sicher, ob man es auf einen solchen Prozentsatz beschränken kann...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X