Windows XP dual-core-on - párhuzamos(?) folyamatok

Sziasztok!

Azt szeretném megkérdezni, miért van az, hogy dual-core rendszeren Windows XP alatt egy kódjában valószínűleg nem párhuzamosított folyamat 50%-on eszi a CPU-kat, de mind a kettőt egyenként, tehát elméletileg párhuzamosan, gyakorlatilag viszont nem használja ki a két CPU teljes számítási teljesítményét csak fele-fele arányban.

Azok a programok, amik több szálon futnak olyan 80%-ig (pl. windowsos mencoder threads=2 opcióval) mennek fel, míg a natív dual-core-ra írt appok közelítik csak meg a 100%-ot.

Nem értem, ha az XP annyira ügyes, hogy átdobja a feldolgozandó feladat egyik felét a másik procinak, miért nem képes teljes egészében kihasználni?

Hozzászólások

a magok mint erőforrások egyszerre állnak rendelkezésre, nem pedig egymás utáni időszakban. Ha csak egyszálú a progi, akkor amíg az egyik magon fut, addig a másik üresen jár. Az autópályán is csak egy sávot foglal egy autó, akárhogy váltogatja is a sávokat.

Az pedig, hogy váltogatja a magokat windows erőforráskezelő jellegzetessége. Bizonyos esetekben gyorsíthat a futáson, ha kijelölöd fixre melyik magon fusson (feladatkezelő - affinitás).

Én az R (statisztikai program) egyik moduljával kapcsolatban találkoztam hasonlóval.

Ha egy folyamatot indítottam, akkor az egyik mag pörgött teljes kapacitáson, míg a másik üdült, és az egész tartott T ideig. Ha két ugyanolyan folyamatot indítottam, akkor mindkét mag pörgött 100%-on, és 2T ideig tartott, mire végzett mindkettővel.

Azóta sem értem, mi okozta ezt. Valószínűleg van egy erőforrás, mutex-lockot használó rendszerhívás vagy mittoménmi, ami miatt egyszerre csak egy szálon tud érdemben működni a program.