Quelle que soit la technologie de virtualisation que j'utilise
Vous vous souvenez du temps où les systèmes avec plus de 512 Mo de RAM étaient considérés comme à la pointe de la technologie? Je passe mes journées à écrire du code pour le précédent.
Je travaille principalement sur des programmes de bas niveau qui s'exécutent sur le domaine privilégié dans un environnement Xen. Notre plafond pour le domaine privilégié est de 512 Mo, ce qui laisse le reste de la RAM disponible pour nos clients. Il est également typique pour nous de limiter le domaine privilégié à un seul cœur de processeur.
Me voici donc en train d'écrire du code qui fonctionnera sur un tout nouveau serveur de 6 000 $, et chaque programme doit fonctionner (idéalement) dans un plafond alloué de 100 Ko, ou éviter complètement l'allocation de mémoire dynamique.
De manière concise, j'optimise pour:
- Empreinte mémoire
- Trie (où la plupart de mon code passe la plupart de son temps)
Je dois également être extrêmement diligent en ce qui concerne le temps passé à attendre les verrous, à attendre les E / S ou à simplement attendre en général. Une grande partie de mon temps est consacrée à l'amélioration des bibliothèques de sockets non bloquantes existantes et à la recherche de méthodes plus pratiques de programmation sans verrouillage.
Chaque jour, je trouve un peu ironique que j'écris du code comme je l'ai fait il y a 15 ans, sur des systèmes achetés le mois dernier, en raison des progrès technologiques.
Cela est typique de tous ceux qui travaillent sur des plates-formes embarquées, même si beaucoup d'entre eux ont au moins 1 Go à leur disposition. Comme le souligne Jason, cela est également typique lors de l'écriture de programmes à exécuter sur des appareils mobiles. La liste est longue, kiosques, clients légers, cadres, etc.
Je commence à penser que les restrictions matérielles séparent vraiment les programmeurs des gens qui peuvent faire fonctionner quelque chose sans se soucier de ce qu'il consomme réellement. Je m'inquiète (votez contre moi si vous devez) quelles langues ce type complètement abstrait et cette mémoire vérifient dans le pool collectif de bon sens qui (autrefois) partageait les programmeurs de diverses disciplines.