[LITMUS^RT] How can I set total number of cores on G-EDF algorithm

Luo, Zheng luozheng at wustl.edu
Mon Dec 23 14:15:20 CET 2013


On Dec 23, 2013, at 2:14, Davide Compagnin <dcompagn at gmail.com<mailto:dcompagn at gmail.com>> wrote:


Hi Luo, a possibility is to change the max number of processors in the kernel configuration file.

Il 22/dic/2013 18:59 "Luo, Zheng" <luozheng at wustl.edu<mailto:luozheng at wustl.edu>> ha scritto:
Hi everyone,

I want to use arbitrary number of cores to do run the global EDF. I tried several method, however none of them works for me. I think I truly need some help now.

1***
First, I tried the C-EDF, I think I can group the cores that will be used in the experiment to a cluster and the unused cores to a cluster. However, I read the documentation on the website, it showed how to use the L1,L2,L3 and ALL to do the division. I choose the parameter ALL, and run the experiment by choosing the ./setsched C_EDF. In the base_mt_task.c , I added:

CALL( init_rt_thread() );
int cluster = 0;
int cluster_sz = 4;
be_migrate_to_cluster(cluster, cluster_sz);
param.cpu   = cluster_to_first_cpu(cluster, cluster_sz);
CALL( set_rt_task_param(gettid(), &param) );

I tried different number of the cluster and cluster_sz, when I used the different number, I did the  method said in the website: C-EDF plugin must be reloaded (for example by switching to the Linux plugin and back to C-EDF). When I see the cpu utilization by run top -1, all 8 cores are being used. I get very confused here. I don't know where I did wrong. I send the screenshot as an attachment. I also send the base_mt_task.c as an attachment too.

2***
Second, I tried to use the G-EDF by disabling the cores in the linux system. I used:
sudo echo "0" > /sys/devices/system/node/node0/cpu1/online
sudo echo "0" > /sys/devices/system/node/node0/cpu3/online
Those command did disable the CPU cores, however the G-EDF seems not working correctly. The execution order of the rt_thread, seems not according to the G-EDF. Some of the late deadline thread, even finished early. I am really confused here.

3***
Third, I used the Native Linux user-space command to set the number of cores, by using
cpu_set_t mask;
CPU_ZERO(&mask);
for (unsigned i = first_core; i <= last_core; ++i) {
CPU_SET(i, &mask);
}
sched_setaffinity( 0 , sizeof(mask), &mask);
Then I run the experiment, and I will get same result as #1 method, it seems that G-EDF ignored the CPU mask setting.

I tired those three method, however none of them worked. Or is there any better idea to specify the number of online cores to run the experiment? I think I truly need some help now. Thank you very much. Looking forward to your reply.


Zheng Luo

_______________________________________________
litmus-dev mailing list
litmus-dev at lists.litmus-rt.org<mailto:litmus-dev at lists.litmus-rt.org>
https://lists.litmus-rt.org/listinfo/litmus-dev

_______________________________________________
litmus-dev mailing list
litmus-dev at lists.litmus-rt.org<mailto:litmus-dev at lists.litmus-rt.org>
https://lists.litmus-rt.org/listinfo/litmus-dev



Hello Davide,

Thank you very much for the reply. That is one of the possibility. However, I think change the max number of processors in the kernel takes a lot of time. Because when I run the experiment, I will change the number of the cores very often. After change the kernel, it takes some time to recompile it and reinstall it. Is there any other way of not recompile and reinstall the kernel ?


Zheng Luo


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20131223/ab81acda/attachment.html>


More information about the litmus-dev mailing list