Welche Virtualisierungstechnologie auch immer ich verwende
Erinnern Sie sich noch an die Zeiten, als Systeme mit mehr als 512 MB RAM als Vorreiter galten? Ich verbringe meine Tage damit, Code für den Prior zu schreiben.
Ich arbeite hauptsächlich mit Low-Level-Programmen, die in der privilegierten Domäne in einer Xen-Umgebung ausgeführt werden. Unsere Obergrenze für die privilegierte Domain beträgt 512 MB, so dass der Rest des Arbeitsspeichers für unsere Kunden frei ist. Es ist auch typisch für uns, die privilegierte Domäne auf nur einen CPU-Kern zu beschränken.
Hier schreibe ich also Code, der auf einem brandneuen 6-KB-Server ausgeführt wird, und jedes Programm muss (idealerweise) innerhalb einer 100-KB-Obergrenze funktionieren oder die dynamische Speicherzuweisung vollständig vermeiden.
Ich optimiere konkret für:
- Speicherbedarf
- Sortierungen (wo der Großteil meines Codes die meiste Zeit verbringt)
Ich muss auch extrem fleißig sein, wenn es darum geht, auf Schlösser zu warten, auf E / A zu warten oder nur allgemein zu warten. Ein beträchtlicher Teil meiner Zeit fließt in die Verbesserung vorhandener nicht blockierender Socket-Bibliotheken und in die Erforschung praktischerer Methoden zur sperrenfreien Programmierung.
Jeden Tag finde ich es etwas ironisch, dass ich Code wie vor 15 Jahren auf Systemen schreibe, die im letzten Monat aufgrund von technologischen Fortschritten gekauft wurden.
Dies ist typisch für alle, die auch auf eingebetteten Plattformen arbeiten, obwohl selbst viele über mindestens 1 GB verfügen. Wie Jason betont, ist es auch typisch, wenn Programme geschrieben werden, die auf mobilen Geräten ausgeführt werden sollen. Die Liste geht weiter, Kioske, Thin Clients, Bilderrahmen, etc ..
Ich beginne zu denken, dass Hardware-Einschränkungen Programmierer wirklich von Leuten trennen, die etwas zum Laufen bringen können, ohne sich darum zu kümmern, was es tatsächlich verbraucht. Ich mache mir Sorgen darüber, welche Sprachen, die Typ und Gedächtnis vollständig abstrahieren und in den Pool des gesunden Menschenverstandes einfließen, der von Programmierern verschiedener Disziplinen geteilt wurde.