prozessor auslastung DRINGEND hilfe !

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von foexle, 25.04.2008.

  1. #1 foexle, 25.04.2008
    Zuletzt bearbeitet: 25.04.2008
    foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    ich mal wieder -.-
    mir raucht der kopf ich bekomms einfach nicht hin und ich muss das heute noch fertig machen bevor ich feierabend habe :(

    kurz ich will ein paar daten vom server dokumentieren ... das klappt auch alles soweit, bis auf die CPU auslastung !!!!

    der code:
    Code:
    #!/bin/sh
    secounds="$1"
    secounds=`expr $secounds \* 60`
    zaehler=1
    
    
    while [ $zaehler -le $secounds ]
    do
            if [ `cat test.csv | wc -l` == 0 ]
            then
                    echo "date;mem;cpu;user;">>test.csv
            fi
    
            date="`date +%H:%M:%S`"
            mem="`top -n 1 |head -n 5 | grep Mem|awk {'print $5'}|awk -Fk '{print $1}'`"
    
    
            cpu_il="`top -n 1 |head -n 5 | grep Cpu|awk {'print $5'}| awk -F% '{print $1}'`"
            cpu_us1="`cat /proc/stat | head -n 1 | awk {'print $2'}`"
            cpu_ni1="`cat /proc/stat | head -n 1 | awk {'print $3'}`"
            cpu_sys1="`cat /proc/stat | head -n 1 | awk {'print $4'}`"
            cpu_idle1="`cat /proc/stat | head -n 1 | awk {'print $5'}`"
            cpu_all1="`expr $cpu_us1 + $cpu_ni1 + $cpu_sys1 + $cpu_idle1`"
            sleep 2
            cpu_us2="`cat /proc/stat | head -n 1 | awk {'print $2'}`"
            cpu_ni2="`cat /proc/stat | head -n 1 | awk {'print $3'}`"
            cpu_sys2="`cat /proc/stat | head -n 1 | awk {'print $4'}`"
            cpu_idle2="`cat /proc/stat | head -n 1 | awk {'print $5'}`"
            cpu_all2="`expr $cpu_us2 + $cpu_ni2 + $cpu_sys2 + $cpu_idle2`"
    
            cpu_all="`expr $cpu_all2 - $cpu_all1`"
            cpu_us="`expr $cpu_us2 - $cpu_us1`"
            cpu_us="`echo $cp_us / $cpu_all \* 100.0| bc -l`"
            echo $cpu_us
            cpu="0`echo 100 - $cpu_il | bc -l `"
            user="`apache2ctl status | grep workers|awk {'print $6'}`"
    
            mem=`expr $mem / 1024`
            test="$date;$mem;$cpu;$user;"
            echo -e "$date\nMemory used: $mem Mb\nCpu used: $cpu\nIdle workers: $user\n---------------$
            echo $test >> test.csv
            zaehler=`expr $zaehler + 1`
            sleep 1
    
    done
    
    ich hoffe ihr könnt mir schnell helfen und sieht den fehler :( ich weis nimma weiter ....


    mit top --> das geht nicht kommt immer 0.2% raus
    dann mit /proc/stat weis ich nicht ob ich das richtig mache

    hoffe auf schnelle antwort

    mfg foexle
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    ok das problem habe ich gefunden ... und zwar ist der integer wert zu gross den ich bekomme von cpu_all1 und cpu_all2
    da fehlt dann eine stelle in der berechnung .. aus dem grund kommt da auch nur mist raus

    es fehlt genau eine stelle ... wie kann ich das prob lösen ?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    hey leute :> ... also ich hab nun wenig rumprobiert und bin nun swoeit, dass das problem ein rundungsfehler war, da ich mit expr gerechnet habe. Die int-werte waren aber zu gross aus dem grund habe ich bc -l genommen .

    Aber komischerweise weicht mein wert, den ich ausrechne direkt aus der Proc, wesentlich von dem `top ` wert ab. Weis einer woran das liegen kann ?

    hier nun der neue code
    Code:
    #!/bin/sh
    secounds="$1" 
    secounds=`expr $secounds \* 60`
    zaehler=1
    
    
    while [ $zaehler -le $secounds ]
    do
    	if [ `cat test.csv | wc -l` == 0 ]
    	then
    		echo "date;mem;cpu;user;">>test.csv
    	fi
    	
    	date="`date +%H:%M:%S`"
    	mem="`top -n 1 |head -n 5 | grep Mem|awk {'print $5'}|awk -Fk '{print $1}'`"
    		
    
    	
    	cpu_us1="`cat /proc/stat | head -n 1 | awk {'print $2'}`"
    	cpu_ni1="`cat /proc/stat | head -n 1 | awk {'print $3'}`"
    	cpu_sys1="`cat /proc/stat | head -n 1 | awk {'print $4'}`"
    	cpu_idle1="`cat /proc/stat | head -n 1 | awk {'print $5'}`"
    	cpu_all1="`echo "$cpu_us1 + $cpu_ni1 + $cpu_sys1 + $cpu_idle1"| bc -l`"
    	sleep 2
    	cpu_us2="`cat /proc/stat | head -n 1 | awk {'print $2'}`"
    	cpu_ni2="`cat /proc/stat | head -n 1 | awk {'print $3'}`"
    	cpu_sys2="`cat /proc/stat | head -n 1 | awk {'print $4'}`"
    	cpu_idle2="`cat /proc/stat | head -n 1 | awk {'print $5'}`"
    	cpu_all2="`echo "$cpu_us2 + $cpu_ni2 + $cpu_sys2 + $cpu_idle2" | bc -l`"
    	
    	cpu_all="`echo "$cpu_all2 - $cpu_all1" |bc -l`"
    	cpu_us="`echo "$cpu_us2 - $cpu_us1"| bc -l`"
    	if [ $cpu_us -ne 0 ]
    	then
    		cpu_us="`echo "$cpu_us / $cpu_all"| bc -l`"
    		cpu_us="`echo "cpu_us * 100.0" | bc -l`"
    	fi
    	cpu_sys="`echo "$cpu_sys2 - $cpu_sys1"| bc -l`"
    	if [ $cpu_sys -ne 0 ]
    	then
    		cpu_sys="`echo "$cpu_sys / $cpu_all"| bc -l`"
    		cpu_sys="`echo "$cpu_sys * 100.0" | bc -l `"
    	fi
            cpu_ni="`echo "$cpu_ni2 - $cpu_ni1"| bc -l`"
            if [ $cpu_ni -ne 0 ]
            then
                    cpu_ni="`echo "$cpu_ni / $cpu_all"| bc -l`"
                    cpu_ni="`echo "$cpu_ni * 100.0" | bc -l `"
            fi
            cpu_idle="`echo "$cpu_idle2 - $cpu_idle1"| bc -l`"
            if [ $cpu_idle -ne 0 ]
            then
                    cpu_idle="`echo "$cpu_idle / $cpu_all"| bc -l`"
                    cpu_idle="`echo "$cpu_idle * 100.0" | bc -l `"
            fi
    	
    	cpu_ges="`echo "$cpu_ni + $cpu_sys + $cpu_us  "| bc -l|awk {'substr($1,0,4)'}`"
    	user="`apache2ctl status | grep workers|awk {'print $6'}`"
    		
    	mem=`expr $mem / 1024`
    	test="$date;$mem;$cpu_ges;$user;" 
    	echo -e "$date\nMemory used: $mem Mb\nCpu used: $cpu_ges %\nIdle workers: $user\n-----------------------"
    	echo $test >> test.csv
    	zaehler=`expr $zaehler + 1`
    	
    
    done
    
     
  4. Rvg

    Rvg Doppel-As

    Dabei seit:
    11.07.2004
    Beiträge:
    141
    Zustimmungen:
    0
    mit top | viel grep | viel awk erhaeltst du die daten, die vmstat(8) liefert, und das liefert als erstes nur "The first report produced gives averages since the last reboot.".

    was mit /proc/stat ist, k.a.
     
  5. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    jo habs nun ...

    hab nu was zusammengebaut
    zum Auslesen von

    Cpu:
    Mem:
    Curr. Uhrezeit:
    Curr: Requests Apache:

    Code:
     trap 'trap 0;exit' 1
            N=`tput lines`
            EL=`tput el` ED=`tput ed` CL=`tput clear` HO=`tput home`
            CF=`tput civis` CN=`tput cnorm` F="%12.2f%3d$ED$HO"
            
            HDR="`ps -p1 -opid -opcpu -oc -oargs | head -1`"
            echo "Zeit;Mem;Cpu;User " >> serverStat.csv
    	while :
            do
              date=`date +%H:%M`
    	  mem="`top -n 1|head -n 5 |grep Mem |awk {'print $5'}|awk -Fk '{print $1}'`"
    	  cpu=`ps -e -opid= -opcpu= -oc= -oargs= |
              sort -rnk +1 |
              mawk -v H="$HDR" -v N="$N" -v E="$EL" -v F="$F" '
                BEGIN{N-=2}
                $2>0||$3{P+=$2;C+=$3}
                NR>=N{exit}
                END{print P}'`
    	  user=`apache2ctl status|grep workers|awk {'print $1'}`
    	  echo "$date;$mem;$cpu;$user" >> serverStat.csv
              echo -e "Zeit: $date\nMem: $mem\nCpu: $cpu\nUser: $user\n========================="
    	  sleep ${1-1}  # sleep time on script's command line (default 1 sec.)
            done 
    
    
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

prozessor auslastung DRINGEND hilfe !

Die Seite wird geladen...

prozessor auslastung DRINGEND hilfe ! - Ähnliche Themen

  1. Qualcomm publiziert Registerdokumentation für Adreno-Grafikprozessoren

    Qualcomm publiziert Registerdokumentation für Adreno-Grafikprozessoren: Als erster Hersteller von Chips für eingebettete Systeme hat Qualcomm überraschend eine Dokumentation für Teile seiner Adreno-Grafikprozessoren...
  2. Neue Intel-Grafikprozessoren nutzen proprietäre Firmware-Dateien

    Neue Intel-Grafikprozessoren nutzen proprietäre Firmware-Dateien: Ein neulich getätigter Beitrag zum Linux-Kernel zeigt, dass einige der neueren i915-Grafikprozessoren nun erstmals auf Firmware angewiesen sind,...
  3. Raspberry Pi 2 versechsfacht Prozessorleistung

    Raspberry Pi 2 versechsfacht Prozessorleistung: Die Raspberry Pi Foundation hat den Nachfolger des erfolgreichen Kleinrechners Raspberry Pi vorgestellt. Raspberry Pi 2 kommt mit einem Prozessor...
  4. Cavium kündigt 64 Bit ARM-Prozessor ThunderX an

    Cavium kündigt 64 Bit ARM-Prozessor ThunderX an: Mit bis zu 48 Kernen dürften die ThunderX-Prozessoren der 64 Bit ARM-Architektur einen starken Schub geben. Dabei vertraut der Hersteller...
  5. OpenGL ES 3.1 setzt GPU als Co-Prozessor zur Beschleunigung der CPU ein

    OpenGL ES 3.1 setzt GPU als Co-Prozessor zur Beschleunigung der CPU ein: Die Khronos-Group, ein Konsortium namhafter Grafikkartenhersteller, Media-Unternehmen und Software-Hersteller hat die Spezifikation für OpenGL ES...