Félreérted!
Valamit nem tudni, nem szégyen. Ha marhaságot kérdezel, az sem szégyen. Nem tudtad, így nem is tudtál jól kérdezni. A probléma inkább úgy fogalmazható meg, hogy volt olyan, aki erre magabiztosan marhaságot válaszolt. Szóval a színvonalra vonatkozó utalások ez utóbbira vonatkoztak.
Mit kevertél össze? A virtualizációnál, - ha a CPU pl. 1/10 egységenként osztható ki - akkor oszthatsz pl. 15/10 CPU-t egy gépnek. Ebben az esetben 150% erőforrás áll rendelkezésedre. De! Abban a pillanatban, amikor leírtad, hogy a program 1 szálat használ, eldöntötted a kérdést.
A virtualizáció kicsit egyszerűsítve időosztásos rendszer. Ebben 1 CPU-ból, a példa szerint kaphatsz valahány 1/10 részt, de legfeljebb 10/10 értéket. Mivel a több CPU párhuzamosan működik, egy szál ebből legfeljeb 10/10 részt láthat, azaz max. 1 egészet. Ha 1 CPU több szálat tud kezelni (hyperthreading), akkor is a 100% időn belül teszi. Tehát 2 szál=2x50% erőforrás, ami megint legfeljebb 100%. Mit kezdjünk a fenti 150% CPU-val? Nagyon egyszerű: ezt olyan programok tudják csak kihasználni, amelyek több szálon dolgoznak.
Egy szál esetén a következő lehetőségek adódnak gyorsításra:
A) A többi core lekapcsolása -> kevesebbet veszekszenek a buszon. Ezt előszeretettel alkalmazzák egyes benchmarkok esetén.
B) Az A módszer + órajel emelés. (turbo üzemmód)
C) A feladat több diszjunkt részre bontása. Ha magas az IO terhelés akkor célszerűen a feladatok száma < magok száma, így a feladat nélküli magok segítenek az IO-t kezelni. - Ne feledjük, hogy a feladatok 1 szálat futtatnak! (Ilyen esetekre néha jó az ilyen parancs: bindprocessor.)
A C esetben tovább lehet gondolni, hogy mi az az egy szál: szál vagy adatfolyam vagy adatbázis. A feladat ilyen irányú megközelítése az adatszervezés.