vrijdag 25 april 2008

Gartner voorspelt melt-down Microsoft

Hè hè, het wordt nu eindelijk erkend. Windows is uit z'n krachten gegroeid. Gartner zegt het zelf:

“Windows collapsing under its own weight; Radical change needed” (zie: http://blogs.zdnet.com/BTL/?p=8428). Dat laat tenminste niets aan duidelijkheid te wensen over.

Common Sense?

Windows Vista is berucht om z'n geheugenhonger. Het is niet ongebruikelijk dat er na het vers opstarten van een machine, zonder dat er nog één applicatie is gestart, al in de buurt van 1GB aan geheugen in gebruik is. Er zijn dan ook al tientallen processen gestart, waarvan alleen de overhead van het context switchen vaak al zo'n 10% van de beschikbare processorcapaciteit vergt. Voor niets!

Windows is niet slim ontworpen – dat staat nu wel vast. Dat valt niet zozeer aan de software engineers van Microsoft te wijten, het is eerder een indicatie van het onvermogen van het vakgebied om technieken te ontwikkelen om slim met het potentiële vermogen van computers om te gaan. Vergelijk het eens met een biologisch systeem. Er zullen toch maar weinig mensen zijn die durven te stellen dat een PC met Windows Vista slimmer is dan de slimste mens. Toch?

Het complete menselijk genoom bevat zo'n 3 miljard baseparen (volgens de laatste wetenschappelijke inzichten om precies te zijn 2,86 gigabasen; zie: http://www.strategicgenomics.com/Genome/index.htm). Omdat één base – A, C, T of G – in twee bits uit te drukken is, kunnen er 4 baseparen in één byte. Het menselijk genoom kun je dus in 750 miljoen bytes opslaan. Een snelle rekensom leert dat dit ongeveer 715 Megabytes is. Sta daar eens even bij stil. De genetische code van een mens is kleiner dan de code van Windows Vista. Dan moet er in Windows toch iets een beetje suboptimaal zijn...

Windows Vista bevat onmiskenbaar een grote hoeveelheid legacy code – code die eigenlijk niet meer wordt gebruikt, maar nog wel aanwezig is. Genetici noemen dat junk-DNA. De schattingen lopen een beetje uiteen, maar van zo'n 80-90% van het DNA is in elk geval geen functie bekend. En van het overgebleven is natuurlijk nog maar een klein gedeelte dat voor intelligentie in de hersenen en de waarneming van de zintuigen codeert. Hoe simpel kan intelligentie zijn?

Er zijn op dit moment zo'n 30.000 genen bekend. Genen bestaan uit exons en introns. Exons coderen voor eiwitten, en zijn dus functioneel, introns worden uit het m-RNA verwijderd voordat het eiwit wordt gevormd. De totale hoeveelheid exons staat voor slecht 10MB aan code.

Nog een statistisch gegeven. Het menselijke brein bestaat uit ongeveer 1 miljard neuronen, elk met gemiddeld 10.000 synapsen. Het is niet onredelijk om te veronderstellen dat een synaps minstens één bit aan informatie bevat. Dit maakt samen 1,2 Terabyte; aardig vergelijkbaar met de opslagcapaciteit van een moderne PC. We noemen het allebei 'geheugen'. De verschillen in gebruik zijn echter groot.

Microsoft denkt traditioneel problemen op te kunnen lossen door meer functionaliteit toe te voegen, beter te testen en nog meer mensen bij de ontwikkeling te betrekken om de complexiteit daarvan te kunnen beheersen. De schaalbaarheid van dit model blijkt nu fundamentele beperkingen te hebben.

De Paradox

Als computers ooit zo slim als mensen zouden moeten worden, of misschien wel slimmer, zouden we dan juist niet moeten streven naar een veel simpeler operating systeem en veel minder betrouwbaar geheugen? Zou je met dommere computers geen slimmere systemen kunnen bouwen?

De conventionele manier van ontwerpen schiet vroeger of later tekort om de volgende generatie van complexe systemen te ontwikkelen. Functionele decompositie – het opsplitsen van een complex probleem in een verzameling minder complexe problemen – heeft zo zijn beperkingen. Hoe logisch deze methode intuïtief ook lijkt, het resulteert keer op keer in onhanteerbaar complexe systemen zoals Windows en Office. Bij een bedrijf als Intel hebben ze dat misschien al eerder ingezien. Er is een grens aan hoe complex je een processorkern kunt maken. Niet voor niets zijn de architecten van Intel al jarenlang druk bezig met de ontwikkeling van multi-core processoren.

Er moet voor software ook dringend gezocht worden naar een betere ontwerpmethode traditionele. Er zijn fundamenteel andere architectuurprincipes nodig om de software engineering op een hoger plan te brengen. Het is natuurlijk niet voor het eerst dat er daarbij gezocht wordt naar inspiratie in de natuur. Het vakgebied van kunstmatige intelligentie heeft een respectabele traditie opgebouwd – en zeker ook enkele doorbraken bereikt. Het wordt tijd dat dit doordringt in de mainstream van de software engineering.

Het meest markante verschil tussen computers en intelligente dieren is het belang van opvoeden. Dieren hebben een ingebouwde basisintelligentie, maar zijn ook in staat om veel van hun intelligentie te verwerven in een sociale context. Het is bekend dat dieren die buiten zo'n sociale context opgroeien betrekkelijk hulpeloos door het leven gaan.

De ander kant van diezelfde medaille is dat – zoals iedere ouder weet – opvoeding niet altijd gegarandeerde resultaten heeft. Kinderen gedragen zich niet altijd zoals ouders zouden willen. Er zijn zowel evolutionaire als sociale mechanismes ontwikkeld om ongewenst gedrag te corrigeren. Daarbij gaat het belang van de groep altijd boven het belang van het individu.

Er is ook een groot voordeel in het experimenteren met onaangepast gedrag. Van tijd tot tijd is er een individu die grenzen weet te verleggen, die dingen doet die anderen nooit zouden hebben bedacht of gedurfd, maar die wel succesvol zijn. Grensverleggend gedrag dat de groep op een hoger ontwikkelingsniveau brengt. Dit soort doorbraken kun je niet verwachten als alle individuen alleen maar voorgeprogrammeerd gedrag vertonen.

Zouden de engineers van Microsoft hier iets van kunnen leren? Zouden echte intelligente systemen minder voorgeprogrammeerd moeten zijn, en meer kans moeten hebben om te evolueren? Zouden de architecten van Microsoft wat kunnen leren van de architectuurprincipes achter simulatiespellen zoals 'Evolution: The Game of Intelligent Life'? Zou het fundamenteel beter zijn om ongewenst gedrag te bestrijden, dan om het te voorkomen? Moet Microsoft meer sociologen in dienst gaan nemen?

De sleutel ligt mogelijk in zogenaamde emergente systeemeigenschappen die in grootschalige, gedistribueerde systemen kunnen 'verschijnen'. Die zijn lastig voorspelbaar, maar daarom niet minder krachtig. Zodra we als architecten leren te denken in vrijheidsgraden in plaats van voorspelbaarheid, dan openen zich mogelijkheden waarvan we nu alleen maar kunnen dromen. En het paradoxale is dat er dan 'vanzelf' dynamische, vitale oplossingen zullen ontstaan die intelligenter, functioneler en betrouwbaarder zijn dan de huidige, voorgeprogrammeerde systemen.

Vergezocht? Wie had in 2000 durven te voorspellen dat er een jaar later een simpel programmaatje zou verschijnen dat binnen een paar jaar de wereld zou veranderen? Een user-generated encyclopedie met jaarlijks honderden miljoenen unieke bezoekers (per april 2008 staat de stand op 684 miljoen); meer content dan welke traditionele bron dan ook, en net zo betrouwbaar als (maar actueler dan) de beste encyclopedie? De Wikipedia software is charmant eenvoudig en de totale operationele kosten bedragen niet meer dan $2 miljoen per jaar – $0,3 cent per unieke bezoeker. Als dat geen 'big bang for bucks' is...

Stel je nu een voor dat de Linux-community in staat zou zijn om het OS op te delen in simpele 'pagina's' - of – in biologische termen – 'cellen'. En stel je voor dat er een mechanisme zou zijn om clusters van zulke cellen te bundelen tot 'organen'. Stel dat er communities ontstaan die hun eigen unieke 'organisme' samenstellen op basis van zulke organen. 'Organismen' die 'opgevoed' worden door een netwerk van meer ervaren 'exemplaren'. 'Soorten' die concurreren op een open markt, waar verschillende soorten de verschillende 'ecologische niches' bezetten en alleen de meest succesvolle op termijn kunnen overleven. Het zou volgend jaar al zover kunnen zijn.

Misschien doet u er goed aan om tijdens de komende vakantie eens zo'n evolutie-simulatiespel mee te nemen. Wie weet levert het een Eureka moment op. En anders in elk geval een hoop fun.

In deze paradox wordt algemeen aanvaarde best practices ter discussie gesteld. Het is de 3de in een reeks uncommon sense die op dit weblog gepubliceerd zal worden.

2 opmerkingen:

Samuel zei

Je bent een simpele ziel als je een OS veroordeelt op zijn geheugengebruik en daarbij duidelijk aangeeft nog niet eens een Google query te hebben uitgevoerd om te achterhalen waarom dit gebeurt. Vervolgens kan je er gif op innemen dat er weer een Linux/OSS rant achteraan komt. Blijf lekker in de ivoren toren lijden aan asperger en dan zal je vast heel gelukkig worden.

Hans Bot zei

i olo'd