geopm_pio_sst(7) – Signals and controls for Intel Speed Select Technology
Description
The SSTIOGroup implements the geopm::IOGroup(3) interface to provide hardware signals and controls for key Intel Speed Select Technology features on supported Intel platforms with Linux Kernel versions >=5.3
SST-CP: Core Power
SST Core Power feature enables the user to specify priority of cores for power distribution in a power-constrained scenario. Cores are assigned to different Class Level of Service (CLOS). Each CLOS has a defined min/max frequency and weight, which determines how the frequency is allocated.
SST-TF: Turbo Frequency
SST Turbo Frequency feature enables the user to dynamically set different turbo ratio limits for different cores. Cores are specified as high-priority or low-priority via the SST-CP feature. Cores in CLOS 0 or 1 are high priority and can reach higher than the all-core turbo ratio limit when there is sufficient power headroom. Cores in CLOS 2 or 3 are constrained below the all-core turbo ratio limit. This feature only works when SST-CP is enabled.
Signals
System Info
SST::CONFIG_LEVEL:LEVEL
Returns the system’s configuration level (SST-PP feature)
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY_SUPPORT:CAPABILITIES
Returns 1 if SST-CP feature is supported, 0 if unsupported.
Aggregation: sum
Domain: package
Format: double
Unit: n/a
SST::HIGHPRIORITY_NCORES:n
Returns the count of high priority turbo frequency cores in bucket n. Buckets 0 - 7 are supported. Buckets are defined by the number of high priority cores (cores in CLOS 0 or 1), and they determine the frequencies that are obtainable by those cores. Generally, if there are fewer high priority cores, the increase in turbo frequency limit is greater.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::HIGHPRIORITY_FREQUENCY_SSE:n
Returns the high priority turbo frequency for bucket n at the SSE license level.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::HIGHPRIORITY_FREQUENCY_AVX2:n
Returns the high priority turbo frequency for bucket n at the AVX2 license level.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::HIGHPRIORITY_FREQUENCY_AVX512:n
Returns the high priority turbo frequency for bucket n at the AVX512 license level.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::LOWPRIORITY_FREQUENCY:[SSE|AVX2|AVX512]
Returns the low-priority turbo frequency of the specified license level. Note these frequencies do not change based on the number of high priority cores.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::TURBOFREQ_SUPPORT:SUPPORTED
Returns 1 if SST-TF feature is supported, 0 if unsupported.
Aggregation: sum
Domain: package
Format: double
Unit: n/a
Configuration
SST::TURBO_ENABLE:ENABLE
Returns 1 if SST-TF feature is enabled, 0 if disabled.
Aggregation: sum
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY_ENABLE:ENABLE
Returns 1 if SST-CP feature is enabled, 0 if disabled.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY:ASSOCIATION
Returns the CPU’s assigned CLOS.
Aggregation: expect_same
Domain: core
Format: double
Unit: n/a
SST::COREPRIORITY:n:PRIORITY
Returns proportional priority for CLOS n. A lower value indicates a higher importance. Priority ranges from 0-1 and is used to distribute power amongst cores.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY:n:FREQUENCY_MIN
Returns the minimum frequency of CLOS n. Given sufficient power headroom, all cores will receive this minimum frequency before any remaining power is distributed.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY:n:FREQUENCY_MAX
Returns the maximum frequency of CLOS n. Power will not be distributed to cores beyond this maximum frequency.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
Controls
SST::TURBO_ENABLE
Enable SST-TF feature. Enabling SST-TF also causes SST-CP to be enabled.
Aggregation: sum
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY_ENABLE
Enable SST-CP feature. Disabling SST-CP also causes SST-TF to be disabled.
Aggregation: sum
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY:ASSOCIATION
Assign a core to a CLOS.
Aggregation: expect_same
Domain: core
Format: double
Unit: n/a
SST::COREPRIORITY:n:PRIORITY
Set proportional priority for CLOS n. A lower value indicates a higher importance. Weight ranges from 0-1 and is used to distribute power amongst cores.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY:n:FREQUENCY_MIN
Set the minimum frequency of CLOS n. Given sufficient power headroom, all cores will receive this minimum frequency before any remaining power is distributed.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
SST::COREPRIORITY:n:FREQUENCY_MAX
Set the maximum frequency of CLOS n. Power will not be distributed to cores beyond this maximum frequency.
Aggregation: expect_same
Domain: package
Format: double
Unit: n/a
Example
The following example uses geopmread and geopmwrite command-line tools. These steps can also be followed within an agent.
Enabling SST-TF
Enable SST-CP:
geopmwrite SST::COREPRIORITY_ENABLE:ENABLE board 0 1
Enable SST-TF:
geopmwrite SST::TURBO_ENABLE:ENABLE board 0 1
Ensure that the turbo ratio limit MSR has been overwritten to allow higher all-core turbo frequencies.
geopmwrite MSR::TURBO_RATIO_LIMIT:MAX_RATIO_LIMIT_0 board 0 255e8
geopmwrite MSR::TURBO_RATIO_LIMIT:MAX_RATIO_LIMIT_1 board 0 255e8
…
geopmwrite MSR::TURBO_RATIO_LIMIT:MAX_RATIO_LIMIT_7 board 0 255e8
Configuring CLOS
Set the weight 0-1. Lower weight indicates higher priority. CLOS priority decreases as the CLOS number increases and weights should indicate that to achieve decent behavior.
geopmwrite SST::COREPRIORITY:0:PRIORITY board 0 0
geopmwrite SST::COREPRIORITY:1:PRIORITY board 0 0.34
geopmwrite SST::COREPRIORITY:2:PRIORITY board 0 0.67
geopmwrite SST::COREPRIORITY:3:PRIORITY board 0 1
Set the min and max frequencies per CLOS.
geopmwrite SST::COREPRIORITY:0:MIN_FREQUENCY board 0 1.5e9
geopmwrite SST::COREPRIORITY:0:MAX_FREQUENCY board 0 3.6e9
Setting Core Priorities
To assign core 3 to CLOS 1:
geopmwrite SST::COREPRIORITY:ASSOCIATION core 3 1
See Also
geopm(7), geopm::IOGroup(3), geopmwrite(1), geopmread(1), geopm::Agg(3)