15 November 2010

Host Info - CPUs

Following up on memory in the 'host info' series is CPUs.  As with memory,
the details of our hosts are:
        HOSTS:          snorkle (sunhost), tux (linhost), beastie (bsdhost)
        PROMPT:         host [0]
        Solaris INFO:   Solaris 10, x86
        Linux INFO:     CentOS 5.4, x86
        FreeBSD INFO:   FreeBSD 8.1, x86
CPU information In Solaris:

    To determine whether the kernel is 32bit or 64bit capable:
        snorkle [0] /usr/bin/isainfo -kv
        32-bit i386 kernel modules
    Details on the processor of our test host (snorkle):
        snorkle [0] /usr/sbin/psrinfo -vp
        The physical processor has 1 virtual processor (0)
          x86 (AuthenticAMD family 15 model 47 step 0 clock 2187 MHz)
                AMD Athlon(tm) 64 Processor 3500+
    For comparison, below are the runs from a multicore host (Sun Fire
    T2000) and a multiproc host (Sun SPARC Enterprise M5000):
        solT2000 [0] /usr/sbin/psrinfo -vp
        The physical processor has 32 virtual processors (0-31)
          UltraSPARC-T1 (chipid 0, clock 1000 MHz)

        solM5000 [0] /usr/sbin/psrinfo -vp
        The physical processor has 4 virtual processors (0-3)
          SPARC64-VI (portid 1024 impl 0x6 ver 0x93 clock 2150 MHz)
        The physical processor has 4 virtual processors (8-11)
          SPARC64-VI (portid 1032 impl 0x6 ver 0x93 clock 2150 MHz)
        The physical processor has 4 virtual processors (16-19)
          SPARC64-VI (portid 1040 impl 0x6 ver 0x93 clock 2150 MHz)
        The physical processor has 4 virtual processors (24-27)
          SPARC64-VI (portid 1048 impl 0x6 ver 0x93 clock 2150 MHz)
    The 'prtdiag' utility can also list out the processors, virtual
    or otherwise.  As with the memory post, 'prtdiag' doesn't always
    list out any usable information, so your mileage may vary:
        sunhost [0] /usr/platform/`/usr/bin/uname -i`/sbin/prtdiag -v | /usr/bin/less
        System Configuration:  Sun Microsystems  sun4u Sun (TM) Enterprise 250 (2 X UltraSPARC-II 400MHz)
        System clock frequency: 100 MHz
        Memory size: 2048 Megabytes

        ========================= CPUs =========================

                            Run   Ecache   CPU    CPU
        Brd  CPU   Module   MHz     MB    Impl.   Mask
        ---  ---  -------  -----  ------  ------  ----
        SYS     0     0      400     2.0   US-II    10.0
        SYS     1     1      400     2.0   US-II    10.0
        
In Linux:

    To determine whether the kernel is 32bit or 64bit capable, unlike
    Solaris which has a command, for Linux and FreeBSD we have to use
    kind of a hack:
        tux [0] /usr/bin/file /sbin/init
        /sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked
(uses shared libs), for GNU/Linux 2.6.9, stripped

    Details on the processor of our test host (tux):

        tux [0] /bin/cat /proc/cpuinfo
        processor       : 0
        vendor_id       : AuthenticAMD
        cpu family      : 15
        model           : 47
        model name      : AMD Athlon(tm) 64 Processor 3500+
        stepping        : 0
        cpu MHz         : 2188.821
        cache size      : 512 KB
        fdiv_bug        : no
        hlt_bug         : no
        f00f_bug        : no
        coma_bug        : no
        fpu             : yes
        fpu_exception   : yes
        cpuid level     : 1
        wp              : yes flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 fxsr_opt 3dnowext 3dnow up nonstop_tsc pni ts fid vid ttp tm stc
        bogomips        : 4377.64
    For comparison, 'linhost' illustrates a multicore setup:
        linhost [0] /bin/cat /proc/cpuinfo
        processor       : 0
        vendor_id       : AuthenticAMD
        cpu family      : 16
        model           : 2
        model name      : Quad-Core AMD Opteron(tm) Processor 2350
        stepping        : 3
        cpu MHz         : 2010.305
        cache size      : 512 KB
        physical id     : 0
        siblings        : 4
        core id         : 0
        cpu cores       : 4
        fpu             : yes
        fpu_exception   : yes
        cpuid level     : 5
        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 pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc pni cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy altmovcr8 abm sse4a misalignsse 3dnowprefetch osvw
        bogomips        : 4024.16
        TLB size        : 1024 4K pages
        clflush size    : 64
        cache_alignment : 64
        address sizes   : 48 bits physical, 48 bits virtual
        power management: ts ttp tm stc 100mhzsteps hwpstate [8]

        processor       : 1
        vendor_id       : AuthenticAMD
        cpu family      : 16
        model           : 2
        model name      : Quad-Core AMD Opteron(tm) Processor 2350
        stepping        : 3
        cpu MHz         : 2010.305
        cache size      : 512 KB
        physical id     : 0
        siblings        : 4
        core id         : 1
        cpu cores       : 4
        
In FreeBSD:

    To determine whether the kernel is 32bit or 64bit capable, as with
    Linux, for FreeBSD we use a hack:
        beastie [0] /usr/bin/file /sbin/init
        /sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), statically linked, for FreeBSD 8.1, stripped
    Details on the processor of our test host (beastie):
        beastie [0] /sbin/sysctl -a | /usr/bin/egrep 'hw.(machine|model|ncpu|clockrate)'
        hw.machine: i386
        hw.model: AMD Athlon(tm) 64 Processor 3500+
        hw.ncpu: 1
        hw.machine_arch: i386
        hw.clockrate: 2210
    We can confirm the above by way of '/var/run/dmesg.boot':
        beastie [0] /usr/bin/grep -i cpu /var/run/dmesg.boot
        CPU: AMD Athlon(tm) 64 Processor 3500+ (2210.95-MHz 686-class CPU)
        cpu0:  on acpi0
Next up in the series, disks.