6.11.2001

Architektur, Optimierung, Überwachung

 

An dem Bild können wir zwei Bereiche erkennen. In den Executive-Diensten sind die Hardwaretreiber integriert. Die Anwendungen laufen im benutzerspezifischen Teil ab. Je höher die seitlich angeschriebenen Prioritätszahl ist, desto wichtiger ist der Prozess für das System. Executive-Dienste sind im wesentlichen Dienste wie der Session-Manager (smss.exe). Dieser verwaltet die Prozesse untereinander. Ein Programm wie der I/O-Manager regelt die Ein- und Ausgabeoptionen auf alle möglichen Geräte und der VMM regelt den virtuellen Speicher. Als weitere kann man auch den PnP-Manager und den IPC-Dienst (Interprozess Communication) dazuzählen. Letzterer wird unterteilt in zwei weitere Bereiche, den LPC (Local Procedure Call) und den RPC (Remote...). Die RPC ist hauptsächlich für die Verwaltung der Serverkommunikation verantwortlich.

Die HAL ist der Hardware Abstraction Layer und damit die zentrale Schnittstelle zur Hardware. Im Benutzermodus gibt es die intergrierten Teilsysteme und die Umgebungsteilsysteme. Ein Teil der integrierten Teilsysteme ist der Sicherheitsdienst, welcher z.B. bei der Anmeldung an den Rechner das Token erstellt. Weiterhin wird darüber die Zugriffskontrolle und -überwachung für Dateien und Objekte (LSASS / Local Security Authority SubSystem). Der Arbeitsstationsdienst erlaubt es einem, auf Ressourcen im Netzwerk zuzugreifen, der Serverdienst erlaubt es einem, diese bereitzustellen. Die Umgebunsteilsysteme sind Prüfungsrelevant, deshalb schauen wir sie uns genauer an:

Ein Teil davon ist das POSIX (Portable Operating System Interface for Unix). Sinnvoll zum Beispiel, wenn Windows auf Dateiebene zwischen Gross- und Kleinschreibung unterscheiden muss. Es ist aber hauptsächlich die Unterstützung für ältere UNIX-Systeme gewährleistet, welche die Regierung benutzte. Erwähnt ist es in einer IEEE, und damit ein Standard.

Win32 ist die Ausführungsumgebung für 32-Bit-Programme (CSRSS / Client Server Runtime SubSystem). Die NTVDM (NT Virtuell DOS-Machine) ist dasselbe für die DOS-Programme und wird als Dienst gestartet, wenn ein DOS-Programm läuft. Jedes DOS-Programm wird in seiner eigenen NTVDM ausgeführt. Der Sinn besteht darin, dass bei einem Absturz in dem DOS-Programm nur die NTVDM in Mitleidenschaft gezogen wird und nicht das ganze System. Damit DOS-Programme überhaupt laufen, muss ein System emuliert werden. Dazu kann man sogar die Startdateien anlegen (autoexec.nt / config.nt) bzw. anpassen. Weiterhin ist im System der komplette Satz an Startdateien wie msdos.sys, io.sys und so weiter enthalten. Die Anpassung erfolgt über die _default.pif im Windows-Verzeichnis.

Win16-Applikationen werden ebenfalls ein NTVDM-Dienst gepackt. Das nennt man WOW (Windows over Windows). Im Standardfall starten alle Win16-Programme in einer WOW. Der Vorteil ist die Verwendung von Shared-Memory, der Nachteil besteht darin, wenn ein 16Bit-Programm abstürzt, sind anderen Programme in der WOW davon beeinflusst. Um das zu verhindern, kann man getrennte WOWs dafür einrichten, die dann jeweils einen anderen Speicherbereich belegen. Das macht man, wenn man eine Verknüpfung erstellt, un in dieser dann eine Checkbox "getrennter Speicher" anklickt.

Im Taskmanager sieht das dann so aus:

Eine zweite Methode zur Einstellung ist an der Kommandozeile mit dem Befehl Start:

Start /separate datei.exe heisst der vollständige Befehl.

Mit start kann man auch die Prioritäten der jew. Programme einstellen. Grafisch geht das über den Taskmanager: RM auf den jew. Prozess \ Priorität festlegen. Es gibt davon sechs Einstellungen: niedrig (4), niedriger als normal (6), normal (8), höher als normal (10), hoch (13) und Echtzeit (24). Die in Klammern stehenden Zahlen geben die Priorität wieder, welche in dem Bild oben auf der Site eingetragen sind. Die Echtzeit-Option steht nur Admins zur Verfügung, aber der Sinn über den Nutzen ist umstritten. Ist das System auf "Anwendungen" konfiguriert (RM \ Arbeitsplatz \ Eigenschaften \ Erweitert \ Systemleistungsoptionen), dann hat das aktive Fenster eine Priorität + 2, bei Hintergrunddienste ändert sich im Normalfall nichts. Bei W2k-Prof. ist der Standard "Anwendungen", beim Server "Hintergrunddienste".

W2k bietet noch mehr Features: Multithreading und Multitasking.

Ein Prozess kann mehrere Threads verwalten; Threads sind die eigentlichen Anforderungen an die CPU, die auf einer Zeitscheibe abgearbeitet werden. Jeder Thread nimmt einen Teil der Zeitscheibe ein. Multithreading heisst nicht anderes, als das ein Prozess mehrere Threads starten und verwalten kann. Der Sinn ist klar: Mehrprozessorsysteme sind für solche Prozesse das Richtige.

Multitasking ist unterteilt in präämptives und kooperatives Multitasking. Präämptives Multitasking kommt bei Ein-Prozessor-Systemen zum Einsatz.

Im Taskmanager auf dem Anwendungsfenster kann man:

- sich den Status von Tasks (Anwendungen) anzeigen zu lassen
- Tasks beenden
- Tasks starten
- Zu dem jew. Prozess wechseln.

Unter Prozesse kann man dann u.a. einen Prozess oder seine Prozessstruktur beenden. Der Unterschied ist, falls eine Anwendung mehrere Prozesse und Unterprozesse startet, kann man diese mit der Struktur komplett beenden. Die Ressourcen werden danach freigegeben. Weiterhin kann man Prioritäten zuweisen oder die Zugehörigkeit eines Prozesses festlegen. Weiterhin kann man die Informationen über 16Bit-Tasks ausblenden.

Kleines Beispiel:

Verweigern wir einem Benutzer den Zugriff auf die Explorer.exe und den Taskmanager, hat dieser bei der Anmeldung ein leeres Fenster und kann den Manager nicht aufrufen. Schreiben wir ein Anmeldeskript, welches nur ein Programm öffnet, kann der Benutzer nur mit dem  Programm arbeiten. Alles andere ist weg. ;-)

Der Taskmanager gibt uns wesentliche Performanceoptionen: Im Standardfall zeigt er uns den Namen der Prozesse, Die Prozess-ID, die CPU-Nutzung, die Zeit, die der Prozessor von dem Prozess belegt wurde seit dessen letzten Start und die Speichernutzung. Unter "Ansicht" kann man diverse Spalten hinzufügen wie z.B. Threads, Handles (pro CPU), Seitenfehler (wenn der VMM Daten aus der Auslagerungsdatei liest, nennt man das Seitenfehler) und diverse E/A-Anzeigen. Ein weiteres Fenster im Taskmanager ist die Systemleistung. Dort findet man die Speichernutzung und der CPU-Nutzung pro CPU. Das wird grafisch dargestellt. Man kann sich den Kernelmodus extra anzeigen lassen. Die Anzeige Threads ist ungefähr zehnmal so gross wie die Anzahl der Prozesse. Handles ist alles, was an Variablen gerade offen ist, seien es Registry-Keys oder Benutzervariablen oder so... Weiterhin sehen wir die Nutzung unseres Systemspeichers. Der Systemcache ist das, was Windows offenhält, um wichtige Operationen schneller auszuführen.

Abschliessenderweise benutzt man den Taskmanager, um nicht reagierende Programme zu beenden und um sich einen schnellen Überblick über die momentane Systemauslastung zu machen. Weiterhin kann man die Prioritäten laufender Programme ändern.

Serveroptimierung:

RM \ Netzwerkumgebung \ Eigenschaften \ RM auf die LAN-Verbindung \ Eigenschaften \ Datei- und Druckerfreigabe \ Eigenschaften.

Dort findet sich dieses Bild. Verwendeter Arbeitsspeicher minimieren heisst, dass man damit mehr Cache für Anwendungen und weniger für diesen Dienst reservieren kann. Beim Lastenausgleich besitzen die Anwendungen und der Dienst ungefähr gleich viel Cache, und beim "Datendurchsatz..." steht für den Dienst mehr als für die Anwendungen zur Verfügung. Für Netzwerkanwendungen, die selbst einen Cachebereich verwalten, wie MS-SQL, brauchen keinen bereitgestellten Cache. Mit der Einstellung "Für Netzwerkanwendungen maximieren" wird der Systemcache 'zurückgefahren' und verkleinert.

 

Systemmonitor und Co.

Aufzurufen unter Start \ Programme \ Verwaltung \ Systemmonitor.

Klickt man auf das Plus-Zeichen in der Menüleiste, erscheint folgendes Bild:

Damit kann man Leistungsindikatoren hinzufügen. In diesem Fenster können wir den Computer (lokal, remote) und das Objekt (Kategorien wie: Prozessor, Speicher, System, phys. Datenträger oder IP) anwählen. Eine Instanz ist eine Einheit einer Objekt-Kategorie. Wenn man z.B. mehrere Prozessoren besitzt, kann man mehrere Instanzen der Prozessorkategorie wählen. Ein Indikator ist in unserem Fall ein Anzeigewert. Wir fügen als Beispiel den Prozessorindikator (%Prozessorzeit) hinzu. Danach vom System die Prozessorwarteschlangenlänge, vom Speicher die Seiten / Sekunde, vom phys. Datenträger die %Zeit und vom der Netzwerkschnittstelle die Ausgabewarteschlangenlänge für den NDIS 5-Treiber. Die Prozessorwarteschlangenlänge zeigt die Daten, die auf den Prozessor warten. Ein Indikator zur Überlastung des Prozessors. Die Seiten / sekunde sagt an, wenn Seiten auf den Datenträger geschrieben oder von ihm gelesen werden. Der phys. Datenträger zeigt die Auslastung der Festplatte.

Das sieht nachher so aus:

Wenn man in dem unteren Bereich eine Zeile markiert und dann STRG + H drückt, wird die Linie hervorgehoben. Im Grossen und Ganzen dient der Systemmonitor zum Betrachten der Daten, welche entweder aktuell gesammelt werden oder aus einer Datei stammen. Als Anzeigen gibt es ein Diagramm (Standard), ein Balkendiagramm und einen Bericht, welcher Zahlenwerte präsentiert.

Es gibt auch ein Leistungsindikatorenprotokoll. Wir erstellen dort ein neues Test-protokoll: Unter der linken Seite unter Leistungsdatenprotokolle fügen wir ein neues Leistungsindikatorenprotokoll hinzu. Als Indikatoren nehmen wir die Prozessorauslastung in Speicherseiten / sekunde. Das Messintervall steht Standardmässig auf 15 Sekunden. Als Protokolldateityp gibt csv, tsv und blg-Dateien. Letztere nimmt der Systemmonitor gerne wieder ein... Als Maximalgrösse ist der Standard 1 MB. Im Zeitplan gibts noch weitere Einstellungen.

Nach der Einrichtung eines Systems misst man normalerweise eine Baseline über einen arbeitstypischen Zeitraum (meistens eine Woche), so kann man Veränderungen hinterher besser feststellen.

Wir stoppen nach einiger Zeit unsere Testmessung, klicken im Monitor auf "Protokolldaten anzeigen", wählen unsere Datei an und ... sehen nix. Eventuell muss man nämlich noch RM \ Leistungsindikatoren hinzufügen. Dort stehen dann unsere vorher angegebenen Indikatoren.

Man kann auch Warnungen konfigurieren. Wir erstellen eine neue Warnung "testwarn". Wichtig dafür sind Schwellwerte. Wir nehmen die Prozessorauslastung. Als nächstes kann auch damit eine Netzwerknachricht verschickt werden. Wunderschönerweise findet man in der Ereignisanzeige sysmon-Meldungen.

Hier mal ein Beispiel zur Speicherperformance:

Objekt Indikator
Speicher Seitn / s
Speicher verfügbare Bytes
Auslagerungsdatei Nutzung%

Prozessorperformance:

Prozessor %Prozessorzeit ~80%
System Prozessorwarteschlange ~2 per CPU
    Aufgabe des Rechners

Festplattenperformance:

Es gibt auf der Kommandozeile mit dem Befehl diskperf die Möglichkeit, die Indikatoren zu aktivieren oder deaktivieren.

      aktivieren deaktivieren
phys. Datenträger Platte diskperf -YD -ND
log. Datenträger Partition -YV -NV

 

Objekt Indikator
log. Datenträger %freier Platz
phys. Datenträger %Zeit

Netzwerkindikatoren:

Objekt Indikatoren
Netzwerkschnittstelle Bytes / s
Netzwerkschnittstelle Ausgabewarteschlange
IP  
TCP  

Will man das Netzwerk genauer unter die Lupe nehmen, sollte man sich den Netzwerkmonitor installieren. In der Systemsteuerung unter Software eines der Verwaltungstools. Danach ist das Programm unter Start \ Verwaltung \ Netzwerkmonitor