Hi,
I start up 4 L4Linux on intel core2quad platform. In jdb, I can see 4 vmlinuz on the task list (command 's' in jdb). Next, I run 4 benchmarks, one in each L4Linux, but the experiment result shows that the 4 benchmark are running on the same core. The kernel seems not scheduling them to different cpu cores.
I have enabled "Enable multi processor support" option in fiasco config menu and the jdb shows there are 4 cores:
*** Cut start *** -----------------------------------------------------------------------
CPU 0 [f000d2a0]: IRQ ENTRY CPU 1 [f0022451]: Maskable Interrupt CPU 2 [f0022451]: Maskable Interrupt CPU 3 [f0022451]: Maskable Interrupt jdb: g *** Cut end ***
But the running benchmarks are not showing on the task list(command 's' in jdb), is it normal? I remember in ARM L4Linux, the task list will show 'vmlinuz', 'sh', 'benchmark', ...,etc.
Best Regards, Chao-Jui
Hi,
On Mon Jun 10, 2013 at 23:05:53 +0800, Chao-Jui Chang wrote:
I start up 4 L4Linux on intel core2quad platform. In jdb, I can see 4 vmlinuz on the task list (command 's' in jdb). Next, I run 4 benchmarks, one in each L4Linux, but the experiment result shows that the 4 benchmark are running on the same core. The kernel seems not scheduling them to different cpu cores.
Yes, not on its own.
I have enabled "Enable multi processor support" option in fiasco config menu and the jdb shows there are 4 cores:
*** Cut start ***
CPU 0 [f000d2a0]: IRQ ENTRY CPU 1 [f0022451]: Maskable Interrupt CPU 2 [f0022451]: Maskable Interrupt CPU 3 [f0022451]: Maskable Interrupt
jdb: g *** Cut end ***
But the running benchmarks are not showing on the task list(command 's' in jdb), is it normal? I remember in ARM L4Linux, the task list will show 'vmlinuz', 'sh', 'benchmark', ...,etc.
Should be the same whether its x86 or arm, there's no difference in this regard.
For core placement, add scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8, cpumask), to the environment of L4Linux start call (also have a look at l4/conf/examples/x86-fb.cfg). E.g. to place on core 2 make cpumask a 4, and so on.
Adam
Hi Adam,
2013/6/12 Adam Lackorzynski adam@os.inf.tu-dresden.de
But the running benchmarks are not showing on the task list(command 's'
in
jdb), is it normal? I remember in ARM L4Linux, the task list will show 'vmlinuz', 'sh', 'benchmark', ...,etc.
Should be the same whether its x86 or arm, there's no difference in this regard.
I found a L4Linux option in
L4Linux configuration Debugging options [*] Register Linux program names in the kernel debugger Does this option provide the feature? I have enabled this option in the latest L4Linux 3.9 and built with L4 r56, but the name still not show in jdb for both x86 and ARM. If I remember correctly, in previous L4Linux 3.7 and L4re-snapshot-2013012910, it does the work.
For core placement, add
scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8, cpumask), to the environment of L4Linux start call (also have a look at l4/conf/examples/x86-fb.cfg). E.g. to place on core 2 make cpumask a 4, and so on.
Thanks for providing the information.
Is there any document about the parameter of the L4.Proto.Scheduler ? What 0x18, 0x08 mean for Scheduler?
Best regards, Chao-Jui
Hi Adam,
Sorry, I make a mistake. The program name can show in jdb task list now.
2013/6/12 Chao-Jui Chang ppc52776@gmail.com
2013/6/12 Adam Lackorzynski adam@os.inf.tu-dresden.de
But the running benchmarks are not showing on the task list(command 's'
in
jdb), is it normal? I remember in ARM L4Linux, the task list will show 'vmlinuz', 'sh', 'benchmark', ...,etc.
Should be the same whether its x86 or arm, there's no difference in this regard.
I found a L4Linux option in
L4Linux configuration Debugging options [*] Register Linux program names in the kernel debugger Does this option provide the feature? I have enabled this option in the latest L4Linux 3.9 and built with L4 r56, but the name still not show in jdb for both x86 and ARM. If I remember correctly, in previous L4Linux 3.7 and L4re-snapshot-2013012910, it does the work.
For core placement, add
scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8, cpumask), to the environment of L4Linux start call (also have a look at l4/conf/examples/x86-fb.cfg). E.g. to place on core 2 make cpumask a 4, and so on.
Thanks for providing the information.
Is there any document about the parameter of the L4.Proto.Scheduler ? What 0x18, 0x08 mean for Scheduler?
Best regards, Chao-Jui
Hi Adam,
I have added the scheduler option to the l4linux config like this:
loader:start( { caps = { log = L4.Env.log:m("rws"), fb = mag_svc:create(L4.Proto.Goos, "g=640x480"); -- vbus = vbus_l4linux; shmns = shmns12:mode("rw"); }, l4re_dbg = L4.Dbg.Warn, log = { "l4linux", "white" }, scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8, 0x2), }, "rom/" .. lxname .. " mem=64M console=tty0 l4x_rd=rom/ramdisk-" .. L4.Info.arch() .. ".rd root=1:0 ramdisk_size=4000 l4shmnet.add=shmns,macpart=2 ip=192.168.12.2:::255.255.255.0::eth0:");
There are 4 L4Linux in this config file with last parameter is 0x1, 0x2, 0x4, 0x8. However, the experiment result still shows that they use only one core. Is there anything wrong with my config?
2013/6/12 Chao-Jui Chang ppc52776@gmail.com
For core placement, add
scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8, cpumask), to the environment of L4Linux start call (also have a look at l4/conf/examples/x86-fb.cfg). E.g. to place on core 2 make cpumask a 4, and so on.
Thanks for providing the information.
Is there any document about the parameter of the L4.Proto.Scheduler ? What 0x18, 0x08 mean for Scheduler?
Best regards, Chao-Jui
Hi,
On Wed Jun 12, 2013 at 20:15:18 +0800, Chao-Jui Chang wrote:
Hi Adam, I have added the scheduler option to the l4linux config like this:
loader:start( { caps = { log = L4.Env.log:m("rws"), fb = mag_svc:create(L4.Proto.Goos, "g=640x480"); -- vbus = vbus_l4linux; shmns = shmns12:mode("rw"); }, l4re_dbg = L4.Dbg.Warn, log = { "l4linux", "white" }, scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8, 0x2), }, "rom/" .. lxname .. " mem=64M console=tty0 l4x_rd=rom/ramdisk-" .. L4.Info.arch() .. ".rd root=1:0 ramdisk_size=4000 l4shmnet.add=shmns,macpart=2 ip=192.168.12.2:::255.255.255.0::eth0:");
There are 4 L4Linux in this config file with last parameter is 0x1, 0x2, 0x4, 0x8. However, the experiment result still shows that they use only one core. Is there anything wrong with my config?
This looks ok, and it also works in my own setting. When you check with lp in jdb, the cpu column has all 0 or other numbers (except the kernel thread on each CPU)?
2013/6/12 Chao-Jui Chang ppc52776@gmail.com
For core placement, add
scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8, cpumask), to the environment of L4Linux start call (also have a look at l4/conf/examples/x86-fb.cfg). E.g. to place on core 2 make cpumask a 4, and so on.
Thanks for providing the information.
Is there any document about the parameter of the L4.Proto.Scheduler ? What 0x18, 0x08 mean for Scheduler?
Those describe the allowed priority range, 0x18 is the upper prio and 0x8 the base prio.
Adam
l4-hackers@os.inf.tu-dresden.de