Tiefergehende CPU-Informationen sammeln
-
Hi.
Ich implementiere gerade für das Wine-Projekt die Windows-Funktion GetLogicalProcessorInformation ( http://msdn.microsoft.com/en-us/library/ms686694(v=vs.85).aspx ).
So sieht die Struktur aus, die füllen möchte:
typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { ULONG_PTR ProcessorMask; LOGICAL_PROCESSOR_RELATIONSHIP Relationship; union { struct { BYTE Flags; } ProcessorCore; struct { DWORD NodeNumber; } NumaNode; CACHE_DESCRIPTOR Cache; ULONGLONG Reserved[2]; }; } SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
http://msdn.microsoft.com/en-us/library/ms686694(v=vs.85).aspx
Jetzt bin ich echt am Kämpfen, wie ich die einzelnen Felder füllen kann.
/proc/cpuinfo hilft immerhin für ProcessorMask (Logische CPUs zählen und Bitmask setzen), aber spätestens bei der Bestimmung von L1/L2/L3 Cache kann ich diesen Weg knicken.
Gibt es keinen anderen Weg, Linux CPU-Informationen zu entlocken?
Würde mich wundern wenn Windows da mehr anbietet als das Frickler-OS überhaupt.Danke schon mal!
Grüße,
Ethon
-
Kurzes Googlen verrät mir (und ein Test hat dies bestätigt): Mit
dmidecode
wirst du mit solchen Infos überhäuft.lshw
ist ebenfalls äußerst auskunftsfreudig. Alle leider nur als Superuser zu benutzen.Nur für CPU-Cache helfen dir auch die Dateien wie diese:
/sys/devices/system/cpu/cpu0/cache/index0/size
(mit index0 bis index2)
Oder allgemein mal in diesen Verzeichnissen rumbrowsen für mehr CPU-Details. Diese Dateien zu benutzen ist vermutlich die beste Idee, weil es wirklich das repräsentiert was Linux benutzt (dmidecode ist die BIOS-Information). Außerdem ohne Adminrechte einsehbar und sollte auf jedem System gleich aufgebaut sein.
-
Ethon schrieb:
Würde mich wundern wenn Windows da mehr anbietet als das Frickler-OS überhaupt.
ach doch, u.a. sowas wie
http://www.cpuinfo.de/
http://www.cpuid.com/softwares/cpu-z.html
Herstellertreiber und andere Software etc.Dann gibt es aber auch noch für alle
http://de.wikipedia.org/wiki/Wikipedia:Hauptseite
und
http://sandpile.org/ia32/cpuid.htm
(Zur Not, wenn man ein wenig Zeit hat)