Odczytanie informacji o procesorze w systemach Linux

      0 min read           · ·

Doszło do tego że potrzebowałem uzyskać jak najwięcej informacji o swoim procesorze. Przy tym musiałem szczególnie skupić się na częstotliwości procesora oraz jego wielkości jego pamięci cache.

Najprostszym sposobem uzyskania informacji na temat procesora w systemach linux jest odczytanie informacji z pliku /proc/cpuinfo . Plik ten dotarcza całkiem sporo informacji na temat procesora:

$ cat /proc/cpuinfo

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 13

model name : Intel® Pentium® M processor 1.70GHz

stepping : 8

cpu MHz : 600.000

cache size : 2048 KB

fdiv_bug : no

hlt_bug : no

f00f_bug : no

coma_bug : no

fpu : yes

fpu_exception : yes

cpuid level : 2

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx up bts est tm2

bogomips : 1198.42

clflush size : 64

Większość tych informacji wynika po prostu z tego co zapisane przez producenta sprzętu, ale znajdują się w tym opisie również informacje na bieżąco sprawdzane przez system. I tak, można zauważyć, że częstotliwość taktowania procesora to 600MHz co jest spowodowane przez włączony system oszczędzania energii, który zmniejszył częstotliwość ze standardowych 1700MHz do wspomnianych 600.

Innym sposobem sprawdzenia parametów procesora jest użycie programu o nazwie cpuid. Gotowe paczki RPM, a także źródła można znaleźć na tej stronie.

$ cpuid

vendor_id = „GenuineIntel”

version information (1/eax):

processor type = primary processor (0)

family = Intel Pentium Pro/II/III/Celeron, AMD Athlon/Duron, Cyrix M2, VIA C3 (6)

model = 0xd (13)

stepping id = 0x8 (8)

extended family = 0x0 (0)

extended model = 0x0 (0)

(simple synth) = Intel Pentium M (Dothan C0) / Celeron M (Dothan C0), 90nm

miscellaneous (1/ebx):

process local APIC physical ID = 0x0 (0)

cpu count = 0x0 (0)

CLFLUSH line size = 0x8 (8)

brand index = 0x16 (22)

brand id = 0x16 (22): Intel Pentium M, .13um

feature information (1/edx):

x87 FPU on chip = true

virtual-8086 mode enhancement = true

debugging extensions = true

page size extensions = true

time stamp counter = true

RDMSR and WRMSR support = true

physical address extensions = true

machine check exception = true

CMPXCHG8B inst. = true

APIC on chip = true

SYSENTER and SYSEXIT = true

memory type range registers = true

PTE global bit = true

machine check architecture = true

conditional move/compare instruction = true

page attribute table = true

page size extension = false

processor serial number = false

CLFLUSH instruction = true

debug store = true

thermal monitor and clock ctrl = true

MMX Technology = true

FXSAVE/FXRSTOR = true

SSE extensions = true

SSE2 extensions = true

self snoop = true

hyper-threading / multi-core supported = false

therm. monitor = true

IA64 = false

pending break event = true

feature information (1/ecx):

PNI/SSE3: Prescott New Instructions = false

MONITOR/MWAIT = false

CPL-qualified debug store = false

VMX: virtual machine extensions = false

Enhanced Intel SpeedStep Technology = true

thermal monitor 2 = true

context ID: adaptive or shared L1 data = false

cmpxchg16b available = false

xTPR disable = false

cache and TLB information (2):

0xb0: instruction TLB: 4K, 4-way, 128 entries

0xb3: data TLB: 4K, 4-way, 128 entries

0x02: instruction TLB: 4M pages, 4-way, 2 entries

0xf0: 64 byte prefetching

0x7d: L2 cache: 2M, 8-way, sectored, 64 byte lines

0x30: L1 cache: 32K, 8-way, 64 byte lines

0x04: data TLB: 4M pages, 4-way, 8 entries

0x2c: L1 data cache: 32K, 8-way, 64 byte lines

extended feature flags (0x80000001/edx):

SYSCALL and SYSRET instructions = false

execution disable = true

64-bit extensions technology available = false

Intel feature flags (0x80000001/ecx):

LAHF/SAHF supported in 64-bit mode = false

brand = ” Intel® Pentium® M processor 1.70GHz”

L1 TLB/cache information: 2M/4M pages & L1 TLB (0x80000005/eax):

instruction # entries = 0x0 (0)

instruction associativity = 0x0 (0)

data # entries = 0x0 (0)

data associativity = 0x0 (0)

L1 TLB/cache information: 4K pages & L1 TLB (0x80000005/ebx):

instruction # entries = 0x0 (0)

instruction associativity = 0x0 (0)

data # entries = 0x0 (0)

data associativity = 0x0 (0)

L1 data cache information (0x80000005/ecx):

line size (bytes) = 0x0 (0)

lines per tag = 0x0 (0)

associativity = 0x0 (0)

size (Kb) = 0x0 (0)

L1 instruction cache information (0x80000005/ecx):

line size (bytes) = 0x0 (0)

lines per tag = 0x0 (0)

associativity = 0x0 (0)

size (Kb) = 0x0 (0)

L2 TLB/cache information: 2M/4M pages & L2 TLB (0x80000006/eax):

instruction # entries = 0x0 (0)

instruction associativity = L2 off (0)

data # entries = 0x0 (0)

data associativity = L2 off (0)

L2 TLB/cache information: 4K pages & L2 TLB (0x80000006/ebx):

instruction # entries = 0x0 (0)

instruction associativity = L2 off (0)

data # entries = 0x0 (0)

data associativity = L2 off (0)

L2 unified cache information (0x80000006/ecx):

line size (bytes) = 0x40 (64)

lines per tag = 0x0 (0)

associativity = 8-way (6)

size (Kb) = 0x800 (2048)

Advanced Power Management Features (0x80000007/edx):

temperature sensing diode = 0x0 (0)

frequency ID (FID) control = 0x0 (0)

voltage ID (VID) control = 0x0 (0)

thermal trip (TTP) = 0x0 (0)

thermal monitor ™ = 0x0 (0)

software thermal control (STC) = 0x0 (0)

TscInvariant = 0x0 (0)

Physical Address and Linear Address Size (0x80000008/eax):

maximum physical address = 0x20 (32)

maximum linear address = 0x20 (32)

Logical CPU cores (0x80000008/ecx):

number of logical CPU cores – 1 = 0x0 (0)

ApicIdCoreIdSize = 0x0 (0)

(multi-processing synth): none

(synth) = Intel Pentium M (Dothan C0), 90nm

Jak widać – program ten dostarcza zdecydowanie więcej informacji. Z tych, które ja potrzebuję,  mogę zauważyć podane watości przedstawiające ilość pamięci cache L1 i L2 procesora (odpowiednio 32KB i 2MB).

Podsumowując, oba sposoby sprawdzenia informacji o CPU podają te same informacje, nie stwierdzam więc żadnych odstępstw od normy, a zatem i błędów pomiaru. Jedyna różnica szczegółowość podanych informacji. Problemem jednak, jest określenie wiarygodności tych danych, gdyż są one po prostu odczytywane z odpowiednich miejsc gdzie wcześniej zostały zapisane przez producenta sprzętu. Częstotliwość procesora czy pojemność odpowiednich pamięci cache nie została w żaden sposób przetestowana.

comments powered by Disqus