061-cpuidle-mvebu-Update-cpuidle-thresholds-for-Armada-X.patch 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. From ce6031c89a35cffd5a5992b08377b77f49a004b9 Mon Sep 17 00:00:00 2001
  2. From: Sebastien Rannou <mxs@sbrk.org>
  3. Date: Fri, 13 Feb 2015 15:55:03 +0100
  4. Subject: [PATCH] cpuidle: mvebu: Update cpuidle thresholds for Armada XP SOCs
  5. Originally, the thresholds used in the cpuidle driver for Armada SOCs
  6. were temporarily chosen, leaving room for improvements.
  7. This commit updates the thresholds for the Armada XP SOCs with values
  8. that positively impact performances:
  9. without patch with patch vendor kernel
  10. - iperf localhost (gbit/sec) ~3.7 ~6.4 ~5.4
  11. - ioping tmpfs (iops) ~163k ~206k ~179k
  12. - ioping tmpfs (mib/s) ~636 ~805 ~699
  13. The idle power consumption is negatively impacted (proportionally less
  14. than the performance gain), and we are still performing better than
  15. the vendor kernel here:
  16. without patch with patch vendor kernel
  17. - power consumption idle (W) ~2.4 ~3.2 ~4.4
  18. - power consumption busy (W) ~8.6 ~8.3 ~8.6
  19. There is still room for improvement regarding the value of these
  20. thresholds, they were chosen to mimic the vendor kernel.
  21. This patch only impacts Armada XP SOCs and was tested on Online Labs
  22. C1 boards. A similar approach can be taken to improve the performances
  23. of the Armada 370 and Armada 38x SOCs.
  24. Thanks a lot to Thomas Petazzoni, Gregory Clement and Willy Tarreau
  25. for the discussions and tips around this topic.
  26. Signed-off-by: Sebastien Rannou <mxs@sbrk.org>
  27. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
  28. Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
  29. ---
  30. drivers/cpuidle/cpuidle-mvebu-v7.c | 8 ++++----
  31. 1 file changed, 4 insertions(+), 4 deletions(-)
  32. --- a/drivers/cpuidle/cpuidle-mvebu-v7.c
  33. +++ b/drivers/cpuidle/cpuidle-mvebu-v7.c
  34. @@ -50,18 +50,18 @@ static struct cpuidle_driver armadaxp_id
  35. .states[0] = ARM_CPUIDLE_WFI_STATE,
  36. .states[1] = {
  37. .enter = mvebu_v7_enter_idle,
  38. - .exit_latency = 10,
  39. + .exit_latency = 100,
  40. .power_usage = 50,
  41. - .target_residency = 100,
  42. + .target_residency = 1000,
  43. .flags = CPUIDLE_FLAG_TIME_VALID,
  44. .name = "MV CPU IDLE",
  45. .desc = "CPU power down",
  46. },
  47. .states[2] = {
  48. .enter = mvebu_v7_enter_idle,
  49. - .exit_latency = 100,
  50. + .exit_latency = 1000,
  51. .power_usage = 5,
  52. - .target_residency = 1000,
  53. + .target_residency = 10000,
  54. .flags = CPUIDLE_FLAG_TIME_VALID |
  55. MVEBU_V7_FLAG_DEEP_IDLE,
  56. .name = "MV CPU DEEP IDLE",