Echelon1010000
Active Member
Hi
Ich schreibe gerade an einem Perlscript das diverse Systemdaten "einsammelt" und via tcp an einen Serverdienst (lcdproc) weiterreicht. Nun hab ich das Problem das ich nicht an die aktuelle Datenrate der Netzwerkinterfaces herankomme.
Ich hab versucht mit libgrabstat und dem zugehörigen Perlmodul (hab ich bei cpan gefunden) da heran zu kommen. Diese bietet mir eine Funktion mit der ich von einem Interface abfragen kann wieviele Bytes seit dem letzten Aufruf der Funktion gesendet oder empfangen wurden.
Die Idee war, nach dem Aufruf der Funktion ein sleep(1); zu machen und dann die Funktion erneut aufzurufen. Das sollte ausgeben wieviel Bytes in der letzten Sekunde durchgelaufen sind = Bytes/s. Leider ist perl da nicht genau / schnell genug, das Umrechen von B/s in KB/s und anschliessende weiterreichen an lcdproc dauern zu lange. Ich bekomme Zeiten zwischen 0.5 und 2 Sekunden für einen Durchlauf, entsprechend falsch sind auch die "Meßergebnisse".
Jetzt suche ich nach einer anderen Möglichkeit diese Daten zu bekommen. Entweder mit einem anderen Tool / Modul das mir selber diese Daten liefert, ohne das ich eine zeitkritische Schleife bauen muß (wäre mir lieber). Oder aber indem ich eine Möglichkeit finde die Schleife so zu schreiben das sie immer eine bestimmte Anzahl Sekunden dauert und nicht variiert. Angestrebtes Ziel währe hier eine exakte Dauer von einer Sekunde oder weniger.
Weiß da vielleicht jemand wie man das lösen könnte?
Ich hab schon bei cpan gesucht, dort aber, bis jetzt, nichts gefunden (ausser eben libgrabstat). Google hat mir bis jetzt auch nichts ausgespuckt... Vielleicht ist auch mein Ansatz falsch, aber mir fällt nichts besseres ein.
Ich bin für jeden Tip dankbar...
Gruß, Echelon
Ich schreibe gerade an einem Perlscript das diverse Systemdaten "einsammelt" und via tcp an einen Serverdienst (lcdproc) weiterreicht. Nun hab ich das Problem das ich nicht an die aktuelle Datenrate der Netzwerkinterfaces herankomme.
Ich hab versucht mit libgrabstat und dem zugehörigen Perlmodul (hab ich bei cpan gefunden) da heran zu kommen. Diese bietet mir eine Funktion mit der ich von einem Interface abfragen kann wieviele Bytes seit dem letzten Aufruf der Funktion gesendet oder empfangen wurden.
Die Idee war, nach dem Aufruf der Funktion ein sleep(1); zu machen und dann die Funktion erneut aufzurufen. Das sollte ausgeben wieviel Bytes in der letzten Sekunde durchgelaufen sind = Bytes/s. Leider ist perl da nicht genau / schnell genug, das Umrechen von B/s in KB/s und anschliessende weiterreichen an lcdproc dauern zu lange. Ich bekomme Zeiten zwischen 0.5 und 2 Sekunden für einen Durchlauf, entsprechend falsch sind auch die "Meßergebnisse".
Jetzt suche ich nach einer anderen Möglichkeit diese Daten zu bekommen. Entweder mit einem anderen Tool / Modul das mir selber diese Daten liefert, ohne das ich eine zeitkritische Schleife bauen muß (wäre mir lieber). Oder aber indem ich eine Möglichkeit finde die Schleife so zu schreiben das sie immer eine bestimmte Anzahl Sekunden dauert und nicht variiert. Angestrebtes Ziel währe hier eine exakte Dauer von einer Sekunde oder weniger.
Weiß da vielleicht jemand wie man das lösen könnte?
Ich hab schon bei cpan gesucht, dort aber, bis jetzt, nichts gefunden (ausser eben libgrabstat). Google hat mir bis jetzt auch nichts ausgespuckt... Vielleicht ist auch mein Ansatz falsch, aber mir fällt nichts besseres ein.
Ich bin für jeden Tip dankbar...
Gruß, Echelon