# Mit Java CPU Typ bestimmen...



## meteora28 (26. Aug 2009)

Hallo Leute,

ich suche eine Möglichkeit um mit Java den CPU Typ bestimmen.
Also ich möchte mit meinem Programm auslesen, ob das ganze ein Pentium 4 oder Core2Duo oder sonst was ist.
Ist dies irgendwie möglich?
Hat wer sowas schon mal gemacht?

Gruß und Danke

meteora28


----------



## max40 (26. Aug 2009)

ich weis nicht ob es dir wirklich hilft aber vielleicht reicht es dir

Guck mal was 
	
	
	
	





```
System.getenv()
```
 so alles an Werten hat.
Da bekommst du die Prozessor-Architektur etc. her


----------



## ARadauer (26. Aug 2009)

falls du Hilfe brauchst das Zeug auszulesen:


```
Map<String, String> map = System.getenv();
		Set<String> keys = map.keySet();
		for(String key: keys){
			System.out.println(key+"->"+map.get(key));
		}
```


----------



## meteora28 (27. Aug 2009)

Danke für Eure antworten, soweit war ich leider schon, also Anzahl und Architektur konnte ich bereits auslesen.
Mir geht es um den CPU Typ: z.B. AMD Athlon xy oder Core2duo ... etc.
Kennt jemand hierfür eine Methode? Notfalls über eine andere Bibliothek oder mit JNI?

Danke!


----------



## tuxedo (27. Aug 2009)

Unter Linux könntest du mit Java einfach den Inhalt von /proc/cpuinfo parsen ...


```
/$ cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 107
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 5600+
stepping        : 2
cpu MHz         : 1000.000
cache size      : 512 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
bogomips        : 2063.95
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc [6]

processor       : 1
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 107
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 5600+
stepping        : 2
cpu MHz         : 1000.000
cache size      : 512 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
bogomips        : 2063.95
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc [6]
```

Für Windows gibts sicher kostenlose Commandline Tools die dir ähnliche Infos ausspucken. Ansonsten gibts da noch http://jna.dev.java.net womit du (nicht nur) auf die Windows-API zugreifen kannst. Da müsste es eine Funktion geben dir dir die gewünschte Info liefert.

Mit nativem Java allein geht's AFAIK nicht. 

- Alex


----------



## LastUnicorn (2. Okt 2009)

ARadauer hat gesagt.:


> falls du Hilfe brauchst das Zeug auszulesen:
> 
> 
> ```
> ...



Da habe ich gleich mal eine Frage zu. Wenn jemand einen PC mit Hyperthreading hat. Beispielsweise nen P4 oder den neuen i7. Steht dann beim P4 auch NUMBER_OF_PROCESSORES=2 bzw. beim i7 -> 8 oder steht da die Anzahl der physischen Kerne?


----------



## tuxedo (3. Okt 2009)

Die Anzahl der CPU Kerne kannst du auch OS Unabhängig bestimmen. AFAIK stehen die in den Java System Properties. Der exakte Key hierfür ist mir gerade entfallen. Schau einfach mal rein. So viele sind es nicht.


----------



## ice-breaker (3. Okt 2009)

tuxedo hat gesagt.:


> Für Windows gibts sicher kostenlose Commandline Tools die dir ähnliche Infos ausspucken. Ansonsten gibts da noch http://jna.dev.java.net womit du (nicht nur) auf die Windows-API zugreifen kannst. Da müsste es eine Funktion geben dir dir die gewünschte Info liefert.
> 
> Mit nativem Java allein geht's AFAIK nicht.


Das WMIC (Windows Management Instrumentation Commandline) als Bestandteil von Windows erlaubt den detallierten Zugriff auf die CPU-Infos.


----------

