lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <454c71700907240357l61f5c4fajaca73db0fba7db8@mail.gmail.com>
Date:	Fri, 24 Jul 2009 18:57:35 +0800
From:	sen wang <wangsen.linux@...il.com>
To:	mingo@...e.hu, akpm@...ux-foundation.org, kernel@...ivas.org,
	npiggin@...e.de, arjan@...radead.org,
	linux-arm-kernel@...ts.arm.linux.org.uk,
	linux-kernel@...r.kernel.org
Subject: report a bug about sched_rt

I find something is wrong about sched_rt.

 when I am debugging my system with rt_bandwidth_enabled, there is a
running realtime FIFO task in the sched_rt running queue and
 the fair running queue is empty.  I found the idle task will be
scheduled up when the running task still lie in the  sched_rt running
queue!

this will happen when rt runqueue passed it's rt_bandwidth_enabled
runtime,then the scheduler choose the idle task instead of realtime
FIFO task.

the reason lie in: when scheduler try to pick up a realtime FIFO task,
it will check if rt_throttled is enabled,
if so, it'll return and try fair queue but it is empty, then it come
to the sched_idle class.

I don't think it reasonable, we should give the realtime FIFO task the
chance, even when rt runqueue passed it's runtime.
because it is cpu's free time.

To fix it ,and keep rt_bandwidth works as before, I think
pick_next_task_rt() is the best space,

the pick_next_task_rt should check another condiction: rq->cfs.nr_running.

So,I modify pick_next_task_rt() like this and debug it on my omap3430
zoom2 board, it works!


static struct task_struct *pick_next_task_rt(struct rq *rq)
{
	struct sched_rt_entity *rt_se;
	struct task_struct *p;
	struct rt_rq *rt_rq;

  ...

	if (rt_rq_throttled(rt_rq)&& rq->cfs.nr_running)
		return NULL;

  ...
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ