From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Task Priorities on Ubuntu Linux
Date: Wed, 9 Dec 2009 16:10:40 +0100
Date: 2009-12-09T16:10:30+01:00 [thread overview]
Message-ID: <vie840mx6358$.1uwpgtoez404o.dlg@40tude.net> (raw)
In-Reply-To: f38162c7-8a5b-49c4-b6a8-010f0d64e290@9g2000yqa.googlegroups.com
On Wed, 9 Dec 2009 06:34:45 -0800 (PST), singo wrote:
> When I use different task priorities I get an - at least for me -
> unexpected behavior... I have defined 10 tasks with different
> priority. When I run my program, I expect only one task per processor
> (this means four on my quad-core machine) to run. However,
> unexpectedly all 10 tasks are run on my machine.
>
> Is this because the tasks are mapped on the underlying OS (here
> Linux), which then instead schedules the tasks of different priority
> with some kind of time-slicing (round-robin) approach? I would
> appreciate some clarification in this matter.
No, there could be a different reason from that. You perform I/O, which
leads to task switching. Once I/O is initiated the OS completes it anyway
(if the kernel is non-preemptive for your tasks). This is what you
observed. I guess.
Try this instead:
pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
pragma Queuing_Policy (Priority_Queuing);
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Real_Time; use Ada.Real_Time;
procedure TaskPriorities is
task type T (Id: Integer) is
pragma Priority (Id);
end;
task body T is
I : Integer;
begin
Put (Integer'Image (Id));
for Index in Integer'Range loop
I := Index;
end loop;
end T;
Task10 : T (11);
Task9 : T (12);
Task8 : T (13);
Task7 : T (14);
Task6 : T (15);
Task5 : T (16);
Task4 : T (17);
Task3 : T (18);
Task2 : T (19);
Task1 : T (20);
begin
null;
end TaskPriorities;
It should print 20 19 (on two cores), then you would like to reset your
computer, if under Windows, because there non-preemptive priorities are the
real-time ones. They override pretty much everything, unless tasks end you
will have to reboot.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2009-12-09 15:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-09 14:34 Task Priorities on Ubuntu Linux singo
2009-12-09 15:10 ` Dmitry A. Kazakov [this message]
2009-12-09 21:20 ` sjw
2009-12-10 8:27 ` singo
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox