Sziasztok,
A cegnel adodott egy kis problema a licensz modulban, ami rosszul szamolja ki egy gepen a processzorok szamat. Egy kicsit beleastam magam, hogy lehet a cpuid utasitassal infot lekerni egy processzorrol, de sajnos keves vagyok a megoldashoz.
mov eax,1
cpuid
--> eax[23:16] Maximum number of addressable IDs for logical processors in this physical package
--> edx[28] HTT-multithreading
ezekbol sajnos nem tudom kivadaszni az infot, ami nekem kell.
Mivel az elkeszult kod platformfuggetlen kell legyen, nem tudok a linux kornyezetben mar adott /proc/cpuinfo-ra hagyatkozni. Mindenkepp egy assembly-ben megirt fugvenyre van szuksegem, ami visszaadja, hogy hany processzor, mag illetve logikai processzor van a gepben.
Varom a tippeket!
Udv,
Gabor
Hozzászólások
Platform fuggetlenseg mit jelent most szamodra ?
32 bit x86 Linux/Windows + gcc?
olyan x86_32 vagy x86_64 architekturan futo operacios rendszer fuggetlen (nem akarok valami winapi-ra vagy /proc/cpuinfo file-ra hagyatkozni) megoldasra van szuksegem, ami a cpuid gepi utasitas altal vissazadott ertekekbol kivadassza a processzorok szamat, a magok szamat illetve a logikai processzorok szamat.
Irtam egy kis programot, amit le tudok forditani 32 es 64bites modban. lefuttatam a cegnel 1-2 gepen es a kovetkezoket adja vissza:
Udv,
Gabor
"physical package"-ek szamat nem adja meg cpuid AFIK.
Tipusonkent valtozhat, mit jelentenek bitek, bar talan csak bovulni szokott a lekerheto adatok mennyisege (reserved-0 - bol lesz valami).
nem neztem ugyan utana, de van egy olyan erzesem, hogy cpuid-vel csak az adott processzorrol fogsz informaciot kapni, arrol hogy van-e tobb processzor a rendszerben es ha igen akkor mennyi, szerintem az aktualis OS-t kell megkerdezd.
Counting Physical Packages Enabled in the Platform
+1. De ez logikus is: a CPU-ban lefut az utasítás, és a cpu megmondja, hogy ő milyen paraméterekkel bír. Arról, hogy az adott cpu mellett hány másik, tőle teljesen független fizikai cpu van, arról neki nem kell tudnia, és nem is tud, azt csak az os (vagy a bios?) tudná megmondani. Szerintem...
http://ndevilla.free.fr/threads/index.html
Szerint nincs POSIX megoldas sem.
sysconf -mehet tobb rendszeren is.
http://www.gnu.org/software/libtool/manual/libc/CPU-Affinity.html
Ebbol is ki lehet talalni, ha olyan CPU-hoz allitaszbe/kerdezelle affinitast ami mar nincs, akkor kevesebb CPU -van.
szerk:
Bocs, ez sem hordozhato.