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.

Die RSI-Schnittstelle unterstützt die folgenden Datenstrukturen:
  • 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.
Hinweis: Die beiden Wertfelder sind als Union-Werte definiert, d. h., die tatsächlichen Datenfelder können je nach Flags in der entsprechenden 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:
Name
Der Name des Peerkontexts, für den die Werte zurückgegeben werden
val
Gibt den Wert des Zähler-oder Ebenenfelds für die Peerstatistik zurück. Dieses Feld gibt den vom ursprünglichen Lieferanten des Werts verwalteten Wert der Statistik zurück. Das Feld val wird jedoch in ein SPMI-Datenformat konvertiert.
Wert ändern
Gibt die Differenz zwischen dem vorherigen Zählerstand des Zählers und dem aktuellen Zählerstand zurück, wenn die Statistik Zählerdaten enthält. Wenn dieser Wert durch die in der SpmiHotSet -Struktur zurückgegebene abgelaufene Zeit dividiert wird, kann eine Ereignisrate pro Zeiteinheit berechnet werden.