RSI-Schnittstellendatenstrukturen
Die RSI-Schnittstelle basiert auf Steuerblöcken (Datenstrukturen), die die aktuelle Ansicht der Statistikdaten auf einem fernen Host und den Status der Interaktion zwischen einem Datenkonsumentenprogramm und dem xmtopas -Dämon des fernen Hosts beschreiben.
- RSI-Kennung
- SpmiStatVals
RSI-Kennung
Eine RSI-Kennung ist ein Zeiger auf eine Datenstruktur des Typs RsiHandleStructx. Vor Verwendung eines anderen RSI-Aufrufs muss ein Datenkonsumentenprogramm die Subroutine RSiInit verwenden, um eine Tabelle mit RSI-Kennungen zuzuordnen. Eine RSI-Kennung aus der Tabelle wird initialisiert, wenn die logische Verbindung zu einem Host geöffnet wird und diese RSI-Kennung als Argument in allen nachfolgenden Subroutinen für denselben Host angegeben werden muss. Nur eines der internen Felder der RSI-Kennung sollte vom Datenkonsumentenprogramm verwendet werden, nämlich der Zeiger auf empfangene Netzpakete, pi. Nur in sehr speziellen Fällen müssen Sie diesen Zeiger verwenden, der von RSiOpenx initialisiert wird und nie von einem Datenkonsumentenprogramm geändert werden darf. Wenn Ihr Programm ein Feld in der RSI-Handle-Struktur ändert, sind die Ergebnisse sehr unvorhersehbar. Die RSI-Kennung ist in /usr/include/sys/Rsi.hdefiniert.
SpmiStatVals
Ein einzelner Datenwert wird durch eine Struktur dargestellt, die in /usr/include/sys/Spmidef.h als Struktur SpmiStatValsdefiniert ist. Beachten Sie, dass keines der in der Struktur definierten Felder von Anwendungsprogrammen geändert werden muss. Die beiden Kennungen in der Struktur sind symbolische Verweise auf Kontexte und Statistiken und sollten nicht mit Zeigern verwechselt werden. Die letzten drei Felder werden aktualisiert, wenn ein data_feed -Paket empfangen wird. Diese Felder lauten wie folgt:
| Element | Beschreibung |
|---|---|
| val | Der aktuelle Inhalt des Statistikdatenfelds. |
| Wert ändern | Die Differenz (Deltawert) zwischen dem letzten tatsächlichen Inhalt des Statistikdatenfelds und dem beobachteten vorherigen Wert |
| Fehler | Ein Fehlercode, wie durch den enum -Fehler in der Datei /usr/include/sys/Spmidef.h definiert. |
SpmiStat -Struktur lang oder variabel sein. Auf die Struktur SpmiStat kann nicht direkt über die Struktur StatVals zugegriffen werden (der Zeiger ist nicht gültig, wie bereits erwähnt). Um den Datentyp in den Feldern val und val_change zu ermitteln, müssen Sie daher die Struktur SpmiStat so gespeichert haben, wie sie von der Subroutine RSiPathAddSetStatx zurückgegeben wird. Dies ist ziemlich unbeholfen, sodass die Subroutine RSiGetValuex alles für Sie tut und Sie keine SpmiStat -Strukturen verfolgen müssen.Die Struktur SpmiStat wird zur Beschreibung einer Statistik verwendet. Sie ist in der Datei /usr/include/sys/Spmidef.h des Typs SpmiStat -Struktur definiert. Wenn Sie Informationen aus dieser Datenstruktur benötigen (außer Informationen, die von der Subroutine RSiStatGetPathx zurückgegeben werden können), speichern Sie sie unbedingt so, wie sie von der Subroutine RSiPathAddSetStatx zurückgegeben wird.
Die Subroutine RSiGetValuex bietet eine weitere Möglichkeit, auf eine SpmiStat -Struktur zuzugreifen. Dies ist jedoch nur möglich, wenn ein Datenfeedpaket verarbeitet wird.
Der xmtopas -Dämon akzeptiert die Definition von Statistikgruppen, die gleichzeitig extrahiert und in einem einzelnen Datenpaket an das Datenkonsumentenprogramm gesendet werden. Die Struktur, die eine solche Statistikgruppe beschreibt, wird in der Datei /usr/include/sys/Spmidef.h des Typs SpmiStatSet definiert. Wie von RSiCreateStatSetxzurückgegeben, muss der Zeiger SpmiStatSet als Kennung behandelt werden, deren einziger Zweck darin besteht, die richtige Gruppe von Statistikdaten für mehrere andere Subroutinen zu identifizieren.
Bei der Rückgabe in einem Datenfeedpaket enthält die Struktur SpmiStatSet die tatsächliche Zeit, zu der das Datenfeedpaket erstellt wurde (entsprechend der Uhr des fernen Hosts), und die abgelaufene Zeit seit der Erstellung des letzten vorherigen Datenfeedpakets für dasselbe SpmiStatSet .
Die Struktur SpmiHotSet stellt eine weitere Gruppe von Zugriffsstrukturen dar, mit denen ein Anwendungsprogramm eine alternative Methode zum Extrahieren und Verarbeiten von Metriken definieren kann. Sie werden verwendet, um Datenwerte für die aktivsten oder am wenigsten aktiven Statistiken für eine Gruppe von Peerkontexten zu extrahieren. Sie kann beispielsweise verwendet werden, um zu definieren, dass das Programm Informationen über die beiden am höchsten geladenen Platten empfangen möchte, wobei die Last optional einen angegebenen Schwellenwert überschreitet.
Wenn SPMI eine Leseanforderung für einen SpmiHotSetempfängt, liest SPMI den neuesten Wert für alle Peergruppen von Statistikdaten im Hotset in einer Operation. Diese Aktion reduziert den Systemaufwand, der durch den Zugriff auf Kernelstrukturen und andere Systembereiche verursacht wird, und stellt sicher, dass alle Datenwerte für die Peergruppen von Statistiken in einem Hotset gleichzeitig gelesen werden. Das Hotset kann aus einer oder mehreren Gruppen von Peerstatistiken bestehen.
Für jede Gruppe von Peerstatistiken, die für das Hotset ausgewählt werden, wird eine SpmiHotVals SpmiHotVals Struktur erstellt. Wenn die SPMI eine Anforderung vom Anwendungsprogramm zum Lesen der Datenwerte für ein Hotset ausführt, werden alle SpmiHotVals -Strukturen in der Gruppe aktualisiert. Das RSi-Anwendungsprogramm kann dann die Liste der SpmiHotVals -Strukturen mit dem Aufruf der Subroutine RSiGetHotItemx durchqueren.
Die Struktur SpmiHotVals überträgt die Datenwerte von der SPMI an das Anwendungsprogramm. Die Felder, die Daten enthalten, sind:
| Element | Beschreibung |
|---|---|
| Fehler | Gibt den Wert null zurück, wenn der letzte Versuch der SPMI, die Datenwerte für eine Gruppe von Peerstatistiken zu lesen, erfolgreich war. Andernfalls enthält dieses Feld einen Fehlercode, wie in der Datei sys/Spmidef.h definiert. |
| Verfügbarkeit_Antwort | Wird verwendet, um die Anzahl der Peerstatistikdatenwerte zurückzugeben, die den Auswahlkriterien (Schwellenwert) entsprechen. Das Feld max_responses bestimmt die maximale Anzahl der tatsächlich zurückgegebenen Einträge. |
| Zähler | Enthält die Anzahl der Elemente, die in den Array-Elementen zurückgegeben werden Diese Anzahl ist die Anzahl der Datenwerte, die die Auswahlkriterien (Schwellenwert) erfüllt haben, begrenzt auf max_responses. |
| Positionen | Das Array, das verwendet wird, um Zählerelemente zurückzugeben. Dieses Array ist in der Datenstruktur SpmiHotItems definiert. Jedes Element im Array SpmiHotItems hat die folgenden Felder:
|