Offene Systeme nicht nur auf Workstations.

Unix auf Mainframes. Eine hohe Leistung und offene Architektur

22.11.1991

Das Betriebssystem Unix hat durch seine offene Architektur den DV-Markt entscheidend verändert. Entgegen der ursprünglichen Konzeption für kleinere und mittlere Mehrplatz-Systeme bewährt sich das Betriebssystem zunehmend auf Mainframe-Rechnern. Das gilt inzwischen selbst für den Online-Transaktionsbetrieb (OLTP) einer klassischen Domäne proprietärer Großrechner-Betriebssysteme. Aus der Sicht der Pyramid GmbH formuliert Friedrich Schanda die Voraussetzungen für den Unix-Erfolg auf Mainfraimes.

Noch vor wenigen Jahren wurden mit dem Begriff "Mainframe" zwei Dinge assoziiert: Herstellereigene Betriebssysteme, speziell auf den entsprechenden Großrechner zugeschnitten, und die drei Buchstaben "I", "B" und "M". Der Vorschlag, Unix auf einen solchen Rechner zu implementieren, hätte so manche EDV-Runde wohl eher zu größerer Heiterkeit animiert. Und tatsächlich eignete und eignet sich Unix in seiner ursprünglichen Form nicht für einen solchen Einsatz.

Modifikationen am Betriebssystem

Mit dem Trend hin zu offenen Systemen wurden aber die Anwender immer kritischer gegenüber proprietären Betriebssystemen. Die Anforderungen waren klar: Eine Unix-Implementierung war gefragt, die die Funktionalität eines klassischen Mainframe-Betriebssystems bei gleichzeitiger Erfüllung anerkannter Unix-Standards weitgehend abdeckt.

Dazu bedurfte es der Modifizierung sowohl des Betriebssystemkems speziell bei der Unterstützung von Mehrprozessorsystemen als auch der Betriebsmittelplanung und- kontrolle. Spätestens mit dem Einzug von Unix in die kommerzielle Anwendungswelt war dieser Trend - auch vom Mainframe-Marktführer - nicht mehr zu stoppen.

Die Hersteller wurden immer mehr mit Problemen wie Integration von Hardware verschiedener Anbieter, Portierbarkeit und Investitionsschutz konfrontiert. Diese Probleme konnten nur gelöst werden, indem die Einbindung der unterschiedlichen Systeme durch die Einführung einer einzigen Betriebssystemumgebung betrieben wurde. Erst offene Systemarchitekturen ermöglichen nämlich dem Anwender, bereits vorhandene Hardware und Anwendungen mit neueren Technologien zu kombinieren. Da zudem die aktuelle Investition in Hard- und Software erhalten bleibt, ist das Konzept der offenen Systeme eben die kostengünstigste Lösung

Um jedoch mit Unix gegen die proprietären Konkurrenten bestehen zu können, ist es nötig Erweiterungen am Unix-Betriebssystem vorzunehmen, die auch unter diesem Betriebssystem Mainframe-Power garantieren. Die Richtlinien für solche Eingriffe werden bestimmt von den Anwenderforderungen, denn auch ein Umsteiger auf ein offenes System will natürlich nicht auf Ressourcen verzichten, die er von einer proprietären Systemlösung gewohnt ist. Um im Mainframe-Markt erfolgreich zu sein, muß ein System die folgenden Anforderungen erfüllen: - Einbindung großer Datenbanken,

- Unterstützung der großen Zahl der Online Benutzer,

- schnelle, garantierte Antwortzeiten,

- hohe Zuverlässigkeit und Verfügbarkeit des Systems,

- Daten- und Rechnersicherheit,

- Einfache Bedienung und Verwaltung sowie

- Kommunikation mit IBM-Mainframes.

Systeme in dieser Umgebung müssen sowohl die Anforderungen an Stapelverarbeitungs- als auch an OLTP-Umgebungen erfüllen. Dabei gewinnen relationale und verteilte Datenbank-Architekturen sowie die Skalierbarkeit des Systems zunehmend an Bedeutung, zumal bei weltweit verteilten Rechnerkapazitäten. Diesen Funktionen stehen auf der Hardwareseite die Forderungen nach hoher Rechenleistung gegenüber. Ohne sie lassen sich die Anwender nicht von einem Umstieg auf Unix überzeugen.

Schnelle Prozessoren sind essentiell, denn sogar in einem System, das symmetrisches Multiprocessing unterstützt, ist ein einzelner Job - ob eine komplizierte Datenbankanfrage oder ein nachts durchgeführter Stapelreport - nur so schnell wie er auch auf einem Rechner mit Einzelprozessor wäre. Das gilt jedoch nicht, wenn die Anwendung speziell so programmiert ist, daß sie die Möglichkeiten des Multiprocessing ausnutzen kann. Diese Tatsache gilt unabhängig davon, wieviele Prozessoren sich in einem System befinden. Aus diesem Grund bringt ein System, das eine nicht übermäßig große Zahl von schnellen Prozessoren beinhaltet, folgerichtig einen höheren Durchsatz als ein System mit vielen, langsamen Prozessoren, vorausgesetzt, daß alle anderen Bedingungen gleich sind.

Mit schnellen Prozessoren alleine ist es also noch nicht getan, denn diese müssen ständig mit Daten und Instruktionen beliefert werden. Das Abrufen eben jener Daten und Instruktionen von der Festplatte erfordert leistungsfähige I/O-Subsysteme, die in der Lage sind, Hochgeschwindigkeitsdatenübertragungen sowie Suchoptimierungen durchzuführen und große Festplatten-Kapazitäten zu unterstützen.

Sinnvoll ist in diesem Zusammenhang auch die Möglichkeit, jedesmal, wenn neue Peripherie-Geräte in das System integriert werden, auch die Prozessorkapazität zu vergrößern, um so eine erhöhte I/O-Belastung auszugleichen.

Eine der größten Sorgen der Hardware-Entwickler hinsichtlich einer Umgebung mit Multiprocessing ist, sicherzustellen, daß die Busstruktur des Systems der Belastung, der sie durch die mehrfachen CPUs ausgesetzt ist, standhalten kann.

Wenn nämlich die Anzahl der Prozessoren in einem System steigt, erhöht sich zwangsläufig auch die Zugriffshäufigkeit auf die gemeinsamen Ressourcen wie Speicher und Controller für Peripherie-Geräte. Wird dieser "Streit" nicht gelöst, entsteht ein Engpaß, der die Nutzung der zusätzlichen Prozessoren verhindert.

Cache-Algorithmen optimieren Busbandbreite

Hier helfen Cache-Algorithmen, welche die Busbandbreite, die für die Kommunikation zwischen CPUs und Prozessen nötig ist, optimieren. Das Ergebnis ist eine effizientere Implementierung des symmetrischen Multiprocessing. Eine Möglichkeit ist das Dual-Cache-Konzept, das zwei große Cachespeicher beinhaltet: einen für die Daten und einen für die Instruktionen.

Die Verwendung von getrennten Cache-Speichern erleichert die verbesserte Ausnutzung der beiden Speicher je nach Systemanforderungen und erhöht damit die Cache-Trefferquoten. Und eine Steigerung der Cache-Trefferquoten führt direkt zu einem verbesserten Durchsatz, da die Anzahl der Speicherzugriffe reduziert wird.

Bei Architekturen mit Multiprocessing ist es jedoch möglich, daß zwei oder mehrere CPUs teilweise die gleichen Daten in ihren jeweiligen Daten-Cachespeichern haben. Da der Daten-Cachespeicher während der Ausführung eines Programms häufig verändert wird, muß demnach eine Übereinstimmung der Daten-Cachespeicher aller Prozessoren gewährleistet sein. In einem System mit symmetrischem Multiprocessing ist dies mithin einer der wichtigsten Faktoren, um ein lineares Verhalten des Durchsatzes zu gewährleisten, wenn zusätzliche Prozessoren integriert werden.

Hinsichtlich der Speicherarchitektur gibt es bei Multiprozessorsystemen unterschiedliche Lösungen. In einem System mit eng gekoppelten globalen Speichern werden diese beispielsweise von allen Systemprozessoren über einen einzigen Bus gemeinsam genutzt. Dadurch wird sowohl die gemeinsame Nutzung von Daten und Ressourcen als auch die Kommunikation zwischen Prozessen erleichtert.

Um Tasks zuzuordnen und sicherzustellen, daß alle Prozessoren arbeiten, während Jobs warten, verwendet zum Beispiel Pyramid ein Verfahren, bei dem einzelne, logische Jobwarteschlange das Task-Scheduling koordiniert. Die auszuführenden Jobs werden in eine Warteschlange gestellt, bis die nächste CPU verfügbar ist.

Es können jedoch bei der kommerziellen Datenbankverarbeitung Fälle auftreten, in denen dieses Verfahren nicht mehr ausreicht, um die maximale Leistung zu erreichen. Dann sollte die Möglichkeit bestehen, Prozesse teilweise oder ganz an Prozessoren zu binden, Prozesse mit einstellbaren, festen Prioritäten auszustatten oder bestimmte Prozesse von bestimmten CPUs fernzuhalten.

In einem Standard-Unix-System werden Prozesse rigoros nach Ablauf ihrer Zeitscheibe unterbrochen. Dann entscheidet das Betriebssystem (genauer: der Scheduler) nach Neuberechnung der Prioritäten aller Prozesse über deren Schicksal. Handelt es sich zufällig um einen Datenbankprozeß, welcher gerade eine kritische Ressource gesperrt hat, hat dieser "Pech gehabt" (und auch alle anderen Prozesse, die diese Ressource benötigen). Preemtion Control erlaubt einem solchen Datenbankprozeß, sich gegen solche Routine-Unterbrechungen zu schützen. In der Praxis macht sich dieser Mechanismus in einer deutlich erhöhten Durchsatzleistung bei Datenbankanwendungen bemerkbar.

Von der Software-Seite her bedurfte es neben der Integration zweier Unix-Welten ebenfalls noch Erweiterungen, um die Funktionalität von Unix Mainframe-like zu gestalten:

- Virtual Disk: Das Standard-Dateisystem bei Unix bietet nicht gerade die besten Dateiverwaltungsmöglichkeiten. Dies wird häufig durch eine vom Anwendungsentwickler selbst verfaßte Dateiverwaltungssoftware ausgeglichen. Virtuelle Festplatten bieten hingegen die Plattenverwaltungsfähigkeiten auf Systemebene, die in großen kommerziellen Umgebungen benötigt werden.

-Spiegelplatten: Wie die meisten proprietären Betriebssysteme muß nun auch Unix die Möglichkeit nutzen durch den Einsatz von Spiegelplatten die Datenintegrität sicherzustellen.

-System-Lastverteilung: Die Standardversion von Unix ist ein sehr "demokratisches" Betriebssystem, das in der Regel jedem Anwender im gleichen Maße Zugriff auf die Systemressourcen gewährt. Dies ist jedoch in Datenbankumgebungen häufig ineffizient. Sinnvoll ist daher eine Ergänzung, die die Möglichkeit eröffnet, die Zuordnung der Prozeßprioritäten auf die jeweilge Anwenderumgebung abzustimmen.

- Asynchrones In- und Output-Verfahren und geordnete Schreibvorgänge: Diese I/O-Variante ermöglicht dem Entwickler von Datenbanken die Einschränkungen der ursprünglichen Unix-Versionen bezüglich der Schreib- und Lesevorgänge zu überwinden. Schreibvorgänge auf die Festplatte werden synchron vom Buffer-Cache ermöglicht, wobei die Reihenfolge der einzelnen Schreibvorgänge beibehalten wird. Lesevorgänge dagegen werden asynchron behandelt. Sobald ein Leseauftrag ausgegeben ist, kann der Prozeß mit der Ausführung der nächsten Task beginnen.

Neben Hardware- und Software-Voraussetzungen ist die Kommunikation im Netzwerk die dritte tragende Säule, um Unix im Bereich "Mainframe" sinnvoll betreiben zu können. Als die Technik der Zeit gilt das Client/Server-Verbundmodell. Es ermöglicht vielen Anwendern, Informationen über lokale und Wide Area Networks gemeinsam zu nutzen. Dabei wird die gesamte Bandbreite an Rechnergrößen vom Personal Computer bis hin zu anderen Mainframes abgedeckt. Die Protokoll-Verarbeitung wird getrennt über intelligente Komunikations-Controller (ISC) ausgeführt, so daß die CPU-Ressourcen für andere Tasks verfügbar sind.

Netzwerk-Unterstützung vom LAN bis zum WAN

Zwar hat hier Sun Microsystems mit ihrem Network File System (NFS) einen offenen herstellerunabhängigen Standard für die transparente, gemeinsame Nutzung von Dateien in einer gemischten Rechnerumgebung gesetzt. Aber auch hier gilt, daß für Verwendung in Großrechnerumgebungen einige Erweiterungen nötig sind:

- Sicherheitsvorkehrungen sollten dem Systemverwalter ermöglichen, einen unberechtigten Zugriff auf das Dateisystem eines Servers zu unterbinden oder nur einen Lesezugriff zuzulassen.

- Quoten-Regelungen ermöglichen dem Systemverwalter, die Größe des Plattenbereichs, den ein Benutzer auf dem Server-System belegen kann, einzuschränken.

- Wenn ein Server oder das Netzwerk ausfallen, sollte es möglich sein, die Steuerung wieder dem Client-System übertragen.

Darüber hinaus dürfen auch die in vielen Unternehmen vorhandenen IBM-Mainframes nicht ignoriert werden. Besonders in übergreifenden Management-Informationssystemen (MIS) sind dafür entsprechende Kommunikationseinrichtungen unerläßlich. Dazu gehören die Unterstützung von SNA, die Emulation von 3270-Terminals und Peer-to-Peer-Kommunikation auf der Basis der Standardschnittstelle LU6.2. Alles zusammengenommen zeigt sich also, daß Unix und Mainframes heute kein Gegensatz mehr sind, denn all die oben genannten Erweiterungen der Betriebssystemmöglichkeiten sind bereits realisiert. Das Multiuser-Betriebssystem stellt sich daher als die ideale Grundvoraussetzung dar, um ein offenes System der Mainframe-Leistungsklasse für große, kommerzielle Anwendungen aufzubauen.