Overkill (Informatik)
Bei der Entwicklung einer Hard- oder Softwarelösung bezeichnet der englische Begriff Overkill in der Informatik:
- eine zu umfangreiche Umsetzung von technisch gesichteten Möglichkeiten im Anwendungsfall, von der das Gesamtkonzept nicht profitiert,
- eine übermäßige „tiefe“ Optimierung, die die Leistung unter strategischen Gesichtspunkten nicht (wesentlich) erhöht.
Ein eindeutiges Beispiel für einen Overkill in der Informatik ist, wenn die gleiche Aufgabe mehrfach bearbeitet wird, obwohl das Ergebnis praktisch schon vorliegt (z.B. durch das Fehlen einer Abbruchbedingung oder Verzweigung[1]).
Der sogenannte Overhead dabei ist die Zeit die in Anspruch genommen wird, bis die Information dort ankommt, wo sie logisch als nächstes benötigt wird („worst case“), abzüglich der durch die Informationstheorie mindestens erwarteten Laufzeit der Information („best case“). Zusätzlicher Overhead entsteht, wenn die Information weniger Nutzdaten enthält.
Bei alten Computern kann man manchmal schneller in den Tastaturpuffer schreiben, als die Zeichen am Bildschirm angezeigt werden. Läuft die Tastatur asynchron, können Zeichen „verschluckt“ werden;[2] oder es erscheint gleich eine ganze Zeile mit dem Buchstaben, den man gerade gedrückt hat.[3]
Inhaltsverzeichnis
Übrigens: Die PlusPedia ist NICHT die Wikipedia. Wir sind ein gemeinnütziger Verein, PlusPedia ist werbefrei. Wir freuen uns daher über eine kleine Spende! |
1 Anwendungssoftware
In Hinsicht auf Anwendungssoftware kann das Produkt mehr Funktionalität enthalten, als der Anwender im Endeffekt praktisch nutzt, nutzen kann, oder sinnvoll für den Einsatzzweck ist. Dabei spielt die Struktur, Eingabeperipherie und die Präsentation („Usability“) bei dem Anwender eine entscheidende Rolle, damit es beim Erlernen nicht zur Überforderung kommt - z.B. durch zu viele Optionen, Konfigurationsmöglichkeiten, oder Methoden eine Aufgabe auf unterschiedliche Art und Weise zu bearbeiten - sondern leicht zugänglich ist. Eine gute Grunddokumentation mit Einstiegshilfen oder z.B. eine situationsabhängige Hilfefunktionen ist förderlich, um mit der Software arbeiten zu können.
Bei dem Computerspiel Tetris kommt es früher oder später zum 'Game Over', wenn der Spieler es nicht schafft, die Steine genau genug anzuordnen. Setzt der Spieler einen Stein daneben, entsteht jedesmal Overhead (erkennbar durch Lücken in einer Zeile).
2 Betriebssysteme
Betriebssysteme können überflüssige Erweiterungen (insbesondere Hintergrunddienste, Daemons; z.B. vorhandene Software zur Indizierung des Festplatteninhalts oder Virenscanner) und überladene Funktionen enthalten, die den eigentlichen Arbeitsablauf behindern oder die Gesamt-Performance des Computersystems schwächen. Dies führt hin bis zu künstlich aufgeblähter Anwendersoftware, die durch ihre Positionierung am Markt im Extremfall vorgibt die 'generell und universell am besten geeignete' Software für möglichst viele Zwecke gleichzeitig zu sein, oder Felder abdecken will, für die sie nicht die am besten geeignete Lösung ist. Bekannte Marketingbegriffe sind u.a. 'Premium', 'Ultimate', 'Platinum', 'Professional', etc. bei denen man sich genau überlegen sollte, was drin ist oder ob sich der Aufpreis lohnt (was nicht bedeutet, dass diese Produkte uninteressant sein müssen). Manche Schadsoftware kann durch Suggestion, z.B. dass sie zwangläufig notwendig oder erforderlich ist, einen völlig anderen Zweck erfüllen als angegeben.[4] Bei vernetzten Computern kann sie die Datensicherheit kompromittieren; z.B. durch Ausnutzung eines Pufferüberlaufs[5] oder einer NOP-Rutsche[6] (Mnemonic für NOP: „no operation“).
Bei bestimmten EDV Anlagen fällt die Kommunikation der Softwarekomponenten untereinander und mit der Hardware, insgesamt unter vielen Aspekten umständlich und langwierig aus, z.B. wenn bestimmte Abläufe in einer Kette eher interpretiert werden und nicht integraler Bestandteil sind (z.B. schlecht angebundene Datenbanken, langsame Softwarestacks[7], Browser Erweiterungen).
Um mehr als 4 Gigabyte Arbeitsspeicher unter einem 32-Bit OS (mit 32-bit CPU) zu verwalten, muss das OS auf eine MMU zurückgreifen, die in den meisten CPUs integriert ist. Dabei lagert das OS viele Teile auf die wesentlich langsamere Festplatte aus, wobei die Balance zunehmend schlechter wird, je größer das effektive Datenaufkommen ist. Um mehr schnelleren Arbeitsspeicher gleichzeitig nutzen zu können, muss man das OS auf eine 64-Bit Version upgraden. Es gibt hier aber auch Ausnahmen, denn falls eine 32-Bit Software unter einem 64-Bit OS läuft, kann man nicht ohne weiteres mehr als 4 Gigabyte Speicher für ein eizelnes Programm in Anspruch nehmen[8]. Es kann sogar sein, dass man wie unter MacOSX 10.5 (welches 64-Bit Unterstützung bietet) nur 2 Gigabyte für eine 32-Bit „App“ allokieren kann.
3 Softwareentwicklung
In der Softwareentwicklung kann z.B. ein Brute-Force Sortieralgorithmus, der alle möglichen Werte strikt der Reihe nach durchprobiert, bis der positiv-Treffer für eine weitere Iteration gefunden ist, einen gewaltigen Overhead bei der Ausführung produzieren. Der Overhead kann dann, durch eine effizientere Methode (durch weitere logische Ausschließung der nicht gewinnbringenden Fälle wie bei Bubblesort) und erst durch eine rekursive Implementierung (Quicksort) wesentlich reduziert werden. Einfachere Methoden erfordern in der Regel einen hohen Speicherdurchsatz und Verarbeitungsgeschwindigkeit, was in der Regel auch mit einem höheren Energieverbrauch verbunden ist.
Anm.d.A. Ein effizienter Programmierstil führt dazu, die technisch vorgesehen Funktionalität sinnvoll auszunutzen und den Nutzungsgrad falls erforderlich in alle Richtungen optimieren und ggf. portieren zu können (selbst wenn die Ergebnisse nicht direkt zielführend oder zu zeitaufwändig sind).
Um einen Overhead bei der Programmierung zu vermeiden, können Überlegungen zur effizienten Speichernutzung[9] und die Verkürzung von Laufzeiten den Code stark beschleunigen. Insbesondere auf Hardware naher Ebene ist die Codierung bei der Abbildung von Daten auf dem Stack (siehe Stack-orientierte-Maschine, Datentypen) und den unterschiedlichen Speicherbereichen, der Nutzung der Register als schnellste Speicherplätze des Prozessors, ebenso wie eine effiziente Nutzung der Maschinenbefehle (Assembler-Programmierung mit Mnemonics) und Adressierungsarten wichtig. Das zahlt sich bei häufiger Nutzung dieser 'hochoptimierten' Routinen aus, etwa bei der Entwicklung eines Compilers mit Linker-Bibliotheken (die Grundfunktionen für eine breite Front enthalten), oder bei der Generierung zeitkritischer Programmteile.
Die Laufzeiten der Routinen und die Prozessorauslastung hängen dabei u.a. von der verwendeten Prozessorarchitektur (die wiederum eine Implementation der Logik der Maschinenbefehle in Microinstruktionen enthält; und der darin ggf. speziell enthaltenen Optimierungen. Diese Optimierungen sind beispielsweise 3-fach abgestufte Caches oder parallel(-isiert) arbeitenden Einheiten (SMT) oder spezialisierte Befehlssätze, die softwaretechnisch auch richtig genutzt bzw. erstmal unterstützt werden wollen[10][11].
4 Computerarchitektur
In der Computerarchitektur kann es z.B. ein Overkill sein, wenn eine 1000-MBit-Ethernet Schnittstelle durch die anderen an dem I/O Prozess beteiligten Komponenten (wie Festplatten, CPUs, deren Bussysteme, und die zugehörigen Softwarekomponenten wie Kernel, Treiber, Protokolle, Filesysteme, ...) technisch nicht ausgelastet werden kann. Sollte die Festplatte nur 60 Mbyte/s liefern, kann die Netzwerkverbindung in einer Richtung nur ungefähr zur Hälfte ausgelastet werden. Wenn also auch nur ein Glied in der Kette langsamer ist, entsteht ein Overhead (hier: zeitliches Defizit) bei der Netzwerkkarte. Die Analyse eines solchen „bottlenecks“ lässt sich hier noch durch „Trial and error“ herausfinden.
5 Hardwarearchitektur
In der Hardwarearchitektur werden z.B. bei einem CPU Cache unterschiedlich schnell reagierende RAM Typen eingesetzt; mit dem Ziel durch Cachingalgorithmen die Ausführung des Codes zu beschleunigen. Die aktiveren Teile sollten dann in den schnelleren Bereichen liegen, sofern sie nicht zu umfangreich sind und herabgestuft werden müssen.[12]
Bei einem RAM-Modul mit ECC oder Parity entsteht Overhead durch die Verwendung dafür notwendiger zusätzlicher Bauteile. Diese Bauteile werden verwendet um die Datenintegrität zu schützen. Besitzt das Modul noch das Chipkill Feature, kann ein ganzer Speicherbereich bei einer Fehlfunktion deaktiviert werden. Diese Features werden besonders bei Rechnern für Dauerbetrieb eingesetzt.
Soll dem Ausfall eines ganzen Systems durch den Ausfall einer kritischen Komponente vorgebeugt werden, bedient man sich der (mehrfach-) redundanten Auslegung der Komponente (z.B. des Netzteils oder der Festplatte).
Eine der hauptsächlich begrenzenden Faktoren bei den gebräuchlichen Architekturen ist die begrenzte Leistung des Hauptprozessors in Verbindung mit dem Hauptspeicher und den Chipsätzen, über die weitere Peripherie (z.B. USB Geräte) angebunden sind. Dies führte beispielsweise dazu, den Speichercontroller oder eine GPU in die CPU zu integrieren.
Die Integration auf Hardwareebene (Hardwarebeschleunigung) und deren Miniaturisierung und die Verschmelzung von Aufgaben wird zunehmend wichtiger[13][14], da die Aufgaben auch immer komplexer und nicht beliebig auf Subsysteme (Kernel an erster Stelle[15]) aufgeteilt werden können.
Eine CPU über die Werte des Herstellers zu übertakten (Overclocking), kann die Lebensdauer herabsetzen[16], falsche Berechnugen liefern, und insbesondere bei zusätzlicher Erhöhung der CPU Kern Spannung den Stromverbrauch überproportional erhöhen. Außerdem kann es zum Ausfallen bestimmter integraler Bestandteile führen (beispielsweise zuerst nur der FPU), die mit Datenverlust oder einem Absturz verbunden sind (wenn Fehler nicht abgefangen werden). Durch die übermäßig entstehende Hitze, die zunehmend zu einer Elektronenmigration führt, kann eine dauerhafte Beschädigung der CPU eintreten. Dabei löst sich Material ab wodurch letztendlich ein Kurzschluss entsteht. Weitere CPU Entwicklungen können bei einer höheren Taktfrequenz die auftretenden Fehler wirksam durch zusätzliche Logik korrigieren[17].
6 Spezialfälle
6.1 Peripheriegeräte
1. Einen TFT-Monitor zu verwenden, dessen native Auflösung über der gelieferten Auflösung der Grafikkarte liegt, ist Overkill. Die zu wenig vorhandenen Informationen werden durch Interpolation ergänzt, wobei ein Qualitätsdefizit in Form von Unschärfe entsteht. Umgekehrt entsteht ein Overhead bei der Grafikkarte, falls die Auflösung des TFT Bildschirms geringer ist als die der Grafik. Dies ist ebenfalls mit einem Qualitätsverlust verbunden, der im Vergleich aber geringer ausfällt, weil der Informationsgehalt vor der (bildgebenden) Rasterung höher war. Röhrenmonitore sind in dieser Hinsicht flexibler, weil Sie einen dynamischen Fokus verwenden, der analog nur durch die Rasterung der Kathodenstrahlröhre Maske begrenzt wird. Eine doppelte Rasterung wie bei der Verwendung eines TFT Bildschirms geschieht nicht.
In manchen Werbeprospekten wird gerne die Bezeichnung 'dpi' falsch, als Einheit für die Auflösung angegeben (1280 x 1024 dpi u.ä.), was im Bezug auf die Erwartungen die man eventuell im Druckbereich haben könnte, ein völlig falsches Leistungsvermögen vermitteln kann.
Da die meisten Drucker das Bild zeilenweise (zur Beschleunigung streifenweise aus Sicht des Druckkopfes) drucken, gibt 'dpi' die Anzahl der maximal vom Druckkopf in einer Linie von 2,54 cm (enstpricht einem Zoll) druckbaren Punkte an. Das wären dann bei einem TFT Bildschirm mit 1280 Pixel Horizontalauflösung 1280 Punkte pro Zoll, in einer Pixelzeile. Schaut man nun weiter, wobei man nicht weiß, dass dpi ein eindimensionaler Begriff ist, würden unfassbare 1,3 Megapixel in einem Quadrat von 2,54 cm Kantenlänge auf dem Bildschirm darstellbar sein; nach Pythagoras im Bezug auf die Paneldiagonale von 19" Zoll aber eben nur 1310720 Pixel oder Punkte auf dem gesamten Bildschirm. Die eigentliche Panelgröße ist dabei oft kleiner als die Angabe in Zoll (durch Rahmen, Verkleidung) für den Monitor.
Außerdem verfügt ein Drucker aber nur über wenige individuelle Farben (z.B. Cyan + Maganta + Yellow + Key Black) oder C+lC+M+lM+Y+K (2 zusätzliche leichte Farben), die durch Rasterung (z.B. nach Floyd-Steinberg Fehlerverteilung) durch Mischung auf dem Papier und optischer Überlagerungseffekte das Druckbild ergeben. Grafikkarten können in der Regel 2^24 (rund 16 Millionen) individuelle Farben im Format: Rot + Grün + Blau + 256 Helligkeits-Abstufungen pro Farbe liefern, viele gängige Flachbildschirme haben aber einen begrenzten Farbraum, der eher nur Tausende Farben darstellen kann. Röhrenmonitore haben diese Einschränkung durch die anaolge Signalverarbeitung nicht.
Bei astronomisch anmutenden Zahlenangaben ist es daher sinnvoll sich vorzustellen, ab diese Angaben extern bei der Ausgabe relevant, oder doch nur interne Übertreibung ist.
Außerdem kann eine Auflösung von 1280x1024 Pixeln (mit einem festen Seitenverhältnis von 5:4 bei einem TFT-Monitor) besonders ungünstig sein, wenn die Digitalkamera ein natives 4:3 Format liefert: Der Bildschirm stellt es entweder im korrekten Seitenverhältnis mit schwarzen Balken („letterbox“) oben und unten dar (dabei geht zusätzliche Bildinformation verloren, da entweder die Grafikkarte oder die Videologik TFT-Monitor die Grafik, zusätzlich zu der Skalierung der Software, noch einmal skaliert) oder zusätzlich vertikal langezogen („stretched“).
2. Eine WLAN Karte mit Verschlüsselung zu verwenden, die wie bei WEP eklatante Sicherheitsmängel mit sich bringt, ist ebenfalls Overkill. Hier ist der Zeitaufwand - sofern ein Sicherheitsrisiko besteht - zum Umgehen der Verschlüsselung dermaßen gering, dass man auch gleich ohne Verschlüsselung arbeiten kann. Eine Verschlüsselung produziert immer Overhead (hier: insbesondere bei Nutzdaten und Sendeleistung), weil die Veränderungen an der Interpretationslogik dem Empfänger auch mitgeteilt werden müssen.
3. Eine vergessene Karte im Rechner (z.B. ISDN Karte im PCI-Slot) verbraucht unnötig Strom, wenn Sie überhaupt nicht für einen Anschluss an das ISDN verwendet wird. Nicht genutzte „onboard“ Komponenten (wie Firewire, WLAN/Ethernet, DSUB-Serial, evtl. auf dem Board vorhandene Sound- und Grafikchips wenn man stattdessen eine Karte verwendet, usw.) kann man (bei x86 PCs) im BIOS abschalten, wodurch zusätzliche Interrupt-Zeit frei wird, was den Computer beschleunigt.
6.2 Digitalisierung
Bei der Digitalisierung von Audio-Information entsteht hinsichtlich der analogen Natur der Bias-Einstellung immer ein (wenn auch noch so geringer) Overhead. Dies liegt daran, dass bei falscher Einstellung der Dynamikbereich nicht vollständig ausgenutzt werden kann. Auf digitaler Seite kann das zum Datenverlust mit Clipping, bis zur Zerstörung der Lautsprecher durch Verzerrungen auf analoger Seite führen.
Ob ein Overkill bei dem Codec (z.B. bei Abtastrate und Bittiefe) oder der Wandlung (z.B. selektierte Bauteile) vorliegt, ist letztendlich subjektiv oder Teil der Produktphilosophie.
6.3 Verarbeitung digitaler Daten
Bei der Weiterverarbeitung von digitalen Tönen, Bildern oder Videos kann man zusätzlichen Overhead hinsichtlich Qualität vermeiden. Da bei einer wiederholt verlustbehafteten Kompression die Fehlerrate steigt, empfiehlt sich als Ausgangsmaterial das Originalformat zu verwenden.
Im Bereich des Videoschnitts werden (sogar in der Praxis von Fernsehstudios) immer wieder schwache Codecs eingesetzt, obwohl durch eine einfache Auswahl eines besseren Codecs die Qualität nachhaltig verbessert werden könnte. Insbesondere durch (nicht adaptive) Rekodierung in anderen Fernsehstudios, beim Kabel- oder Satellitennetzbetreiber, bis hin zum Internet, wird wertvolle Bandbreite und mögliche Qualität verschenkt.
Betrachtet man die Konvertierung vom NTSC in das PAL Format, sind dabei 10 von 60 Bildern auf Seite von NTSC ein Overhead, weil PAL nur mit 50 Bildern pro Sekunde (fps) arbeitet. Auf der anderen Seite entsteht bei PAL zusätzlicher Overhead, weil besonders die Anzahl der vertikalen Zeilen bei NTSC geringer ist als bei PAL.
Bei der Generierung von Vorschaubildern („thumbnails“), sogar auf Grundlage des JPEG Formats, kann durch spezielle Methoden nur soviel Information aus der Bilddatei gezogen werden, wie beispielsweise für eine kleinere Darstellung von Thumbnails oder Bildern im Webbrowser erforderlich ist.
Leider wird oft die gesamte Bildinformation übertragen und dekodiert, und dann erst auf die eigentliche Größe skaliert.
7 Einzelnachweise
- ↑ computerhope.com: „Endless Loop“
- ↑ YouTube: Java Robot Controls Mouse Position (hier: Mauseingabe)
- ↑ YouTube: The Magic Piano
- ↑ heise Security: Vermeintlicher Patch für Internet Explorer enthielt Trojaner vom 12.11.2010
- ↑ heise Security: Die Rückkehr der Pufferüberläufe
- ↑ heise Security: Tatort Internet Alarm beim Pizzadienst
- ↑ Jelovic, Dejan: Why Java is Slow
- ↑ Books online: Mac OS X Internals A Systems Approach/Section 8.15.4. The Largest Single Allocation (32-bit)
- ↑ Schell, Dominik: Dynamische Programm-Code-Verwaltung und -Optimierung für eingebettete Systeme
- ↑ Intel: [AES-NI] Advanced encryption standard instructions
- ↑ IBM developerWorks: [AltiVec] From the stacks: TCP/IP checksum vectorization using AltiVec, Part 1
- ↑ Hyunjin Lee, Sangyeun Cho, Bruce R. Childers: Performance of Graceful Degradation for Cache Faults
- ↑ heise online: AMD Details der 2011 kommenden Prozessorkerne Bobcat und Bulldozer vom 12.11.2009
- ↑ computerbase.de: Sandy Bridge Modelle vom 15.11.2010
- ↑ Bowman, Ivan: Conceptual Architecture of the Linux Kernel
- ↑ c't > Videos: Risiken des Übertaktens
- ↑ Intels Resilient Computing: Schnellere Prozessoren durch mehr Rechenfehler
8 Weblinks
Hasselbach, Holger: Solitaire Brute Force
IBM developerWorks: „They cannot eat the spaghetti in front of them because they cannot each get two forks.“ (Application tuning with IBM Rational Application Developer)
Microsoft Research: Runtime Analysis and Design
xQIT: Center for Extreme Quantum Information Theory at MIT
9 PDFs
Dr. Joachim Ludwig: Zugangsprobleme der Pädagogik zur Informationsgesellschaft
Reinhard Knör: Wo bleibt die Bildqualität? Und wo HDTV?
simula.no Publications in Software Engineering
ieee.org Information Theory Workshop (ITW)
ieeexplore.ieee.org; Search-Engine [1]
citeseerx.ist.psu.edu: Rethinking Information Theory for Mobile Ad Hoc Networks
citeseerx.ist.psu.edu: Instrumentation of Java Bytecode for Runtime Analysis
citeseerx.ist.psu.edu: Virtual Private Caches
riacs.edu: Runtime Analysis of Linear Temporal Logic Specifications
havelund.com: Confirmation of Deadlock Potentials Detected by Runtime Analysis
10 Andere Lexika
- Dieser Artikel wurde in der Wikipedia gelöscht.
Erster Autor: Michileo angelegt am 10.11.2010 um 03:10, weitere Autoren: LinkCRG, LagondaDK, Inkowik, -jkb-, Wolf32at, PaterMcFly, Cactus26, Lantus
Hast du einen Löschwunsch oder ein anderes Anliegen? Dann nutze bitte unser Kontaktformular
PlusPedia Impressum
Bitte Beachte:
Sämtliche Aussagen auf dieser Seite sind ohne Gewähr.
Für die Richtigkeit der Aussagen übernimmt die Betreiberin keine Verantwortung.
Nach Kenntnissnahme von Fehlern und Rechtsverstößens ist die Betreiberin selbstverständlich bereit,
diese zu beheben.
Verantwortlich für jede einzelne Aussage ist der jeweilige Erstautor dieser Aussage.
Mit dem Ergänzen und Weiterschreiben eines Artikels durch einen anderen Autor
werden die vorhergehenden Aussagen und Inhalte nicht zu eigenen.
Die Weiternutzung und Glaubhaftigkeit der Inhalte ist selbst gegenzurecherchieren.