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?
- 1787 megtekintés
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).
- A hozzászóláshoz be kell jelentkezni
É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.
- A hozzászóláshoz be kell jelentkezni
azt ne felejtsd el, ami a nagy parasztvakítás ezekben a többmagos rendszerekben: a memória sávszél nem fog megduplázódni. Azaz az amúgyis szűkös memória elérésért most már versenyezni kell 1 másik cpu-val.
- A hozzászóláshoz be kell jelentkezni
A dual/tri/quad stb channel számít ilyenkor?
- A hozzászóláshoz be kell jelentkezni
Biztosan nem erről volt szó az én esetemben, mert csak annál a bizonyos modulnál jelentkezett ez. Egyszerű teszt-szkript esetén el tudott kettő futni egymás mellett, hogy ugyanannyi idő alatt végeztek, mint amikor csak egy példány futott.
- A hozzászóláshoz be kell jelentkezni