|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 2/5] build: Hook the schedulers into Kconfig
Jan Beulich writes:
>>>> On 08.01.16 at 22:22, <jonathan.creekmore@xxxxxxxxx> wrote:
>> --- a/xen/common/Kconfig
>> +++ b/xen/common/Kconfig
>> @@ -51,4 +51,71 @@ config KEXEC
>>
>> If unsure, say Y.
>>
>> +# Enable schedulers
>> +menu "Schedulers"
>> + visible if EXPERT = "y"
>
> Does "visible if EXPERT" not suffice here?
No, because EXPERT is a string and not a boolean. It has to be a string
since it is pulling in a string from the environment to set its value.
>
>> +config SCHED_CREDIT
>> + bool "Credit scheduler support"
>> + default y
>
> I continue to think that not making the primary scheduler configurable
> would be the better solution to the problems resulting from possibly
> all of them getting turned off.
Except that is completely contrary to my goal with this patchset (being
able to compile in just the scheduler that I want to use). Yes, at the
moment, credit is the only non-experimental scheduler and will likely be
the one we choose. However, in the future, when credit2 and possibly
others are non-experimental, we may choose one of the other schedulers
and do not want to carry along credit in our build just because it is
the primary scheduler.
>
>> +config SCHED_CREDIT2
>> + bool "Credit2 scheduler support (EXPERIMENTAL)"
>> + default y
>> + ---help---
>> + The credit2 scheduler is a general purpose scheduler that is
>> + optimized for lower latency and higher VM density.
>> +
>> + If unsure, say Y.
>> +
>> +config SCHED_RTDS
>> + bool "RTDS scheduler support (EXPERIMENTAL)"
>> + default y
>> + ---help---
>> + The RTDS scheduler is a soft and firm real-time scheduler for
>> + multicore, targeted for embedded, automotive, graphics and gaming
>> + in the cloud, and general low-latency workloads.
>> +
>> + If unsure, say N.
>> +
>> +config SCHED_ARINC653
>> + bool "ARINC653 scheduler support (EXPERIMENTAL)"
>> + default y
>> + ---help---
>> + The ARINC653 scheduler is a hard real-time scheduler for single
>> + cores, targeted for avionics, drones, and medical devices.
>> +
>> + If unsure, say N.
>> +
>> +choice
>> + prompt "Default Scheduler?"
>> + default SCHED_CREDIT_DEFAULT if SCHED_CREDIT
>> + default SCHED_CREDIT2_DEFAULT if SCHED_CREDIT2
>> + default SCHED_RTDS_DEFAULT if SCHED_RTDS
>> + default SCHED_ARINC653_DEFAULT if SCHED_ARINC653
>> +
>> + config SCHED_CREDIT_DEFAULT
>> + bool "Credit Scheduler" if SCHED_CREDIT
>> + config SCHED_CREDIT2_DEFAULT
>> + bool "Credit2 Scheduler" if SCHED_CREDIT2
>> + config SCHED_RTDS_DEFAULT
>> + bool "RT Scheduler" if SCHED_RTDS
>> + config SCHED_ARINC653_DEFAULT
>> + bool "ARINC653 Scheduler" if SCHED_ARINC653
>> +endchoice
>> +
>> +config SCHED_DEFAULT
>> + string
>> + default "credit" if SCHED_CREDIT_DEFAULT
>> + default "credit2" if SCHED_CREDIT2_DEFAULT
>> + default "rtds" if SCHED_RTDS_DEFAULT
>> + default "arinc653" if SCHED_ARINC653_DEFAULT
>> + default "credit"
>
> What use is this last line?
>
When the scheduler menu is not visible, the choice selection does not
cause a scheduler to be chosen. The last line forces credit to be the
default if none of the _DEFAULT values are selected. It is purely an
artifact of introducing the visibility option on the menu. It could be
moved into the defaults section for the choice like this:
+ default SCHED_CREDIT_DEFAULT if SCHED_CREDIT
+ default SCHED_CREDIT2_DEFAULT if SCHED_CREDIT2
+ default SCHED_RTDS_DEFAULT if SCHED_RTDS
+ default SCHED_ARINC653_DEFAULT if SCHED_ARINC653
+ default SCHED_CREDIT_DEFAULT
>> --- a/xen/include/xen/sched.h
>> +++ b/xen/include/xen/sched.h
>> @@ -850,8 +850,13 @@ static inline bool_t is_vcpu_online(const struct vcpu
>> *v)
>> return !test_bit(_VPF_down, &v->pause_flags);
>> }
>>
>> +#ifdef CONFIG_SCHED_CREDIT
>> void set_vcpu_migration_delay(unsigned int delay);
>> unsigned int get_vcpu_migration_delay(void);
>> +#else
>> +static inline void set_vcpu_migration_delay(unsigned int delay) { }
>> +static inline unsigned int get_vcpu_migration_delay(void) { return 0; }
>> +#endif
>
> I don't think these are appropriate: The respective sysctl sub-ops
> would probably better indicate failure to the caller.
I can make that change if you want me to. As it stands now, the existing
sysctl sub-ops are probably not doing the right thing since they are
setting and getting this migration delay in the credit scheduler
regardless of which scheduler is actually in use.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |