1753860 Members
7411 Online
108809 Solutions
New Discussion

Who Me Too'd this topic

Jeremy Begg
Trusted Contributor

Hyperthreading and VMS

Hi,

 

When the first hyperthread-capable Itanium servers came out with VMS support, I remember a comment from a VMS engineering presentation that said each CPU thread would show up as a separate CPU on VMS, and need a licence accordingly.  This would have been with VMS 8.3 I believe.

 

A BL860c i2 server blade here has a single, quad-core Tukwila processor with hyperthreading turned on. VMS shows 8 CPUs (as expected):

 

System: HOCD04, HP Integrity BL860c i2  (1.60GHz/5.0MB)

CPU ownership sets:
   Active               0-7
   Configure            0-7

CPU state sets:
   Potential            0-7
   Autostart            0-7
   Powered Down         None
   Not Present          None
   Hard Excluded        None
   Failover             None

 

The system has a 4-unit HAOE licence:

 

------- Product ID --------    ---- Rating ----- -- Version --
Product            Producer    Units PCL   Activ Version Release    Termination
OPENVMS-I64-HAOE   HP              4  1     0      0.0  (none)      (none)

 

so I expected that only half of the available 8 CPUs would be used.

As a test, set off 8 processes which run in a tight CPU loop at priority 0.  Somewhat to my surprise, MONITOR SYSTEM shows 8 processes in CUR state and 800% CPU busy.  Which implies that the 4-unit licence above is allowing all 8 CPUs to operate.

 

Rather more curiously MONITOR PROCESS/TOPCPU shows 8 processes each consuming 50% of CPU:

 

                            OpenVMS Monitor Utility
                             TOP CPU TIME PROCESSES
                                 on node HOCD04
                            22-JUN-2012 12:21:52.93

                                     0         25        50        75       100
                                     + - - - - + - - - - + - - - - + - - - - +
 2200029B  Jeremy6                50  xxxxxxxxxxxxxxxxxxx
  2200029D  Jeremy8                50  xxxxxxxxxxxxxxxxxxx
 2200029C  Jeremy7                50  xxxxxxxxxxxxxxxxxxx
 22000299  Jeremy4                50  xxxxxxxxxxxxxxxxxxx
 22000298  Jeremy3                50  xxxxxxxxxxxxxxxxxxx
 22000297  Jeremy2                50  xxxxxxxxxxxxxxxxxxx
 22000296  Jeremy1                50  xxxxxxxxxxxxxxxxxxx
 2200029A  Jeremy5                50  xxxxxxxxxxxxxxxxxxx

 

which would imply there's some sort of recognition that a hyperthread CPU is only half a core!

 

Can some explain how VMS treats hyperthreaded CPUs, both from a scheduling perspective and a licencing perspective?  (I know there's some doubt about how helpful hyperthreading might be for performance, and on other systems I've been turning it off.  My findings today came about by accident.)

 

Thanks,

Jeremy Begg

 

Who Me Too'd this topic