2010-11-03 11 views
14

¿Cuál es el equivalente de Linux/proc/cpuinfo en FreeBSD v8.1? Mi aplicación lee/proc/cpuinfo y guarda la información en el archivo de registro, ¿qué podría hacer para obtener información similar registrada en FreeBSD?¿Cuál es el equivalente de/proc/cpuinfo en FreeBSD v8.1?

Una muestra/proc/cpuinfo se ve así:

processor : 0 
vendor_id : GenuineIntel 
cpu family : 6 
model  : 23 
model name : Intel(R) Xeon(R) CPU   E5420 @ 2.50GHz 
stepping : 8 
cpu MHz  : 2499.015 
cache size : 6144 KB 
fdiv_bug : no 
hlt_bug  : no 
f00f_bug : no 
coma_bug : no 
fpu  : yes 
fpu_exception : yes 
cpuid level : 10 
wp  : yes 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss nx lm constant_tsc pni ds_cpl 
bogomips : 5004.54 

processor : 1 
vendor_id : GenuineIntel 
cpu family : 6 
model  : 23 
model name : Intel(R) Xeon(R) CPU   E5420 @ 2.50GHz 
stepping : 8 
cpu MHz  : 2499.015 
cache size : 6144 KB 
fdiv_bug : no 
hlt_bug  : no 
f00f_bug : no 
coma_bug : no 
fpu  : yes 
fpu_exception : yes 
cpuid level : 10 
wp  : yes 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss nx lm constant_tsc pni ds_cpl 
bogomips : 5009.45 
+0

Si se refiere a esto en un contexto específico de * programación * (en lugar de algún tipo de contexto de usuario), será mejor que hable pronto, ya que de lo contrario se migraría fuera del sitio ... – dmckee

+0

Correcto, actualmente mi producto lee este archivo durante la ejecución, quiero encontrar una acción equivalente en FreeBSD. – WilliamKF

Respuesta

5

Uso de comandos dmidecode :

# dmidecode -t processor -t cache 
# dmidecode 3.0 
Scanning /dev/mem for entry point. 
SMBIOS 2.4 present. 

Handle 0x0004, DMI type 4, 35 bytes 
Processor Information 
     Socket Designation: LGA 775 
     Type: Central Processor 
     Family: Pentium 4 
     Manufacturer: Intel 
     ID: F6 06 00 00 FF FB EB BF 
     Signature: Type 0, Family 6, Model 15, Stepping 6 
     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) 
       DS (Debug store) 
       ACPI (ACPI supported) 
       MMX (MMX technology supported) 
       FXSR (FXSAVE and FXSTOR instructions supported) 
       SSE (Streaming SIMD extensions) 
       SSE2 (Streaming SIMD extensions 2) 
       SS (Self-snoop) 
       HTT (Multi-threading) 
       TM (Thermal monitor supported) 
       PBE (Pending break enabled) 
     Version: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz 
     Voltage: 1.4 V 
     External Clock: 266 MHz 
     Max Speed: 3800 MHz 
     Current Speed: 2394 MHz 
     Status: Populated, Enabled 
     Upgrade: Other 
     L1 Cache Handle: 0x0005 
     L2 Cache Handle: 0x0006 
     L3 Cache Handle: 0x0007 
     Serial Number: To Be Filled By O.E.M. 
     Asset Tag: To Be Filled By O.E.M. 
     Part Number: To Be Filled By O.E.M. 

Handle 0x0005, DMI type 7, 19 bytes 
Cache Information 
     Socket Designation: L1-Cache 
     Configuration: Enabled, Not Socketed, Level 1 
     Operational Mode: Write Back 
     Location: Internal 
...... 
16

No creo que haya nada tan detallado como Linux de /proc/cpuinfo. Mire en sysctl hw y /var/run/dmesg.boot. La mayoría de la información, como la velocidad de la CPU y los conjuntos de instrucciones, deberían estar allí en alguna parte.

Esto es lo que veo (con algunas hw.* campos sin interés eliminados): (. Tenga en cuenta que en OpenBSD, la velocidad de la CPU se encuentra en hw.cpuspeed en lugar de en dmesg)

$ uname -sr 
FreeBSD 4.10-RELEASE 
$ grep -i cpu /var/run/dmesg.boot 
CPU: Pentium III/Pentium III Xeon/Celeron (448.97-MHz 686-class CPU) 
$ /sbin/sysctl hw 
hw.machine: i386 
hw.model: Pentium III/Pentium III Xeon/Celeron 
hw.ncpu: 1 
hw.byteorder: 1234 
hw.physmem: 665989120 
hw.usermem: 604614656 
hw.pagesize: 4096 
hw.floatingpoint: 1 
hw.machine_arch: i386 
hw.aac.iosize_max: 65536 
hw.an.an_dump: off 
hw.an.an_cache_mode: dbm 
hw.an.an_cache_mcastonly: 0 
hw.an.an_cache_iponly: 1 
hw.fxp_rnr: 0 
hw.fxp_noflow: 0 
hw.dc_quick: 1 
hw.ste.rxsyncs: 0 
hw.instruction_sse: 0 
hw.availpages: 162432 

+0

Hay en FreeBSD pero he estado fuera demasiado tiempo para decir dónde encontrarlo. – Rob

+0

Pero a diferencia de '/ proc/cpuinfo',' sysctl'requires acceso de root. – user2284570

+0

La ejecución de 'sysctl' no requiere acceso raíz a menos que cambie los valores que realmente se pueden cambiar; ver los OID no requiere ningún permiso especial a menos que bloquee por completo la posibilidad de que los usuarios ejecuten sysctl. –

3

Justo para agregar al comentario de jleedev, puede usar el syscall sysctl(3) para obtener esta información del kernel de su aplicación. Ver el nombre CTL_HW de nivel superior:

http://www.manpages.info/freebsd/sysctl.3.html

+0

Gracias, usar sysctl (8) fue el más simple de adoptar. – WilliamKF

2

Tenga en cuenta que la información como las características de la CPU y varios tamaños de caché de la CPU no se encuentran en la salida sysctl, pero están disponibles en la salida de dmidecode en FreeBSD.

2

Si usted está interesado en las banderas de la CPU, también se puede echar un vistazo a

dmesg -a | grep Features 

o

grep Features /var/run/dmesg.boot 

que mostraría algo como

Features=0xfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV, 
PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS> 
Features2=0x82982203<SSE3,PCLMULQDQ,SSSE3,CX16,SSE4.1,SSE4.2,POPCNT, 
AESNI,<b31>> 
AMD Features=0x28100000<NX,RDTSCP,LM> 
AMD Features2=0x1<LAHF> 
+1

Catting the file is reduntant, puede hacer esto: 'grep Features /var/run/dmesg.boot' –

Cuestiones relacionadas