1. Create a SCHED_FIFO thread pinned to each LITTLE-designated CPU that spins for a fraction of the time. The time left over should be adjusted for the desired LITTLE-CPU capability.

2. Constrain the clock frequency of the LITTLE-designated CPUs using the /sys/devices/system/cpu/cpu*/cpufreq directories.

  • Please note that Paul E. McKenney's experiments with this approach on his Intel Core Duo laptop have given poor results: The specified clock-frequency constraints were ignored.

3. Use the Intel T-state capability.

  • According to Paul Brett:
    • Intel Architecture processors provide a clock modulation control exposed as the MSR_IA32_THERM_CONTROL MSR. This MSR can be used to reduce the effective clock frequency for each core independently in 12.5% increments from 100% down to 12.5%. Under normal conditions, the least significant 5 bits of the MSR are cleared to indicate 100% performance. To enable clock modulation, set bit 4 of this MSR to 1 and write a value from 1-7 in bits 1-3 (where 7 is 87.5% equivalent performance and 1 is 12.5% equivalent performance). More information on clock modulation can be found in volume 3 of the Intel IA64/IA32 Software Developers Manual, under Thermal Monitoring and Protection. Please note that the effect of clock modulation approximates running the CPU at a lower frequency - in benchmarks we have noted up to a 5% variance in performance between clock modulation and running the same core at the equivalent frequency.

WorkingGroups/PowerManagement/Archives/OldSpecs/EmulatingaBigLittleSystem (last modified 2013-08-22 10:03:12)