Commit f9a7d23a authored by Joseph Qi's avatar Joseph Qi Committed by Zheng Zengkai
Browse files

psi: introduce psi_v1 boot parameter

hulk inclusion
category: feature
bugzilla: 182979 https://gitee.com/openeuler/kernel/issues/I4HOX6



------------------------------------------

Instead using static kconfig CONFIG_PSI_CGROUP_V1, we introduce a boot
parameter psi_v1 to enable psi cgroup v1 support. Default it is
disabled

Signed-off-by: default avatarJoseph Qi <joseph.qi@linux.alibaba.com>
Acked-by: default avatarXunlei Pang <xlpang@linux.alibaba.com>
Signed-off-by: default avatarChen Wandun <chenwandun@huawei.com>
Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent a885e3f9
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -4085,6 +4085,10 @@
			tracking.
			Format: <bool>

	psi_v1=		[KNL] Enable or disable pressure stall information
			tracking on cgroup v1.
			Format: <bool>

	psmouse.proto=	[HW,MOUSE] Highest PS2 mouse protocol extension to
			probe for; one of (bare|imps|exps|lifebook|any).
	psmouse.rate=	[HW,MOUSE] Set desired mouse report rate, in reports
+2 −0
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@ struct css_set;
extern struct static_key_false psi_disabled;
extern struct psi_group psi_system;

extern struct static_key_false psi_v1_disabled;

void psi_init(void);

void psi_task_change(struct task_struct *task, int clear, int set);
+0 −10
Original line number Diff line number Diff line
@@ -635,16 +635,6 @@ config PSI_DEFAULT_DISABLED

	  Say N if unsure.

config PSI_CGROUP_V1
	bool "Support PSI under cgroup v1"
	default Y
	depends on PSI
	help
	  If set, pressure stall information tracking will be used
	  for cgroup v1 other than v2.

	  Say N if unsure.

endmenu # "CPU/Task time and stats accounting"

config CPU_ISOLATION
+13 −0
Original line number Diff line number Diff line
@@ -376,8 +376,21 @@ struct cgroup_subsys cpuacct_cgrp_subsys = {
};

#ifdef CONFIG_PSI

static bool psi_v1_enable;
static int __init setup_psi_v1(char *str)
{
	return kstrtobool(str, &psi_v1_enable) == 0;
}
__setup("psi_v1=", setup_psi_v1);

static int __init cgroup_v1_psi_init(void)
{
	if (!psi_v1_enable) {
		static_branch_enable(&psi_v1_disabled);
		return 0;
	}

	cgroup_add_legacy_cftypes(&cpuacct_cgrp_subsys, cgroup_v1_psi_files);
	return 0;
}
+7 −7
Original line number Diff line number Diff line
@@ -145,6 +145,7 @@
static int psi_bug __read_mostly;

DEFINE_STATIC_KEY_FALSE(psi_disabled);
DEFINE_STATIC_KEY_FALSE(psi_v1_disabled);

#ifdef CONFIG_PSI_DEFAULT_DISABLED
static bool psi_enable;
@@ -751,13 +752,12 @@ static struct psi_group *iterate_groups(struct task_struct *task, void **iter)
#ifdef CONFIG_CGROUPS
	struct cgroup *cgroup = NULL;

	if (!*iter)
#ifdef CONFIG_PSI_CGROUP_V1
		cgroup = task_cgroup(task, cpuacct_cgrp_id);
#else
	if (!*iter) {
		if (static_branch_likely(&psi_v1_disabled))
			cgroup = task->cgroups->dfl_cgrp;
#endif
	else if (*iter == &psi_system)
		else
			cgroup = task_cgroup(task, cpuacct_cgrp_id);
	} else if (*iter == &psi_system)
		return NULL;
	else
		cgroup = cgroup_parent(*iter);