• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

The Geek Diary

CONCEPTS | BASICS | HOWTO

  • OS
    • Linux
    • CentOS/RHEL
    • Solaris
    • Oracle Linux
    • Linux Services
    • VCS
  • Database
    • oracle
    • oracle 12c
    • ASM
    • mysql
    • MariaDB
    • Data Guard
  • DevOps
    • Docker
    • Shell Scripting
  • Interview Questions
  • Big Data
    • Hadoop
    • Cloudera
    • Hortonworks HDP

How to find Number of Physical/Logical CPUs, cores and memory in Solaris

By admin

Sometimes it becomes a bit tricky to gather CPU and memory information, especially with t-series hardware with LDOMs installed on it. The article takes an example of T5240 server to gather hardware information like physical/logical CPUs and memory. T5240 that I use, have the following specs :

CPU type Physical CPUs Virtual/logical CPUs (threads) Memory
UltraSPARC T2 Plus 2 128 64 GB

Gathering CPU related information

Finding physical/logical CPUs
To find the number of physical CPUs on any system use the -p option with psrinfo command. The -p option may not work with solaris 9 and below. In that case use the kstat command to find the physical CPUs.

# psrinfo -p
2

In case you need more detailed output use -v with the above command :

# psrinfo -pv
The physical processor has 64 virtual processors (0-63)
  UltraSPARC-T2+ (cpuid 0 clock 1165 MHz)
The physical processor has 64 virtual processors (64-127)
  UltraSPARC-T2+ (cpuid 64 clock 1165 MHz)

Now psrinfo or psrinfo -v would display all the logical/virtual CPUs. So in case of a T5240 it would show all the threads across all cores and CPUs.

# psrinfo -v | more
Status of virtual processor 0 as of: 08/12/2009 12:01:00
  on-line since 08/08/2009 06:03:02.
  The sparcv9 processor operates at 1165 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 1 as of: 08/12/2009 12:01:00
  on-line since 08/08/2009 06:03:05.
  The sparcv9 processor operates at 1165 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 2 as of: 08/12/2009 12:01:00
  on-line since 08/08/2009 06:03:05.
  The sparcv9 processor operates at 1165 MHz,
        and has a sparcv9 floating point processor.
.........

To calculate totale number of threads in T5240, simply sum up the output in psrinfo command :

# psrinfo | wc -l
128

Finding cores
To find total number of cores across all the CPUs :

# kstat cpu_info|grep core_id|sort -u|wc -l
      16

Now to find number of core per CPU simply do the math : total number of cores / total number of physical CPUs

Another way of gathering CPU related info is using the prtdiag command :

# prtdiag -v | more
System Configuration:  Oracle Corporation  sun4v SPARC T2+
    Memory size: 65536 Megabytes
    
    ================================ Virtual CPUs     ================================
    
    
    CPU ID Frequency Implementation         Status
    ------ --------- ---------------------- -------
    0      1400 MHz  SPARC-T2+               on-line  
    1      1400 MHz  SPARC-T2+               on-line  
    2      1400 MHz  SPARC-T2+               on-line  
    3      1400 MHz  SPARC-T2+               on-line  
    4      1400 MHz  SPARC-T2+               on-line  
    5      1400 MHz  SPARC-T2+               on-line  
    6      1400 MHz  SPARC-T2+               on-line  
    7      1400 MHz  SPARC-T2+               on-line  
    8      1400 MHz  SPARC-T2+               on-line  
    9      1400 MHz  SPARC-T2+               on-line  
    10     1400 MHz  SPARC-T2+               on-line  
    11     1400 MHz  SPARC-T2+               on-line  
    12     1400 MHz  SPARC-T2+               on-line  
    13     1400 MHz  SPARC-T2+               on-line  
    14     1400 MHz  SPARC-T2+               on-line  
    15     1400 MHz  SPARC-T2+               on-line  
    
    ....

Getting the CPU and core mapping
The small script here gives the CPU and core mapping on the server. In case of T5240 it will show which thread lies on which CPU core.

# cat cpu-core-mapping.sh
#!/bin/ksh
kstat cpu_info | 
    egrep "cpu_info |core_id" | 
    awk 
        'BEGIN { printf "%4s %4s", "CPU", "core" } 
         /module/ { printf "n%4s", $4 } 
         /core_id/ { printf "%4s", $2} 
         END { printf "n" }'

The output from running the script :

# ./cpu-core-mapping.sh
 CPU core
   0   0
   1   0
   2   2
   3   2
  40  40
  41  40
  42  42
  43  42
  .......

Gathering Memory information

Getting memory information is trivial. use the prtconf command and grem for Memory :

# prtconf | grep Memory
Memory size: 65536 Megabytes

We can also use the prtdiag command to find the memory in the system :

# prtdiag -v | grep Memory
    Memory size: 65536 Megabytes

Finding CPU information on T-series hardware with LDOMs

If you have LDOMs installed on the T-series hardware tyhat you have, above commands may not give you the correct values. Use the “ldm list-devices -a” command to list core, virtual CPUs (VCPUs) and resource assignments.

# ldm list-devices -a
CORE ID    %FREE   CPUSET
    0       12      (0, 1, 2, 3, 4, 5, 6, 7)
    1       0       (8, 9, 10, 11, 12, 13, 14, 15)
    2       0       (16, 17, 18, 19, 20, 21, 22, 23)
    3       0       (24, 25, 26, 27, 28, 29, 30, 31)
    4       0       (32, 33, 34, 35, 36, 37, 38, 39)
    5       0       (40, 41, 42, 43, 44, 45, 46, 47)
    6       0       (48, 49, 50, 51, 52, 53, 54, 55)
    7       0       (56, 57, 58, 59, 60, 61, 62, 63)
    8       0       (64, 65, 66, 67, 68, 69, 70, 71)
    9       0       (72, 73, 74, 75, 76, 77, 78, 79)
    10      0       (80, 81, 82, 83, 84, 85, 86, 87)
    11      0       (88, 89, 90, 91, 92, 93, 94, 95)
    12      0       (96, 97, 98, 99, 100, 101, 102, 103)
    13      0       (104, 105, 106, 107, 108, 109, 110, 111)
    14      0       (112, 113, 114, 115, 116, 117, 118, 119)
    15      0       (120, 121, 122, 123, 124, 125, 126, 127)
    16      0       (128, 129, 130, 131, 132, 133, 134, 135)
...........................

Filed Under: Solaris

Some more articles you might also be interested in …

  1. A beginners guide to Service Management Facility (SMF) in Solaris
  2. Solaris netstat : Understanding the output when displaying routing table
  3. How to Collect a Forced Crash Dump of a Hanging Solaris Guest LDom
  4. ZFS destroy error “cannot determine dependent datasets: recursive dependency”
  5. Script to label multiple disks in Solaris
  6. Solaris 11 : Increasing the size of a vdisk in LDom ( with backend device as ZFS volume )
  7. How to find the space consumed by ZFS snapshots
  8. 17 Examples of using Solaris boot command
  9. Script to reset the iostat errors counters (hard/soft/trn) without reboot
  10. Solaris 11 : How to monitor network traffic using “ipstat”, “tcpstat” and “netstat” commands

You May Also Like

Primary Sidebar

Recent Posts

  • Oracle Database – Configuring Secure Application Roles
  • Extend rule sets by using factors in Oracle Database Vault
  • What are Command Rules in oracle Database
  • Using Rule Sets in Oracle Database Vault
  • Archives
  • Contact Us
  • Copyright

© 2021 · The Geek Diary