RAM, SSD und Core Auslastung per Lib bekommen

OnDemand

Top Contributor
Hallo zusammen,

kennt jemand eine gute Libary die möglichst einfach folgende Daten vom Server mitteilen kann auf dem die App läuft?

Jeweils Frei / Belegter RAM, SSD, Coreauslastung.

Könnte zwar auch ne API anfragen aber die ist soooo langsam.
 
Also RAM und SSD auslesen hab ich. Jetzt möchte ich noch die CPU Nutzung anzeigen a la min/max.
Folgendes hab ich, das spuckt mir 12 aus. Öhm ja 12 was? von wieviel? 12% von 100%?
Java:
 SystemInfo si = new SystemInfo();
        HardwareAbstractionLayer hal = si.getHardware();
        CentralProcessor cpu = hal.getProcessor();
        long[] prevTicks = new long[CentralProcessor.TickType.values().length];
        double cpuLoad = cpu.getSystemCpuLoadBetweenTicks(prevTicks) * 100;
        prevTicks = cpu.getSystemCpuLoadTicks();
        System.out.println("cpuLoad : " + cpuLoad);
 
Danke, versteh ich aber trotzdem nicht so ganz, bzw hab ich keine Idee wie ich das anzeigen könnte.
Aktuell bekomme ich zb Load 6,5 das entspricht auch der Anzeige in htop

Die Last ist doch aber abhängig der Kerne oder? Also wenn ich 2 Kerne hab die Load 6 haben, ist das zu viel. Da muss ich vermutlich mal den Servermenschen interviewen.

Da wäre es doch sinnvoll, wenn ich Anzahl der Kerne und die jeweilige Auslastung anzeige oder?
Hintergrund ist zu sehen, wann die CPU überlastet ist um ggf den Server zu erweitern.
 
Da muss man aufpassen: Load und CPU usage sind zwei Dinge.

So wichtig es ist, das sauber zu trennen: Die Library verwendet das auch nicht ganz sauber, denn es wird ja nicht die CpuLoad sondern CpuUsage geliefert (mit Wert von 0...1)

Und wenn ich es richtig verstanden habe, dann möchtest Du das pro (logischer) CPU haben:
Dann wäre getProcessorCpuLoadBetweenTicks aufzurufen (statt der getSystemCouLoadBetweenTicks Methode)
 
Im prinzip möchte ich irgendeine Anzeige aus welcher hervorgeht, dass der Prozessor übermäßig unter Last steht und der Kunde angehalten wird mehr Kerne dazu zu buchen.

Gibts vielleicht noch einen anderen Wert an den ich grad nicht denke?
 
Wenn du nicht grad explizit CPU-Zeit vermietest und die Kunden Entwickler sind, klingt das nach einer schlechten bis dummen Idee.

Warum nicht einfach was viel konkreteres wie Anzahl an Transaktionen oder Request o.ä. als Grundlage nehmen?
 
wir rechnen an anderer Stelle Transaktionen ab. Es kann aber vorkommen, dass diese so viel Leistung schlucken und der Kunde aufbuchen kann/soll damit es nicht 100 Jahre dauert die Berechnungen zu beenden.
 
Was ich hier evtl. vorziehen würde, wäre eine Monitoring Lösung, die alles in ein zentrales Monitoring schreibt. Darauf kann man dann relativ einfach Auswertungen fahren und so, also z.B. die Datenbank mit eigenen Programmen Abfragen oder einfache Reports bauen (Sowas ist da oft in den entsprechenden Lösungen mit drin).

Ich bin halt kein Fan davon, irgendwas, das es schon gibt, noch einmal von Hand neu zu bauen.
 
das macht alles unser Hoster mit anderen Tools. Hier geht es nur darum dem Kunden verständlich zu zeigen, dass der Server viel Last hat und warum seine Jobs so lange brauchen um ihm eine Aufbuchoption anzubieten.
 
wir rechnen an anderer Stelle Transaktionen ab. Es kann aber vorkommen, dass diese so viel Leistung schlucken und der Kunde aufbuchen kann/soll damit es nicht 100 Jahre dauert die Berechnungen zu beenden.
CPU-Last als Metrik dafür zu nutzen würde ich trotzdem vermeiden.
Abgesehen davon, dass die wenigsten Kunden damit was anfangen könnten: der Code kommt ja auch gar nicht vom Kunden selbst, hat der also gar keine direkte Kontrolle über den CPU-Bedarf – nur indirekt über die Anzahl an XY (was sich wiederum als Metrik anböte, zB in Form von N/sek).

Wenn du wirklich bei einer rein technischen Metrik bleiben willst, wäre CPU-Zeit deines Programms auch die bessere, außer es ist sichergestellt das nichts anderes die CPU beeinflusst.
 

Zurück
Oben