4ee45c385f
When level==0(low-performance mode): 1. prefer prev_cpu for rt tasks if prev cpu is fit. 2. make sure that it saves at least 6% of the energy when migrate tasks from little cpu to big cpu. When level==2(high-performance mode): 1. do not use EAS path. 2. select big cpu first when system is not overutilized. 3. do not trigger load_balance() when system is not overutilized. 4. prefer prev_cpu for rt tasks if prev cpu is fit. Test performance improvement for level==2: 1. CONFIG_ROCKCHIP_PERFORMANCE=n EMMC Random Write(4KB) 25.44MB/s Antutu: Total 581266 CPU 133023 GPU 234106 MEM 103602 UX 110535 2. CONFIG_ROCKCHIP_PERFORMANCE=y and level==2 EMMC Random Write(4KB) 44.19MB/s (73.7% improvement) Antutu: Total 600483 (3.3% improvement) CPU 134481 (1.1% improvement) GPU 234678 MEM 116551 (12.5% improvement) UX 114773 (3.8% improvement) Change-Id: I949ac229864eb12159b886b7769e0b489345bef4 Signed-off-by: Liang Chen <cl@rock-chips.com>
34 lines
1.2 KiB
C
34 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2022 Rockchip Electronics Co., Ltd
|
|
*/
|
|
#ifndef __SOC_ROCKCHIP_PERFORMANCE_H
|
|
#define __SOC_ROCKCHIP_PERFORMANCE_H
|
|
|
|
enum {
|
|
ROCKCHIP_PERFORMANCE_LOW = 0,
|
|
ROCKCHIP_PERFORMANCE_NORMAL,
|
|
ROCKCHIP_PERFORMANCE_HIGH
|
|
};
|
|
|
|
#ifdef CONFIG_ROCKCHIP_PERFORMANCE
|
|
extern int rockchip_perf_get_level(void);
|
|
extern struct cpumask *rockchip_perf_get_cpul_mask(void);
|
|
extern struct cpumask *rockchip_perf_get_cpub_mask(void);
|
|
extern int rockchip_perf_select_rt_cpu(int prev_cpu, struct cpumask *lowest_mask);
|
|
extern bool rockchip_perf_misfit_rt(int cpu);
|
|
extern void rockchip_perf_uclamp_sync_util_min_rt_default(void);
|
|
#else
|
|
static inline int rockchip_perf_get_level(void) { return ROCKCHIP_PERFORMANCE_NORMAL; }
|
|
static inline struct cpumask *rockchip_perf_get_cpul_mask(void) { return NULL; };
|
|
static inline struct cpumask *rockchip_perf_get_cpub_mask(void) { return NULL; };
|
|
static inline int rockchip_perf_select_rt_cpu(int prev_cpu, struct cpumask *lowest_mask)
|
|
{
|
|
return prev_cpu;
|
|
}
|
|
static inline bool rockchip_perf_misfit_rt(int cpu) { return false; }
|
|
static inline void rockchip_perf_uclamp_sync_util_min_rt_default(void) {}
|
|
#endif
|
|
|
|
#endif
|