Thread (3 messages) 3 messages, 2 authors, 2016-09-14

Re: [PATCH] fs/dcache: resched/chill only if we make no progress

From: Thomas Gleixner <hidden>
Date: 2016-09-10 06:19:40
Also in: lkml

On Thu, 8 Sep 2016, Sebastian Andrzej Siewior wrote:
+		if (parent == dentry) {
+			/* the task with the highest priority won't schedule */
+			r = cond_resched();
+			if (!r && (rt_task(current) || dl_task(current)))
That's wrong because a non RT task will just spin until its time slice is
up. Wasted cycles for nothing.

Ideally we make spinning conditional on 

    !on_cpu(dentry->lock->owner)

That would avoid going to sleep if the owner runs on another cpu. We have
no mechanism for that, but I think it'd be worth to think about one.
+				cpu_chill();
+		} else
+			dentry = parent;
Missing braces

Thanks,

	tglx
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help