HyperThreading (formally called Hyper-Threading Technology) provides the ability for a processor to create an additional logical processor that might allow additional efficiencies of processing. For example, a dual-core Itanium 2 processor with HyperThreading active provides four logical processors, two on each core. An Itanium 9300 quad-core processor with HyperThreading active provides eight logical processors. This allows the operating system to schedule two threads or processes simultaneously. The effect that HyperThreading has on performance depends heavily on the application. HyperThreading can increase the overall throughput of an application, but individual processes are usually slowed down by it.

If you use this event set, the default is to make the measurements irrespective of CPU operating state (that is, user, system, or interrupt states). By default, the idle state is not included in the measurement. You can use command-line options to limit the scope of the measurement. Specifically, you can:

Limit measurement to a specific privilege level: -m event_set[:alluserkernel]

Include idle: --exclude-idle False

Exclude the interruption state: --measure-on-interrupts off

Only measure the interruption state: --measure-on-interrupts only

The metrics available from this event set are described in the following sections. These descriptions do not take into account any command-line options you might use.

Metrics Available for Intel Itanium 2 and dual core Itanium 2 processor systems

The metrics are:

TS Per Sec

Number of thread switches each second.

TS Per Kinst

Number of thread switches every 1000 instructions.

L3miss

Percentage of all thread switches that were caused by a miss in the Level 3 cache. A large value indicates a “good” use of HyperThreading: while this process is waiting on memory, another process can execute.

Timer

Percentage of all thread switches due to the “fair share” timer. A large value indicates a “poor” use of HyperThreading: both processes are competing for processor execution cycles.

Hint

Percentage of all thread switches that were triggered by the “hint@pause” instruction. This is when the measured process voluntarily gives up the processor because it is about to wait for something (like a mutex). A non-zero value indicates a “good” use of HyperThreading: this process has natural “idle” time that another process can make use of.

Other

Percentage of all other reasons that thread switches occurred.

0–3

Percentage of thread switches that were triggered after the processor had stalled for 0 to 3 cycles. A large value indicates efficient HyperThreading.

4–15

Percentage of thread switches that were triggered after the processor had stalled for 4 to 15 cycles. A non-zero value represents wasted processor cycles.

16–63

Percentage of thread switches that were triggered after the processor had stalled for 16 to 63 cycles. A non-zero value represents wasted processor cycles.

264 Event Set Descriptions for CPU Metrics