EAS Development for Mainline Linux

EAS development for mainline Linux takes place on LKML and Linaro eas-dev mailing lists where proposed patches are discussed with the community. Arm now provides a pre-integrated version of latest EAS patches for mainline, for upstream development use.

EAS mainline is a moving integration branch tracking tip:sched/core and adding the latest versions of EAS related patch sets targeted at the mainline kernel. The patches may already be under discussion on relevant open source mailing lists or waiting here while their dependencies get resolved and merged upstream.

The integration branch comes as is with synthetic test case testing only. The intention is to have a single branch containing the full EAS picture for mainline Linux kernel developers interested in tracking progress. This EAS mainline integration branch is not suitable for product development. For product, please use the AOSP common kernel.

Source code

EAS mainline integration branches are made available regularly on:

        git://linux-arm.org/linux-power.git

The releases are tagged with the date e.g. _20180622 so old integrations are available for comparison

Latest: integration_20180706

Tree: eas/next/integration

Base: eas/next/integration_base

Platform support:

Arm Juno r0, r2, Hikey960 and Arm TC2

New changes:

[PATCHv4 00/12] "sched/fair: Migrate 'misfit' tasks on asymmetric capacity systems" integrated

Main features:

Per-cpu Energy Model and Energy Aware Scheduling.

Misfit task, i.e. forcing migration of running tasks that do not fit on the CPU they are currently running on.

Runtime scheduler domain flag detection.

Periodic load balance improvements.

Tracepoints.

Next work items:

Make sure that the remaining misfit task related test-cases pass on Juno r0. Work on get 100% pass-rate on the other platforms (Arm Juno r2, Hikey960 and Arm TC2) as well.

  • Test Results
    • platform Juno r0
    • test case passed if failure rate < 10%
    • generic:
      1. tests.eas.generic.EnergyModelWakeMigration:       test_slack:               passed 171/171 (100.0%)
      2. tests.eas.generic.EnergyModelWakeMigration:       test_task_placement:      passed 171/171 (100.0%)
      3. tests.eas.generic.OneSmallTask:                   test_slack:               passed 177/177 (100.0%)
      4. tests.eas.generic.OneSmallTask:                   test_task_placement:      passed 174/177 ( 98.3%)
      5. tests.eas.generic.RampDown:                       test_slack:               passed 177/177 (100.0%)
      6. tests.eas.generic.RampDown:                       test_task_placement:      passed 177/177 (100.0%)
      7. tests.eas.generic.RampUp:                         test_slack:               passed 177/177 (100.0%)
      8. tests.eas.generic.RampUp:                         test_task_placement:      passed 177/177 (100.0%)
      9. tests.eas.generic.ThreeSmallTasks:                test_slack:               passed 177/177 (100.0%)
      10. tests.eas.generic.ThreeSmallTasks:                test_task_placement:      passed 177/177 (100.0%)
      11. tests.eas.generic.TwoBigTasks:                    test_slack:               passed 176/177 ( 99.4%)
      12. tests.eas.generic.TwoBigTasks:                    test_task_placement:      passed 177/177 (100.0%)
      13. tests.eas.generic.TwoBigThreeSmall:               test_slack:               passed 177/177 (100.0%)
      14. tests.eas.generic.TwoBigThreeSmall:               test_task_placement:      passed 167/177 ( 94.4%)

    • load tracking:
      1. tests.eas.load_tracking.CpuInvarianceTest:        test_task_util_avg:       passed 154/154 (100.0%)
      2. tests.eas.load_tracking.FreqInvarianceTest:       test_task_load_avg:       passed 154/154 (100.0%)
      3. tests.eas.load_tracking.FreqInvarianceTest:       test_task_util_avg:       passed 154/154 (100.0%)
      4. tests.eas.load_tracking.OneTaskCPUMigrationTest:  test_util_task_migration: passed 154/154 (100.0%)
      5. tests.eas.load_tracking.PELTTasksTest:            test_load_avg_behaviour:  passed 154/154 (100.0%)
      6. tests.eas.load_tracking.PELTTasksTest:            test_load_avg_range:      passed 154/154 (100.0%)
      7. tests.eas.load_tracking.PELTTasksTest:            test_util_avg_behaviour:  passed 154/154 (100.0%)
      8. tests.eas.load_tracking.PELTTasksTest:            test_util_avg_range:      passed 154/154 (100.0%)
      9. tests.eas.load_tracking.TwoGroupsCascade:         test_util_root_group:     passed 149/154 ( 96.7%)
      10. tests.eas.load_tracking.TwoGroupsCascade:         test_util_tg1_1_group:    passed 149/154 ( 96.7%)
      11. tests.eas.load_tracking.TwoGroupsCascade:         test_util_tg1_group:      passed 149/154 ( 96.7%)
      12. tests.eas.load_tracking.TwoTasksCPUMigrationTest: test_util_task_migration: passed 154/154 (100.0%)
      13. tests.eas.load_tracking.UnbalancedHierarchy:      test_util_root_group:     passed 149/154 ( 96.7%)
      14. tests.eas.load_tracking.UnbalancedHierarchy:      test_util_tg1_group:      passed 149/154 ( 96.7%)
      15. tests.eas.load_tracking.UnbalancedHierarchy:      test_util_tg2_group:      passed 149/154 ( 96.7%)
      16. tests.eas.load_tracking.UnbalancedHierarchy:      test_util_tg3_group:      passed 153/154 ( 99.3%)
      17. tests.eas.load_tracking.UnbalancedHierarchy:      test_util_tg4_group:      passed 153/154 ( 99.3%)
    • misfit:
      1. tests.eas.misfit.StaggeredFinishes:               test_migration_delay:     FAILED  89/146 ( 61.0%)
      2. tests.eas.misfit.StaggeredFinishes:               test_preempt_time:        FAILED 125/146 ( 85.6%)
      3. tests.eas.misfit.StaggeredFinishes:               test_throughput:          FAILED 110/146 ( 75,3%)