All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 0/2] Define a new apporach to determine if an idle vCPU will be scheduled instantly or not
@ 2021-04-01 11:59 Parth Shah
  2021-04-01 11:59 ` [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly Parth Shah
  2021-04-01 11:59 ` [RFC 2/2] sched: Use H_IDLE_HINT hcall to find if a vCPU can be wakeup target Parth Shah
  0 siblings, 2 replies; 6+ messages in thread
From: Parth Shah @ 2021-04-01 11:59 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: ego, mikey, srikar, npiggin, paulus, svaidy


Abstract:
=========
The Linux task scheduler tries to find an idle cpu for a wakee task
thereby lowering the wakeup latency as much as possible. The process
of determining if a cpu is idle or not has evolved over time.
Currently, a cpu is considered idle if
- there are no task running or enqueued to the runqueue of the cpu and
- in while running inside a guest, a cpu is not yielded (determined
via available_idle_cpu())

While inside the guest, there is no way to deterministically predict
if a vCPU that has been yielded/ceded to the hypervisor can be gotten
back. Hence currently the scheduler considers such CEDEd vCPU as not
"available" idle and would instead pick other busy CPUs for waking up
the wakee task.

In this patch-set we try to further classify idle cpus as instantly
available or not. This is achieved by taking hint from the hypervisor
by quering if the vCPU will be scheduled instantly or not.  In most
cases, scheduler prefers prev_cpu of a waking task unless it is busy.
In this patchset, the hypervisor uses this information to figure out
if the prev_cpu used by the task (of the corresponding vCPU) is idle
or not, and passes this information to the guest.

Interface:
===========
This patchset introduces a new HCALL named H_IDLE_HINT for the guest
to query if a vCPU can be dispatched quickly or not. This is
currently a crude interface to demonstrate the efficacy of this
method. We are looking for feedback on any other mechanisms of
obtainining a hint from the hypervisor where the hint is still relevant.

But this patch series tries to emphasis the possible optimization for
task wakeup-latency and is open to accept any interface/architecture.

Internal working:
========
The code-flow of the current implementation is as follow:
- GuestOS scheduler searches for idle cpu using `avaialable_idle_cpu()`
  which also looks if a vcpu_is_preempted() to see if vCPU is yielded or
  not.
- If vCPU is yielded, then the GuestOS will additionally make hcall
  H_IDLE_HINT to find if a vCPU can be scheduled instantly or not.
- The hypervisor services hcall by first finding the corresponding
  task-p of the vCPU and returns 1 if the task_cpu(p) is
  avaialable_idle_cpu or running SCHED_IDLE task. Else returns 0.
- GuestOS takes up this hint and considers the vCPU as idle if the hint
  from hypervisor has value == 1.


The patch-set is based on v5.11 kernel.

Results:
========
- Baseline kernel = v5.11
- Patched kernel = v5.11 + this patch-set

Setup:
All the results are taken on IBM POWER9 baremetal system running patched
kernel. This system consists of 2 NUMA nodes, 22 cores per socket with
SMT-4 mode.

2 KVM guests are created sharing same set of physical CPUs, and each KVM
has identical CPU topology of 40 CPUs, 10 cores with SMT-4 support.


Scenarios:
----------
1. Under-commit case: Only one KVM is active at a time.

- Baseline (v5.11):
$> schbench -m 20 -t 2 -r 30
Latency percentiles (usec)
        50.0000th: 67
        75.0000th: 83
        90.0000th: 115
        95.0000th: 352
        *99.0000th: 2260 <-----
        99.5000th: 3580
        99.9000th: 7128
        min=0, max=9927
- With patch (v5.11 + patch):
$> schbench -m 20 -t 2 -r 30
Latency percentiles (usec)
        50.0000th: 100
        75.0000th: 113
        90.0000th: 328
        95.0000th: 360
        *99.0000th: 434 (-80%) <----
        99.5000th: 489
        99.9000th: 2324
        min=0, max=6054

We see a significant reduction in the tail latencies due to being able
to schedule on an yielded/ceded idle CPU with the patchset instead of
waking up the task on a busy CPU.

2. Over-commit case: Both KVMs sharing same set of CPUs. One KVM is
creating noise using `schbench -m 10 -t 2 -r 3000` while only the other
KVM is benchmarked.

- Baseline:
$> schbench -m 20 -t 2 -r 30
Latency percentiles (usec)
        50.0000th: 73
        75.0000th: 89
        90.0000th: 115
        95.0000th: 166
        *99.0000th: 3084
        99.5000th: 4044
        99.9000th: 7656
        min=0, max=18448
- With patch:
$> schbench -m 20 -t 2 -r 30
Latency percentiles (usec)
        50.0000th: 114
        75.0000th: 137
        90.0000th: 170
        95.0000th: 237
        *99.0000th: 2828
        99.5000th: 4168
        99.9000th: 7528
        min=0, max=15387


The results demonstrates that the proposed method of getting idle-hint
from the hypervisor to better find an idle cpu in the guestOS is very
helpful in under-commmit cases due to higher chance of finding the
previously used physical cpu as idle.
The results also confirms that there is no regression in the over-commit
case where the proposed methodlogy does not affect much.

Additionally, more tests were carried out with different combinations of
schbench threads and different numbers of KVM guest. The results for
these tests further confirmed that there is no major regression on the
workload performance.


Parth Shah (2):
  KVM:PPC: Add new hcall to provide hint if a vcpu task will be
    scheduled instantly.
  sched: Use H_IDLE_HINT hcall to find if a vCPU can be wakeup target

 arch/powerpc/include/asm/hvcall.h   |  3 ++-
 arch/powerpc/include/asm/paravirt.h | 21 +++++++++++++++++++--
 arch/powerpc/kvm/book3s_hv.c        | 13 +++++++++++++
 arch/powerpc/kvm/trace_hv.h         |  1 +
 include/linux/kvm_host.h            |  1 +
 include/linux/sched.h               |  1 +
 kernel/sched/core.c                 | 13 +++++++++++++
 kernel/sched/fair.c                 | 12 ++++++++++++
 kernel/sched/sched.h                |  1 +
 virt/kvm/kvm_main.c                 | 17 +++++++++++++++++
 10 files changed, 80 insertions(+), 3 deletions(-)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly.
  2021-04-01 11:59 [RFC 0/2] Define a new apporach to determine if an idle vCPU will be scheduled instantly or not Parth Shah
@ 2021-04-01 11:59 ` Parth Shah
  2021-04-01 12:53   ` kernel test robot
                     ` (2 more replies)
  2021-04-01 11:59 ` [RFC 2/2] sched: Use H_IDLE_HINT hcall to find if a vCPU can be wakeup target Parth Shah
  1 sibling, 3 replies; 6+ messages in thread
From: Parth Shah @ 2021-04-01 11:59 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: ego, mikey, srikar, npiggin, paulus, svaidy

H_IDLE_HINT is a new hcall introduced to provide a hint to the guestOS
indicating if a given vCPU can be scheduled instantly or not.

The task scheduler generally prefers previous cpu of a task if it is
available_idle. So if a prev_cpu of the corresponding vCPU task_struct is
found to be available_idle or sched_idle then hint guestOS that the given
vCPU can be scheduled instantly by the hypervisor.

Signed-off-by: Parth Shah <parth@linux.ibm.com>
---
 arch/powerpc/include/asm/hvcall.h |  3 ++-
 arch/powerpc/kvm/book3s_hv.c      | 13 +++++++++++++
 arch/powerpc/kvm/trace_hv.h       |  1 +
 include/linux/kvm_host.h          |  1 +
 include/linux/sched.h             |  1 +
 kernel/sched/core.c               | 13 +++++++++++++
 kernel/sched/fair.c               | 12 ++++++++++++
 kernel/sched/sched.h              |  1 +
 virt/kvm/kvm_main.c               | 17 +++++++++++++++++
 9 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/asm/hvcall.h b/arch/powerpc/include/asm/hvcall.h
index c98f5141e3fc..c91e27840c03 100644
--- a/arch/powerpc/include/asm/hvcall.h
+++ b/arch/powerpc/include/asm/hvcall.h
@@ -315,7 +315,8 @@
 #define H_SCM_HEALTH            0x400
 #define H_SCM_PERFORMANCE_STATS 0x418
 #define H_RPT_INVALIDATE	0x448
-#define MAX_HCALL_OPCODE	H_RPT_INVALIDATE
+#define H_IDLE_HINT		0x44C
+#define MAX_HCALL_OPCODE	H_IDLE_HINT
 
 /* Scope args for H_SCM_UNBIND_ALL */
 #define H_UNBIND_SCOPE_ALL (0x1)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 6f612d240392..0472b8a1302f 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -931,6 +931,17 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu)
 		if (tvcpu->arch.ceded)
 			kvmppc_fast_vcpu_kick_hv(tvcpu);
 		break;
+	case H_IDLE_HINT:
+		target = kvmppc_get_gpr(vcpu, 4);
+		tvcpu = kvmppc_find_vcpu(vcpu->kvm, target);
+		if (!tvcpu) {
+			ret = H_PARAMETER;
+			break;
+		}
+		ret = kvm_vcpu_provide_idle_hint(tvcpu);
+		kvmppc_set_gpr(vcpu, 4, ret);
+		ret = H_SUCCESS;
+		break;
 	case H_CONFER:
 		target = kvmppc_get_gpr(vcpu, 4);
 		if (target == -1)
@@ -1145,6 +1156,7 @@ static int kvmppc_hcall_impl_hv(unsigned long cmd)
 	case H_CEDE:
 	case H_PROD:
 	case H_CONFER:
+	case H_IDLE_HINT:
 	case H_REGISTER_VPA:
 	case H_SET_MODE:
 	case H_LOGICAL_CI_LOAD:
@@ -5359,6 +5371,7 @@ static unsigned int default_hcall_list[] = {
 	H_PROD,
 	H_CONFER,
 	H_REGISTER_VPA,
+	H_IDLE_HINT,
 #ifdef CONFIG_KVM_XICS
 	H_EOI,
 	H_CPPR,
diff --git a/arch/powerpc/kvm/trace_hv.h b/arch/powerpc/kvm/trace_hv.h
index 830a126e095d..d0302a917eaf 100644
--- a/arch/powerpc/kvm/trace_hv.h
+++ b/arch/powerpc/kvm/trace_hv.h
@@ -46,6 +46,7 @@
 	{H_CEDE,			"H_CEDE"}, \
 	{H_CONFER,			"H_CONFER"}, \
 	{H_PROD,			"H_PROD"}, \
+	{H_IDLE_HINT,			"H_IDLE_HINT"}, \
 	{H_GET_PPP,			"H_GET_PPP"}, \
 	{H_SET_PPP,			"H_SET_PPP"}, \
 	{H_PURR,			"H_PURR"}, \
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index f3b1013fb22c..78fb0465cd65 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -843,6 +843,7 @@ bool kvm_vcpu_wake_up(struct kvm_vcpu *vcpu);
 void kvm_vcpu_kick(struct kvm_vcpu *vcpu);
 int kvm_vcpu_yield_to(struct kvm_vcpu *target);
 void kvm_vcpu_on_spin(struct kvm_vcpu *vcpu, bool usermode_vcpu_not_eligible);
+unsigned long kvm_vcpu_provide_idle_hint(struct kvm_vcpu *target);
 
 void kvm_flush_remote_tlbs(struct kvm *kvm);
 void kvm_reload_remote_mmus(struct kvm *kvm);
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 6e3a5eeec509..3dea2a4ff58d 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1688,6 +1688,7 @@ static inline int set_cpus_allowed_ptr(struct task_struct *p, const struct cpuma
 extern int yield_to(struct task_struct *p, bool preempt);
 extern void set_user_nice(struct task_struct *p, long nice);
 extern int task_prio(const struct task_struct *p);
+extern unsigned long get_idle_hint(struct task_struct *p);
 
 /**
  * task_nice - return the nice value of a given task.
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index ff74fca39ed2..2962bf97ab13 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6812,6 +6812,19 @@ int __sched yield_to(struct task_struct *p, bool preempt)
 }
 EXPORT_SYMBOL_GPL(yield_to);
 
+/*
+ * Provide hint to the VM indicating if the previous vCPU can be scheduled
+ * instantly or not.
+ */
+unsigned long __sched get_idle_hint(struct task_struct *p)
+{
+	unsigned long ret = 0;
+	if (p->sched_class->get_idle_hint)
+		ret = p->sched_class->get_idle_hint(p);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(get_idle_hint);
+
 int io_schedule_prepare(void)
 {
 	int old_iowait = current->in_iowait;
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 04a3ce20da67..16701a3da5dc 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7236,6 +7236,16 @@ static bool yield_to_task_fair(struct rq *rq, struct task_struct *p)
 	return true;
 }
 
+static unsigned long get_idle_hint_fair(struct task_struct *p)
+{
+	unsigned int prev_cpu = task_cpu(p);
+
+	if (available_idle_cpu(prev_cpu) || sched_idle_cpu(prev_cpu))
+		return 1;
+
+	return 0;
+}
+
 #ifdef CONFIG_SMP
 /**************************************************
  * Fair scheduling class load-balancing methods.
@@ -11264,6 +11274,8 @@ DEFINE_SCHED_CLASS(fair) = {
 	.task_change_group	= task_change_group_fair,
 #endif
 
+	.get_idle_hint		= get_idle_hint_fair,
+
 #ifdef CONFIG_UCLAMP_TASK
 	.uclamp_enabled		= 1,
 #endif
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index bb09988451a0..09b1e35d8331 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1871,6 +1871,7 @@ struct sched_class {
 #ifdef CONFIG_FAIR_GROUP_SCHED
 	void (*task_change_group)(struct task_struct *p, int type);
 #endif
+	unsigned long (*get_idle_hint)(struct task_struct *p);
 };
 
 static inline void put_prev_task(struct rq *rq, struct task_struct *prev)
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 8367d88ce39b..5d750ae2fe0a 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -2907,6 +2907,23 @@ int kvm_vcpu_yield_to(struct kvm_vcpu *target)
 }
 EXPORT_SYMBOL_GPL(kvm_vcpu_yield_to);
 
+unsigned long kvm_vcpu_provide_idle_hint(struct kvm_vcpu *target)
+{
+	struct pid *pid;
+	struct task_struct *task = NULL;
+
+	rcu_read_lock();
+	pid = rcu_dereference(target->pid);
+	if (pid)
+		task = get_pid_task(pid, PIDTYPE_PID);
+	rcu_read_unlock();
+	if (!task)
+		return 0;
+
+	return get_idle_hint(task);
+}
+EXPORT_SYMBOL_GPL(kvm_vcpu_provide_idle_hint);
+
 /*
  * Helper that checks whether a VCPU is eligible for directed yield.
  * Most eligible candidate to yield is decided by following heuristics:
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RFC 2/2] sched: Use H_IDLE_HINT hcall to find if a vCPU can be wakeup target
  2021-04-01 11:59 [RFC 0/2] Define a new apporach to determine if an idle vCPU will be scheduled instantly or not Parth Shah
  2021-04-01 11:59 ` [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly Parth Shah
@ 2021-04-01 11:59 ` Parth Shah
  1 sibling, 0 replies; 6+ messages in thread
From: Parth Shah @ 2021-04-01 11:59 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: ego, mikey, srikar, npiggin, paulus, svaidy

During checking for an available_idle_cpu, if the vCPU is yielded then
check if it will be scheduled instantly by hypervisor or not. From guestOS,
use H_IDLE_HINT hcall to ask for this hint from the hypverisor, and
consider the yielded vCPU as target for wakeups iff it is hinted to be
scheduled instantly.

Signed-off-by: Parth Shah <parth@linux.ibm.com>
---
 arch/powerpc/include/asm/paravirt.h | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/paravirt.h b/arch/powerpc/include/asm/paravirt.h
index edc08f04aef7..c7dd0368e1a4 100644
--- a/arch/powerpc/include/asm/paravirt.h
+++ b/arch/powerpc/include/asm/paravirt.h
@@ -41,6 +41,15 @@ static inline void yield_to_any(void)
 {
 	plpar_hcall_norets(H_CONFER, -1, 0);
 }
+
+/* Find if the previous physical CPU of this vcpu is available_idle or not */
+static inline void pcpu_available_instantly(int vcpu, unsigned long *is_idle)
+{
+	unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
+
+	if (plpar_hcall(H_IDLE_HINT, retbuf, vcpu) == H_SUCCESS)
+		*is_idle = retbuf[0];
+}
 #else
 static inline bool is_shared_processor(void)
 {
@@ -75,6 +84,8 @@ static inline void prod_cpu(int cpu)
 #define vcpu_is_preempted vcpu_is_preempted
 static inline bool vcpu_is_preempted(int cpu)
 {
+	unsigned long is_idle = 0;
+
 	if (!is_shared_processor())
 		return false;
 
@@ -92,8 +103,14 @@ static inline bool vcpu_is_preempted(int cpu)
 	}
 #endif
 
-	if (yield_count_of(cpu) & 1)
-		return true;
+	if (yield_count_of(cpu) & 1) {
+#ifdef CONFIG_PPC_SPLPAR
+		pcpu_available_instantly(cpu, &is_idle);
+#endif
+
+		if (!is_idle)
+			return true;
+	}
 	return false;
 }
 
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly.
  2021-04-01 11:59 ` [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly Parth Shah
@ 2021-04-01 12:53   ` kernel test robot
  2021-04-01 19:59   ` kernel test robot
  2021-04-01 19:59   ` kernel test robot
  2 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-04-01 12:53 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3485 bytes --]

Hi Parth,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on tip/sched/core]
[also build test ERROR on powerpc/next kvm/queue v5.12-rc5 next-20210401]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Parth-Shah/Define-a-new-apporach-to-determine-if-an-idle-vCPU-will-be-scheduled-instantly-or-not/20210401-200216
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 0a2b65c03e9b47493e1442bf9c84badc60d9bffb
config: i386-tinyconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/1f6313245d9d724b76ea1d47c94b165c07fa9541
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Parth-Shah/Define-a-new-apporach-to-determine-if-an-idle-vCPU-will-be-scheduled-instantly-or-not/20210401-200216
        git checkout 1f6313245d9d724b76ea1d47c94b165c07fa9541
        # save the attached .config to linux build tree
        make W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   kernel/sched/fair.c:5393:6: warning: no previous prototype for 'init_cfs_bandwidth' [-Wmissing-prototypes]
    5393 | void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b) {}
         |      ^~~~~~~~~~~~~~~~~~
   kernel/sched/fair.c: In function 'get_idle_hint_fair':
>> kernel/sched/fair.c:7257:38: error: implicit declaration of function 'sched_idle_cpu'; did you mean 'sched_idle_rq'? [-Werror=implicit-function-declaration]
    7257 |  if (available_idle_cpu(prev_cpu) || sched_idle_cpu(prev_cpu))
         |                                      ^~~~~~~~~~~~~~
         |                                      sched_idle_rq
   kernel/sched/fair.c: At top level:
   kernel/sched/fair.c:11211:6: warning: no previous prototype for 'free_fair_sched_group' [-Wmissing-prototypes]
   11211 | void free_fair_sched_group(struct task_group *tg) { }
         |      ^~~~~~~~~~~~~~~~~~~~~
   kernel/sched/fair.c:11213:5: warning: no previous prototype for 'alloc_fair_sched_group' [-Wmissing-prototypes]
   11213 | int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
         |     ^~~~~~~~~~~~~~~~~~~~~~
   kernel/sched/fair.c:11218:6: warning: no previous prototype for 'online_fair_sched_group' [-Wmissing-prototypes]
   11218 | void online_fair_sched_group(struct task_group *tg) { }
         |      ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/sched/fair.c:11220:6: warning: no previous prototype for 'unregister_fair_sched_group' [-Wmissing-prototypes]
   11220 | void unregister_fair_sched_group(struct task_group *tg) { }
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +7257 kernel/sched/fair.c

  7252	
  7253	static unsigned long get_idle_hint_fair(struct task_struct *p)
  7254	{
  7255		unsigned int prev_cpu = task_cpu(p);
  7256	
> 7257		if (available_idle_cpu(prev_cpu) || sched_idle_cpu(prev_cpu))
  7258			return 1;
  7259	
  7260		return 0;
  7261	}
  7262	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 7346 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly.
  2021-04-01 11:59 ` [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly Parth Shah
  2021-04-01 12:53   ` kernel test robot
@ 2021-04-01 19:59   ` kernel test robot
  2021-04-01 19:59   ` kernel test robot
  2 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-04-01 19:59 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2726 bytes --]

Hi Parth,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on tip/sched/core]
[also build test ERROR on powerpc/next kvm/queue v5.12-rc5 next-20210401]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Parth-Shah/Define-a-new-apporach-to-determine-if-an-idle-vCPU-will-be-scheduled-instantly-or-not/20210401-200216
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 0a2b65c03e9b47493e1442bf9c84badc60d9bffb
config: x86_64-randconfig-a002-20210401 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 1c268a8ff4e90a85d0e634350b1104080614cf2b)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/1f6313245d9d724b76ea1d47c94b165c07fa9541
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Parth-Shah/Define-a-new-apporach-to-determine-if-an-idle-vCPU-will-be-scheduled-instantly-or-not/20210401-200216
        git checkout 1f6313245d9d724b76ea1d47c94b165c07fa9541
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> kernel/sched/fair.c:7257:38: error: implicit declaration of function 'sched_idle_cpu' [-Werror,-Wimplicit-function-declaration]
           if (available_idle_cpu(prev_cpu) || sched_idle_cpu(prev_cpu))
                                               ^
   kernel/sched/fair.c:7257:38: note: did you mean 'sched_idle_rq'?
   kernel/sched/fair.c:5481:12: note: 'sched_idle_rq' declared here
   static int sched_idle_rq(struct rq *rq)
              ^
   1 error generated.


vim +/sched_idle_cpu +7257 kernel/sched/fair.c

  7252	
  7253	static unsigned long get_idle_hint_fair(struct task_struct *p)
  7254	{
  7255		unsigned int prev_cpu = task_cpu(p);
  7256	
> 7257		if (available_idle_cpu(prev_cpu) || sched_idle_cpu(prev_cpu))
  7258			return 1;
  7259	
  7260		return 0;
  7261	}
  7262	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36629 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly.
  2021-04-01 11:59 ` [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly Parth Shah
  2021-04-01 12:53   ` kernel test robot
  2021-04-01 19:59   ` kernel test robot
@ 2021-04-01 19:59   ` kernel test robot
  2 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-04-01 19:59 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2726 bytes --]

Hi Parth,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on tip/sched/core]
[also build test ERROR on powerpc/next kvm/queue v5.12-rc5 next-20210401]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Parth-Shah/Define-a-new-apporach-to-determine-if-an-idle-vCPU-will-be-scheduled-instantly-or-not/20210401-200216
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 0a2b65c03e9b47493e1442bf9c84badc60d9bffb
config: x86_64-randconfig-r031-20210401 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 1c268a8ff4e90a85d0e634350b1104080614cf2b)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/1f6313245d9d724b76ea1d47c94b165c07fa9541
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Parth-Shah/Define-a-new-apporach-to-determine-if-an-idle-vCPU-will-be-scheduled-instantly-or-not/20210401-200216
        git checkout 1f6313245d9d724b76ea1d47c94b165c07fa9541
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> kernel/sched/fair.c:7257:38: error: implicit declaration of function 'sched_idle_cpu' [-Werror,-Wimplicit-function-declaration]
           if (available_idle_cpu(prev_cpu) || sched_idle_cpu(prev_cpu))
                                               ^
   kernel/sched/fair.c:7257:38: note: did you mean 'sched_idle_rq'?
   kernel/sched/fair.c:5481:12: note: 'sched_idle_rq' declared here
   static int sched_idle_rq(struct rq *rq)
              ^
   1 error generated.


vim +/sched_idle_cpu +7257 kernel/sched/fair.c

  7252	
  7253	static unsigned long get_idle_hint_fair(struct task_struct *p)
  7254	{
  7255		unsigned int prev_cpu = task_cpu(p);
  7256	
> 7257		if (available_idle_cpu(prev_cpu) || sched_idle_cpu(prev_cpu))
  7258			return 1;
  7259	
  7260		return 0;
  7261	}
  7262	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 40654 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-04-01 19:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-01 11:59 [RFC 0/2] Define a new apporach to determine if an idle vCPU will be scheduled instantly or not Parth Shah
2021-04-01 11:59 ` [RFC 1/2] KVM:PPC: Add new hcall to provide hint if a vcpu task will be scheduled instantly Parth Shah
2021-04-01 12:53   ` kernel test robot
2021-04-01 19:59   ` kernel test robot
2021-04-01 19:59   ` kernel test robot
2021-04-01 11:59 ` [RFC 2/2] sched: Use H_IDLE_HINT hcall to find if a vCPU can be wakeup target Parth Shah

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.