Displaying hardware data on CentOS Linux hosts

I was reviewing the hardware configuration on one of my Centos Linux 5.3 hosts this past weekend, and was curious which chipset was in use and if the host supported the AMD virtualization extensions. To get a high level overview of the devices installed in the system, I looked through /etc/sysconfig/hwconf ( this file is populated at boot time with the current hardware configuration):

$ more /etc/sysconfig/hwconf

-
class: OTHER
bus: PCI
detached: 0
driver: shpchp
desc: "nVidia Corporation CK804 PCIE Bridge"
vendorId: 10de
deviceId: 005d
subVendorId: 0000
subDeviceId: 0000
pciType: 1
pcidom:    0
pcibus: 80
pcidev:  e
pcifn:  0
-
.....



To see if the CPUs supported the AMD virtualization extensions, I poked around /proc/cpuinfo:

$ cat /proc/cpuinfo

processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 15
model		: 37
model name	: AMD Opteron(tm) Processor 254
stepping	: 1
cpu MHz		: 1000.000
cache size	: 1024 KB
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 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni lahf_lm
bogomips	: 2008.99
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

processor	: 1
vendor_id	: AuthenticAMD
cpu family	: 15
model		: 37
model name	: AMD Opteron(tm) Processor 254
stepping	: 1
cpu MHz		: 2800.000
cache size	: 1024 KB
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 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni lahf_lm
bogomips	: 5625.17
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



After reviewing the processor details, I use lspci to extract some additional details from the PCI buses:

$ lspci -v |more

00:00.0 Memory controller: nVidia Corporation CK804 Memory Controller (rev a3)
	Subsystem: Sun Microsystems Computer Corp. Unknown device 534a
	Flags: bus master, 66MHz, fast devsel, latency 0
	Capabilities: [44] HyperTransport: Slave or Primary Interface
	Capabilities: [e0] HyperTransport: MSI Mapping

00:01.0 ISA bridge: nVidia Corporation CK804 ISA Bridge (rev a3)
	Subsystem: Sun Microsystems Computer Corp. Unknown device 534a
	Flags: bus master, 66MHz, fast devsel, latency 0
	I/O ports at 

00:01.1 SMBus: nVidia Corporation CK804 SMBus (rev a2)
	Subsystem: Sun Microsystems Computer Corp. Unknown device 534a
	Flags: 66MHz, fast devsel
	I/O ports at 1000 [size=32]
	I/O ports at 7000 [size=64]
	I/O ports at 7040 [size=64]
	Capabilities: [44] Power Management version 2



Once I looked through the lspci output, I ran dmidecode to gather the SMBIOS data (this has the chipset information):

$ dmidecode

Handle 0x0004, DMI type 4, 35 bytes.
Processor Information
	Socket Designation: CPU0-Socket 940
	Type: Central Processor
	Family: Opteron
	Manufacturer: AMD
	ID: 51 0F 02 00 FF FB 8B 07
	Signature: Extended Family 0, Model 5, Stepping 1
	Flags:
		FPU (Floating-point unit on-chip)
		VME (Virtual mode extension)
		DE (Debugging extension)
		PSE (Page size extension)
		TSC (Time stamp counter)
		MSR (Model specific registers)
		PAE (Physical address extension)
		MCE (Machine check exception)
		CX8 (CMPXCHG8 instruction supported)
		APIC (On-chip APIC hardware supported)
		SEP (Fast system call)
		MTRR (Memory type range registers)
		PGE (Page global enable)
		MCA (Machine check architecture)
		CMOV (Conditional move instruction supported)
		PAT (Page attribute table)
		PSE-36 (36-bit page size extension)
		CLFSH (CLFLUSH instruction supported)
		MMX (MMX technology supported)
		FXSR (Fast floating-point save and restore)
		SSE (Streaming SIMD extensions)
		SSE2 (Streaming SIMD extensions 2)
	Version: AMD               
	Voltage: 1.2 V
	External Clock: 200 MHz
	Max Speed: 3000 MHz
	Current Speed: 2800 MHz
	Status: Populated, Enabled
	Upgrade: None
	L1 Cache Handle: 0x0008
	L2 Cache Handle: 0x0009
	L3 Cache Handle: Not Provided
	Serial Number: Not Specified
	Asset Tag: Not Specified
	Part Number: Not Specified



I like the fact that dmidecode breaks down the processor flags for you, since it saved me a round-trip to the kernel source code. I found exactly what I needed in the output above, and am now off to purchase another machine (one that has 2 PCI-X slots and virtualization extensions) for my lab.

2 thoughts on “Displaying hardware data on CentOS Linux hosts”

  1. Sweet dude! I didn’t know that dmidecode had the CPU flags detailed. I’ve gone to the kernel source a few times trying to figure that crap out.

Leave a Reply

Your email address will not be published. Required fields are marked *