@@ -14,7 +14,9 @@ Validated platforms:
1414- ** Intel® Xeon® 6776P**
1515
1616## How PCT Works
17-
17+ <details >
18+ <summary > PCT Details </summary >
19+
1820PCT relies on ** two Intel Speed Select features** :
1921
2022- ** SST-TF (Turbo Frequency)**
@@ -86,9 +88,13 @@ With Hyper-Threading included, this becomes:
8688```
8789
8890This is the default strict bucket-0 PCT placement used by the updated set script.
91+ </details >
8992
9093## 1. Build the Environment
9194
95+ <details >
96+ <summary > Build Details </summary >
97+
9298Export the kernel build variables first:
9399
94100``` bash
@@ -107,17 +113,28 @@ Verify `intel-speed-select` exists inside the image:
107113docker compose run --rm intel-speed-select-shell ' which intel-speed-select && intel-speed-select --help | head'
108114```
109115
110- ## 2. Check PCT Status (Read-Only)
116+ </ details >
111117
112- This step verifies:
118+ ## 2. Check PCT Status (Read-Only)
113119
120+ <details >
121+ <summary > This step verifies: </summary >
122+
114123- Hardware support for Intel® Speed Select features
115124- SST-TF/PCT bucket-0 capacity
116125- Correct package/socket-based PCT capacity counting
117126- Core Power and CLOS enablement
118127- Current CPU-to-CLOS mapping
119128- Whether the current ` TARGET_CLOS ` CPU count matches the expected PCT logical CPU budget
120129
130+ </details >
131+
132+ Export the kernel build variables first:
133+
134+ ``` bash
135+ source ./set_kernel_env.sh
136+ ```
137+
121138Run:
122139
123140``` bash
@@ -126,6 +143,9 @@ docker compose --progress=plain --profile check up --abort-on-container-exit
126143
127144Example results when PCT and CLOS are enabled successfully:
128145
146+ <details >
147+ <summary > Example results </summary >
148+
129149``` bash
130150------------------------------------------------------------
131151CPU and Intel Speed Select Capability
@@ -196,6 +216,8 @@ Summary
196216Done.
197217```
198218
219+ </details >
220+
199221The check script writes the current target-CLOS CPU list to:
200222
201223``` text
@@ -205,10 +227,6 @@ The check script writes the current target-CLOS CPU list to:
205227For the example above, ` clos0_cpulist.txt ` contains 32 logical CPUs. With
206228Hyper-Threading enabled, that corresponds to 16 physical PCT cores.
207229
208- > ** Note:** CLOS assignment and CLOS enforcement are different. ` get-assoc ` may
209- > show CPU-to-CLOS mappings even when ` core-power info ` reports Core Power or
210- > CLOS disabled. For PCT benchmarking, ensure both Core Power and CLOS are enabled.
211-
212230## 3. Set PCT (Dispatch Package-Level PCT Cores Across Powerdomain Anchors)
213231
214232This step ** activates PCT in practice** by assigning selected HP CPUs to ** CLOS0** .
@@ -224,8 +242,9 @@ CPUs in CLOS0.
224242
225243### Set-script behavior
226244
227- The setup script performs the following actions:
228-
245+ <details >
246+ <summary > The setup script performs the following actions: </summary >
247+
229248- Detects PCT capacity from ` intel-speed-select turbo-freq info -l <TDP_LEVEL> ` .
230249- Counts ` bucket-0 ` once per package/socket.
231250- Derives ` HP_PER_PACKAGE ` from ` PCT_CORES_PER_PACKAGE ` unless overridden.
@@ -237,6 +256,14 @@ The setup script performs the following actions:
237256 - ** Selected HP CPUs → CLOS0** by default
238257 - ** All remaining CPUs → CLOS2** by default
239258
259+ </details >
260+
261+ Export the kernel build variables first:
262+
263+ ``` bash
264+ source ./set_kernel_env.sh
265+ ```
266+
240267Run the setup:
241268
242269``` bash
@@ -251,8 +278,9 @@ DRY_RUN=1 docker compose --progress=plain --profile set up --abort-on-container-
251278
252279### Example: package capacity dispatched across reporting powerdomain anchors
253280
254- Latest validated output:
255-
281+ <details >
282+ <summary > Example results </summary >
283+
256284``` bash
257285intel-speed-select-set-1 | ------------------------------------------------------------
258286intel-speed-select-set-1 | PCT capacity from SST-TF bucket-0
@@ -324,12 +352,9 @@ intel-speed-select-set-1 |
324352intel-speed-select-set-1 | Done.
325353```
326354
327- After applying the set flow, run the check flow again:
328-
329- ``` bash
330- docker compose --progress=plain --profile check up --abort-on-container-exit
331- ```
355+ </details >
332356
357+ After applying the set flow, run the check flow again.
333358The check output should show:
334359
335360``` text
@@ -346,6 +371,9 @@ the frequency benchmark can access host CPU frequency interfaces directly.
346371
347372### Prerequisites
348373
374+ <details >
375+ <summary > Details </summary >
376+
349377The host benchmark script reads the CPU list generated by the check profile:
350378
351379``` bash
@@ -370,6 +398,8 @@ which perfspect
370398perfspect --help | head
371399```
372400
401+ </details >
402+
373403### Run the benchmark
374404
375405Run the full flow:
@@ -381,6 +411,9 @@ docker compose --progress=plain --profile check up --abort-on-container-exit
381411./run_host_perfspect_benchmark.sh
382412```
383413
414+ <details >
415+ <summary > Details </summary >
416+
384417Default host benchmark command:
385418
386419``` bash
@@ -393,6 +426,7 @@ Override the PerfSpect benchmark options with `PERFSPECT_ARGS`:
393426PERFSPECT_ARGS=" --speed --frequency --memory --no-summary" \
394427./run_host_perfspect_benchmark.sh
395428```
429+ </details >
396430
397431### Analyze results
398432
@@ -418,6 +452,9 @@ frequency, and frequency gradually steps down as more physical cores become acti
418452
419453## 5. Debug / Manual Inspection (Optional)
420454
455+ <details >
456+ <summary > Debug Details </summary >
457+
421458This section is useful for ** troubleshooting** , ** validation** , or ** manual experimentation**
422459with Intel® Speed Select and PCT behavior.
423460
@@ -435,3 +472,4 @@ intel-speed-select turbo-freq info -l 1
435472intel-speed-select core-power info
436473intel-speed-select -c 0 core-power get-assoc
437474```
475+ </details >
0 commit comments