Temat: obecne zuzycie CPU do zmiennej

Witam,
czy jest mozliwosc "wrzucenia" do zmiennej obecnego zuzycia CPU?

Chcialem zrzucic z TOP roznice miedzy 100% a idle aby otrzymac obecne zuzycie CPU.
Probowalem na kilka innych sposobow ale za kazdym razem mi nie wychodzi.

Jedyne co "wychodzi", to sumowanie z /proc/stat ale zawsze (nawet podczas stresu) pokazuje mi ten sam wynik lub zblizony.

grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'

2

Odp: obecne zuzycie CPU do zmiennej

top -b -n1 > /tmp/plik

Ale będzie cię okłamywał, bo często w momencie uruchamiana topa skacze do 100% smile Już lepiej load wykorzystaj (choć to nie są "procenty")

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez wojtula 2018-03-21 15:25:07)

Odp: obecne zuzycie CPU do zmiennej

Dokladnie tak jak mowisz - beda "piki" do 100% wiec to nie ma sensu.
Hm ale load to co innego niz usage smile

Nie ma zatem innego sposobu?

Jak widzisz ponizej, gromadzenie na moj sposob cpu jest bez sensu

https://thumb.ibb.co/bBq5Nx/cpu_Usage_rputer.jpg

4

Odp: obecne zuzycie CPU do zmiennej

Często widziałem w skryptach że ludzie stosują /proc/stat własnie do tego, nie tak jak to pokazałeś. Odczyt, sleep, odczyt, odpowiednie porównania i masz obciążenie w %. Ale to i tak pokazuje chwilówkę. Dla mnie l1/l5/l15 więcej informacji niesie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: obecne zuzycie CPU do zmiennej

PS. Pokazałeś screenshot więc rozumiem że sam robisz statystyki. Widziałeś netdata?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6 (edytowany przez wojtula 2018-03-21 15:41:41)

Odp: obecne zuzycie CPU do zmiennej

To akurat jest grafana (front) pod spodem jest influx.
Nie widzialem tego, o czym mowisz - na pewno zaraz poogladam.

To co napisales ma sens - delta bylaby najlepsza w tym celu ale.. delta raczej bedzie dzialac w trybie interactive a nie pod spodem jako skrypt sh. Musze pomyslec jak to zrobic w petli a potem roznice na koniec. Chyba ze gdzies jest gotowiec, to byloby prostsze rozwiazanie.

7

Odp: obecne zuzycie CPU do zmiennej

Wiem ze to grafana, dlatego spytałem.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8 (edytowany przez wojtula 2018-03-21 15:43:38)

Odp: obecne zuzycie CPU do zmiennej

super tool, fajnie wyglada i szybko chodzi. Nie wiem jak to zintegrowac z prostym w miare ashem openwrt.
Na pewno rbpi pociagnie, bo pod spodem debian/armbian.


Ok temat do zamkniecia, poszukam/napisze skrypt ktory policzy delte z ww procedurki.

9

Odp: obecne zuzycie CPU do zmiennej

netdata chodzi samo z siebie i podstawowe dane (cpu, memory, sieć) masz od razu. Ma też możliwość wykonywania skryptów i odczytywania z nich danych (skrypty w starszych wersjach, w pythonie w nowszych) więc w sumie możesz podpiąć pod grafy co chcesz.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: obecne zuzycie CPU do zmiennej

z tego wynika ze np. z raspberry moglbym odpytywac rowniez moj gargoyle.
Swietny tool, dziekuje.

11

Odp: obecne zuzycie CPU do zmiennej

Możesz też netdatę postawić na openwrt i poziomu innej maszyny przełączać się pomiędzy grafami. Tak jak w demie robili.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12 (edytowany przez wojtula 2018-03-21 18:18:28)

Odp: obecne zuzycie CPU do zmiennej

znalezione, zmodyfikowane na szybko, moze komus sie przyda: (wynik w /tmp/cpu.stats)

awk -f cpu.awk

BEGIN {
  prev_total = 0
  prev_idle = 0
  while (getline < "/proc/stat") {
    close("/proc/stat")
    idle = $5
    total = 0
    for (i=2; i<=NF; i++)
      total += $i
    ++a
    printf "%5.1f%  \b\b",(1-(idle-prev_idle)/(total-prev_total))*100 > "/tmp/cpu.stats"; close("/tmp/cpu.stats");
    prev_idle = idle
    prev_total = total
    system("sleep 1")
if (a >= 5) break ; else continue
  }
}

wersja interaktywna (wyrzuca do shella wartosc CPU):

BEGIN {
  prev_total = 0
  prev_idle = 0
  while (getline < "/proc/stat") {
    close("/proc/stat")
    idle = $5
    total = 0
    for (i=2; i<=NF; i++)
      total += $i
    printf "%5.1f%  \b\b",(1-(idle-prev_idle)/(total-prev_total))*100
    prev_idle = idle
    prev_total = total
    system("sleep 1")
  }
}