Omegapoint

2013-02-07

Java and the Machine

För några år sedan så stagnerade den tidigare konstanta ökningen av klockfrekvensen för nya datorers CPU. En fysisk gräns var nådd och därför började istället antalet kärnor att öka. Problemet med detta är att väldigt få program kan utnyttja flera kärnor på ett bra sätt och därför har dessa extra kärnor ofta ingen effekt alls.

Martijn Verburg framställer i sin presentation ”Java and the Machine” problemet med flera kärnor och de lösningar som han ser på problemet. Dom flesta program som i dag hanterar trådar använder volatile eller synchronized för att hantera delat minne mellan trådarna. Problemet är att dessa lösningar inte genererar någon synlig prestandaökning enligt Martijn. Den riktiga boven är det delade minnet. Det tar alldeles för lång tid för kärnorna att lämna sin närmaste cache för att gå ut till det delade minnet och sedan tillbaka.

Så vad ska man göra? Använd java.util.Concurrent så mycket som möjligt. Martijn föreslår även sun.misc.Unsafe men varnar samtidigt starkt för hur farligt det kan vara.

Den stora utmaningen framöver ligger i att utveckla algoritmer som går att parallellisera fullt ut, utan lås och delat minne. Först då kan man utnyttja flera kärnor på ett bra sätt.  

/Christoffer Berglin

Inga kommentarer:

Skicka en kommentar

Om Omegapoint

Omegapoint AB är ledande rådgivare och experter inom Systemarkitektur, Säkerhet och IT-ledning.

Twitter uppdateringar

Omegapoints kvitterström:

    Andra Omegapointbloggar