Opera-brukere tjener lite på flere kjerner

Flere kjerner i prosessorene er blitt vanlig, men ikke alle er like opptatt av å utnytte dette.

Kjøper man en kraftig PC i dag, blir den levert med en flerkjernet prosessor. Dette lyder flott, men svært i svært mange tilfeller vil maskinen bare kjøres med halv kraft. Årsaken er at det fortsatt er lite programvare som alene utnytter mer enn én kjerne eller prosessor. Noen klare unntak finnes - blant annet en del grafikk- og videoprogramvare fra Adobe. I tillegg ligger mange spillprodusenter langt framme i å få utnytte den tilgjengelige maskinvaren best mulig. Men det er klare årsaker til at ikke flere har valgt å satse på flertrådkjøring.

For å utnytte en prosessor som har to kjerner fullt ut, må enten to eller flere prosesser eller programtråder kjøres samtidig. Men siden de fleste programmer i liten grad fordeler de sentrale, prosessorkrevende oppgavene på to eller flere tråder, kreves det at brukeren aktivt benytter minst to programmer samtidig for å utnytte prosessoren. Dette kan fint gjøres ved at man for eksempel lar programmer, som på en eller annen måte bruker noe tid på å prosessere data, kjøre i bakgrunnen, samtidig som man jobber aktivt med et annet program.

digi.no har snakket med Opera Software om hvilken tanker selskapet har gjort seg rundt flertrådkjøring i selskapets nettleser. Lars Erik Bolstad, core development manager i Opera Software. Han har dermed hovedansvaret for de delene av Opera som er felles for alle plattformene nettleseren støtter. Han forteller til digi.no at flertrådkjøring i liten grad er en aktuell problemstilling for selskapet.

- Opera benytter i utgangspunktet én tråd. Dette skyldes at de sentrale delene av nettleseren er de samme, uavhengig av plattformen den skal kjøres på. Og vi leverer nettleseren til mange plattformer som ikke har flere kjerne. I praksis optimaliserer vi Opera for å kjøre på de enklere plattformene. Det er viktigere for oss å kunne kjøre nettleseren i et begrenset system enn at den utnytter hele kraften i de kraftigste systemene, forteller Bolstad.

- Ytelse har likevel alltid vært viktig for Opera Software. Når man skriver kode har normalt man et valg mellom ytelse og lavt minnebruk. Vi ønsker å oppnå begge deler. Derfor forsøker vi å utnytte ressurser som er tilgjengelig i den enkelte plattformen, blant annet maskinvareakselerert uttegning og bildedekoding, blant annet i enkelte mobiltelefoner og i Nintendo Wii, sier Bolstad.

Svært mye av Opera-nettleseren er egenutviklet, men i mange tilfeller brukes også tredjepartløsning, blant annet OpenSSL og i noen tilfeller Qt.

- Vi bruker fortrinnsvis moduler som allerede finnes i plattformen for å redusere størrelsen. Redusert størrelse gir ofte bedre ytelse, spesielt i systemer med begrensede ressurser. I PC-sammenheng er derimot Opera en lett applikasjon i forhold til mye annet man kan bruke på en slik maskinvare, sier Bolstad.

Det er mest CPU-intensive applikasjoner som kan utnytte bruken av flere tråder og kjerner, mener Bolstad, men også Opera kan være CPU-intensiv hvis brukeren for eksempel åpner mange faner som alle inneholder Flash-animasjoner.

Enkelte ting i desktop-versjonene av Opera kjøres likevel i en egen tråd. Ifølge Bolstad er dette ting som kan gå i bakgrunnen eller kjøres i parallell, for eksempel DNS-oppslag. Han ser ikke bort fra at mer funksjonalitet vil bli skilt ut i egne tråder og mener

Opera er en lett applikasjon sammenlignet med andre ting man kan kjøre på en PC. Men det er åpenbare kandidater/oppgaver som kunne gjøre, for eksempel e-postdelen eller hver enkelt fane eller til og med socket.

- Men det er vanskelig å få til. Flertrådkjøring må designes fra bunnen av. Kostnaden er mye større, det er større sannsynlighet for feil og feiltesting er mye vanskeligere, sier Bolstad. Han legger til at C++, som Opera Software benytter når selskapet utvikler Opera-nettleseren, har dårlig støtte for flertrådkjøring i forhold til for eksempel Java.

- Man må hele tiden tenke på en consumer-producer-arkitektur, hvor én tråd porsjonerer ut oppgaver til de ulike prosessorene eller kjernene. Dette gjør at man må holde tunga rett i munnen for å unngå slik som deadlocks og race conditions, forteller Bolstad.

Deadlocks innebærer at to (eller flere) tråder venter på at den andre skal avslutte. Begge vil stå å vente til evig tid.

Race conditions kan blant annet handle om at to konkurrerende tråder bruker de samme ressursene, for eksempel et register, hvor den ene tråden overskriver verdien enn den andre tråden har lagret i registeret, før den andre tråden er ferdig med å bruke registeret. Selv i enkle regnestykker kan man da ende opp med feil resultat.

Til toppen