ALT Linux kernel packages development
 help / color / mirror / Atom feed
* [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
@ 2022-05-06 14:44 Vitaly Chikunov
  2022-05-06 14:53 ` Vladimir D. Seleznev
  0 siblings, 1 reply; 10+ messages in thread
From: Vitaly Chikunov @ 2022-05-06 14:44 UTC (permalink / raw)
  To: ALT Linux kernel packages development

Hi,

Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
В Федоре и Убунту она отключена. Вместо неё будет CONFIG_PREEMPT_VOLUNTARY=y.

Таким образом можно будет сделать в std-def и un-def одинаковые конфиги, но
разную кодовую базу.



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-06 14:44 [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y Vitaly Chikunov
@ 2022-05-06 14:53 ` Vladimir D. Seleznev
  2022-05-06 14:54   ` Vitaly Chikunov
  0 siblings, 1 reply; 10+ messages in thread
From: Vladimir D. Seleznev @ 2022-05-06 14:53 UTC (permalink / raw)
  To: ALT Linux kernel packages development

On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> Hi,

Hi!

> Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y

Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
выключен.

> В Федоре и Убунту она отключена. Вместо неё будет CONFIG_PREEMPT_VOLUNTARY=y.
> 
> Таким образом можно будет сделать в std-def и un-def одинаковые конфиги, но
> разную кодовую базу.

-- 
   WBR,
   Vladimir D. Seleznev


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-06 14:53 ` Vladimir D. Seleznev
@ 2022-05-06 14:54   ` Vitaly Chikunov
  2022-05-06 14:59     ` Dmitry V. Levin
  2022-05-06 15:39     ` Andrey Savchenko
  0 siblings, 2 replies; 10+ messages in thread
From: Vitaly Chikunov @ 2022-05-06 14:54 UTC (permalink / raw)
  To: ALT Linux kernel packages development

On Fri, May 06, 2022 at 05:53:06PM +0300, Vladimir D. Seleznev wrote:
> On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> > Hi,
> 
> Hi!
> 
> > Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
> 
> Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
> выключен.

Да это и имелось ввиду. Спасибо за поправку.

> 
> > В Федоре и Убунту она отключена. Вместо неё будет CONFIG_PREEMPT_VOLUNTARY=y.
> > 
> > Таким образом можно будет сделать в std-def и un-def одинаковые конфиги, но
> > разную кодовую базу.
> 
> -- 
>    WBR,
>    Vladimir D. Seleznev
> _______________________________________________
> devel-kernel mailing list
> devel-kernel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-kernel


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-06 14:54   ` Vitaly Chikunov
@ 2022-05-06 14:59     ` Dmitry V. Levin
  2022-05-06 15:31       ` Vitaly Chikunov
  2022-05-06 15:39     ` Andrey Savchenko
  1 sibling, 1 reply; 10+ messages in thread
From: Dmitry V. Levin @ 2022-05-06 14:59 UTC (permalink / raw)
  To: devel-kernel

On Fri, May 06, 2022 at 05:54:49PM +0300, Vitaly Chikunov wrote:
> On Fri, May 06, 2022 at 05:53:06PM +0300, Vladimir D. Seleznev wrote:
> > On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> > 
> > > Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
> > 
> > Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
> > выключен.
> 
> Да это и имелось ввиду. Спасибо за поправку.

Главное - не выключать CONFIG_PREEMPT_DYNAMIC.


-- 
ldv


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-06 14:59     ` Dmitry V. Levin
@ 2022-05-06 15:31       ` Vitaly Chikunov
  2022-05-06 18:49         ` Dmitry V. Levin
  0 siblings, 1 reply; 10+ messages in thread
From: Vitaly Chikunov @ 2022-05-06 15:31 UTC (permalink / raw)
  To: ALT Linux kernel packages development

On Fri, May 06, 2022 at 05:59:29PM +0300, Dmitry V. Levin wrote:
> On Fri, May 06, 2022 at 05:54:49PM +0300, Vitaly Chikunov wrote:
> > On Fri, May 06, 2022 at 05:53:06PM +0300, Vladimir D. Seleznev wrote:
> > > On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> > > 
> > > > Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
> > > 
> > > Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
> > > выключен.
> > 
> > Да это и имелось ввиду. Спасибо за поправку.
> 
> Главное - не выключать CONFIG_PREEMPT_DYNAMIC.

Это другой вариант о котором я не думал, но может стоит сделать и так.

На сколько я понял, по умолчанию эта опция включает PREEMPT_NONE, а не
PREEMPT_VOLUNTARY. То есть умолчание хуже чем CONFIG_PREEMPT_VOLUNTARY=y.
 
Опять же в Федоре и Убунте она не увклчюена, а там одно ядро и для
десктопа, и для сервера. AFAIK


> 
> 
> -- 
> ldv
> _______________________________________________
> devel-kernel mailing list
> devel-kernel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-kernel


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-06 14:54   ` Vitaly Chikunov
  2022-05-06 14:59     ` Dmitry V. Levin
@ 2022-05-06 15:39     ` Andrey Savchenko
  1 sibling, 0 replies; 10+ messages in thread
From: Andrey Savchenko @ 2022-05-06 15:39 UTC (permalink / raw)
  To: ALT Linux kernel packages development

[-- Attachment #1: Type: text/plain, Size: 1630 bytes --]

On Fri, 6 May 2022 17:54:49 +0300 Vitaly Chikunov wrote:
> On Fri, May 06, 2022 at 05:53:06PM +0300, Vladimir D. Seleznev wrote:
> > On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> > > Hi,
> > 
> > Hi!
> > 
> > > Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
> > 
> > Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
> > выключен.
> 
> Да это и имелось ввиду. Спасибо за поправку.

По моему опыту на слабом или перегруженном железе CONFIG_PREEMPT=y
ведёт себя лучше, чем  CONFIG_PREEMPT_VOLUNTARY=y. Не хотелось бы
лишать пользователей такой возможности.

> > 
> > > В Федоре и Убунту она отключена. Вместо неё будет CONFIG_PREEMPT_VOLUNTARY=y.
> > > 
> > > Таким образом можно будет сделать в std-def и un-def одинаковые конфиги, но
> > > разную кодовую базу.
> > 
> > -- 
> >    WBR,
> >    Vladimir D. Seleznev
> > _______________________________________________
> > devel-kernel mailing list
> > devel-kernel@lists.altlinux.org
> > https://lists.altlinux.org/mailman/listinfo/devel-kernel
> _______________________________________________
> devel-kernel mailing list
> devel-kernel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-kernel

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-06 15:31       ` Vitaly Chikunov
@ 2022-05-06 18:49         ` Dmitry V. Levin
  2022-05-06 21:16           ` Vitaly Chikunov
  0 siblings, 1 reply; 10+ messages in thread
From: Dmitry V. Levin @ 2022-05-06 18:49 UTC (permalink / raw)
  To: ALT Linux kernel packages development

On Fri, May 06, 2022 at 06:31:10PM +0300, Vitaly Chikunov wrote:
> On Fri, May 06, 2022 at 05:59:29PM +0300, Dmitry V. Levin wrote:
> > On Fri, May 06, 2022 at 05:54:49PM +0300, Vitaly Chikunov wrote:
> > > On Fri, May 06, 2022 at 05:53:06PM +0300, Vladimir D. Seleznev wrote:
> > > > On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> > > > 
> > > > > Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
> > > > 
> > > > Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
> > > > выключен.
> > > 
> > > Да это и имелось ввиду. Спасибо за поправку.
> > 
> > Главное - не выключать CONFIG_PREEMPT_DYNAMIC.
> 
> Это другой вариант о котором я не думал, но может стоит сделать и так.
> 
> На сколько я понял, по умолчанию эта опция включает PREEMPT_NONE, а не
> PREEMPT_VOLUNTARY. То есть умолчание хуже чем CONFIG_PREEMPT_VOLUNTARY=y.

Давайте почитаем код вслух:

config PREEMPT_NONE
        bool "No Forced Preemption (Server)"
        select PREEMPT_NONE_BUILD if !PREEMPT_DYNAMIC

config PREEMPT_VOLUNTARY
        bool "Voluntary Kernel Preemption (Desktop)"
        depends on !ARCH_NO_PREEMPT
        select PREEMPT_VOLUNTARY_BUILD if !PREEMPT_DYNAMIC

config PREEMPT
        bool "Preemptible Kernel (Low-Latency Desktop)"
        depends on !ARCH_NO_PREEMPT
        select PREEMPT_BUILD

config PREEMPT_DYNAMIC
        bool "Preemption behaviour defined on boot"
        depends on HAVE_PREEMPT_DYNAMIC && !PREEMPT_RT
        select JUMP_LABEL if HAVE_PREEMPT_DYNAMIC_KEY
        select PREEMPT_BUILD
        default y if HAVE_PREEMPT_DYNAMIC_CALL

static void __init preempt_dynamic_init(void)
{
        if (preempt_dynamic_mode == preempt_dynamic_undefined) {
                if (IS_ENABLED(CONFIG_PREEMPT_NONE)) {
                        sched_dynamic_update(preempt_dynamic_none);
                } else if (IS_ENABLED(CONFIG_PREEMPT_VOLUNTARY)) {
                        sched_dynamic_update(preempt_dynamic_voluntary);
                } else {
                        /* Default static call setting, nothing to do */
                        WARN_ON_ONCE(!IS_ENABLED(CONFIG_PREEMPT));
                        preempt_dynamic_mode = preempt_dynamic_full;
                        pr_info("Dynamic Preempt: full\n");
                }
        }
}

Получается, что PREEMPT_DYNAMIC по сути включает CONFIG_PREEMPT,
что соответствует preempt=full.

Похоже, что HAVE_PREEMPT_DYNAMIC_CALL включено по умолчанию только на x86*.


-- 
ldv


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-06 18:49         ` Dmitry V. Levin
@ 2022-05-06 21:16           ` Vitaly Chikunov
  2022-05-07  0:49             ` Vitaly Chikunov
  0 siblings, 1 reply; 10+ messages in thread
From: Vitaly Chikunov @ 2022-05-06 21:16 UTC (permalink / raw)
  To: ALT Linux kernel packages development

On Fri, May 06, 2022 at 09:49:15PM +0300, Dmitry V. Levin wrote:
> On Fri, May 06, 2022 at 06:31:10PM +0300, Vitaly Chikunov wrote:
> > On Fri, May 06, 2022 at 05:59:29PM +0300, Dmitry V. Levin wrote:
> > > On Fri, May 06, 2022 at 05:54:49PM +0300, Vitaly Chikunov wrote:
> > > > On Fri, May 06, 2022 at 05:53:06PM +0300, Vladimir D. Seleznev wrote:
> > > > > On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> > > > > 
> > > > > > Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
> > > > > 
> > > > > Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
> > > > > выключен.
> > > > 
> > > > Да это и имелось ввиду. Спасибо за поправку.
> > > 
> > > Главное - не выключать CONFIG_PREEMPT_DYNAMIC.
> > 
> > Это другой вариант о котором я не думал, но может стоит сделать и так.
> > 
> > На сколько я понял, по умолчанию эта опция включает PREEMPT_NONE, а не
> > PREEMPT_VOLUNTARY. То есть умолчание хуже чем CONFIG_PREEMPT_VOLUNTARY=y.
> 
> Давайте почитаем код вслух:

Я это читал - но понял так, что он выбирает из тех что включены, начиная с
NONE. Если не включать NONE, то тогда остается выбор только между VOLUNTARY и
PREEMPT. Хотя наверное это хороший выбор.

> 
> config PREEMPT_NONE
>         bool "No Forced Preemption (Server)"
>         select PREEMPT_NONE_BUILD if !PREEMPT_DYNAMIC
> 
> config PREEMPT_VOLUNTARY
>         bool "Voluntary Kernel Preemption (Desktop)"
>         depends on !ARCH_NO_PREEMPT
>         select PREEMPT_VOLUNTARY_BUILD if !PREEMPT_DYNAMIC
> 
> config PREEMPT
>         bool "Preemptible Kernel (Low-Latency Desktop)"
>         depends on !ARCH_NO_PREEMPT
>         select PREEMPT_BUILD
> 
> config PREEMPT_DYNAMIC
>         bool "Preemption behaviour defined on boot"
>         depends on HAVE_PREEMPT_DYNAMIC && !PREEMPT_RT
>         select JUMP_LABEL if HAVE_PREEMPT_DYNAMIC_KEY
>         select PREEMPT_BUILD
>         default y if HAVE_PREEMPT_DYNAMIC_CALL
> 
> static void __init preempt_dynamic_init(void)
> {
>         if (preempt_dynamic_mode == preempt_dynamic_undefined) {
>                 if (IS_ENABLED(CONFIG_PREEMPT_NONE)) {
>                         sched_dynamic_update(preempt_dynamic_none);
>                 } else if (IS_ENABLED(CONFIG_PREEMPT_VOLUNTARY)) {
>                         sched_dynamic_update(preempt_dynamic_voluntary);
>                 } else {
>                         /* Default static call setting, nothing to do */
>                         WARN_ON_ONCE(!IS_ENABLED(CONFIG_PREEMPT));
>                         preempt_dynamic_mode = preempt_dynamic_full;
>                         pr_info("Dynamic Preempt: full\n");
>                 }
>         }
> }
> 
> Получается, что PREEMPT_DYNAMIC по сути включает CONFIG_PREEMPT,
> что соответствует preempt=full.

Не понимаю откуда такой вывод.

ps. Кстати, с точки зрения авторов PREEMPT_NONE - это "server", а
PREEMPT_VOLUNTARY "desktop":

  #if defined(CONFIG_PREEMPT_NONE)
		     "server",
  #elif defined(CONFIG_PREEMPT_VOLUNTARY)
		     "desktop",
  #elif defined(CONFIG_PREEMPT)
		     "preempt",
  #elif defined(CONFIG_PREEMPT_RT)
		     "preempt_rt",
  #else
		     "unknown",
  #endif

> 
> Похоже, что HAVE_PREEMPT_DYNAMIC_CALL включено по умолчанию только на x86*.
> 
> 
> -- 
> ldv
> _______________________________________________
> devel-kernel mailing list
> devel-kernel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-kernel


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-06 21:16           ` Vitaly Chikunov
@ 2022-05-07  0:49             ` Vitaly Chikunov
  2022-05-07  7:25               ` Dmitry V. Levin
  0 siblings, 1 reply; 10+ messages in thread
From: Vitaly Chikunov @ 2022-05-07  0:49 UTC (permalink / raw)
  To: ALT Linux kernel packages development

On Sat, May 07, 2022 at 12:16:19AM +0300, Vitaly Chikunov wrote:
> On Fri, May 06, 2022 at 09:49:15PM +0300, Dmitry V. Levin wrote:
> > On Fri, May 06, 2022 at 06:31:10PM +0300, Vitaly Chikunov wrote:
> > > On Fri, May 06, 2022 at 05:59:29PM +0300, Dmitry V. Levin wrote:
> > > > On Fri, May 06, 2022 at 05:54:49PM +0300, Vitaly Chikunov wrote:
> > > > > On Fri, May 06, 2022 at 05:53:06PM +0300, Vladimir D. Seleznev wrote:
> > > > > > On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> > > > > > 
> > > > > > > Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
> > > > > > 
> > > > > > Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
> > > > > > выключен.
> > > > > 
> > > > > Да это и имелось ввиду. Спасибо за поправку.
> > > > 
> > > > Главное - не выключать CONFIG_PREEMPT_DYNAMIC.
> > > 
> > > Это другой вариант о котором я не думал, но может стоит сделать и так.
> > > 
> > > На сколько я понял, по умолчанию эта опция включает PREEMPT_NONE, а не
> > > PREEMPT_VOLUNTARY. То есть умолчание хуже чем CONFIG_PREEMPT_VOLUNTARY=y.
> > 
> > Давайте почитаем код вслух:
> 
> Я это читал - но понял так, что он выбирает из тех что включены, начиная с
> NONE. Если не включать NONE, то тогда остается выбор только между VOLUNTARY и
> PREEMPT. Хотя наверное это хороший выбор.
> 
> > 
> > config PREEMPT_NONE
> >         bool "No Forced Preemption (Server)"
> >         select PREEMPT_NONE_BUILD if !PREEMPT_DYNAMIC
> > 
> > config PREEMPT_VOLUNTARY
> >         bool "Voluntary Kernel Preemption (Desktop)"
> >         depends on !ARCH_NO_PREEMPT
> >         select PREEMPT_VOLUNTARY_BUILD if !PREEMPT_DYNAMIC
> > 
> > config PREEMPT
> >         bool "Preemptible Kernel (Low-Latency Desktop)"
> >         depends on !ARCH_NO_PREEMPT
> >         select PREEMPT_BUILD

Эти пункты внутри

  choice
	  prompt "Preemption Model"
	  default PREEMPT_NONE

То есть из них можно выбрать только 1. Судя по коду ниже это и будет
preempt mode по умолчанию. Но,

> > 
> > config PREEMPT_DYNAMIC
> >         bool "Preemption behaviour defined on boot"
> >         depends on HAVE_PREEMPT_DYNAMIC && !PREEMPT_RT
> >         select JUMP_LABEL if HAVE_PREEMPT_DYNAMIC_KEY
> >         select PREEMPT_BUILD
> >         default y if HAVE_PREEMPT_DYNAMIC_CALL

Это было в 5.17, а в 5.15:

  Symbol: PREEMPT_DYNAMIC [=n]                                                      
  Type  : bool                                                                      
  Defined at kernel/Kconfig.preempt:85                                              
  Selected by [n]:                                                                  
    - PREEMPT [=n] && <choice> && !ARCH_NO_PREEMPT [=n] && HAVE_PREEMPT_DYNAMIC [=y]

То есть для него нужен PREEMPT=y. А значит, для старых ядер, PREEMPT_DYNAMIC
можно включить только при выбранном PREEMPT и умолчанием всегда будет
PREEMPT.



> > 
> > static void __init preempt_dynamic_init(void)
> > {
> >         if (preempt_dynamic_mode == preempt_dynamic_undefined) {
> >                 if (IS_ENABLED(CONFIG_PREEMPT_NONE)) {
> >                         sched_dynamic_update(preempt_dynamic_none);
> >                 } else if (IS_ENABLED(CONFIG_PREEMPT_VOLUNTARY)) {
> >                         sched_dynamic_update(preempt_dynamic_voluntary);
> >                 } else {
> >                         /* Default static call setting, nothing to do */
> >                         WARN_ON_ONCE(!IS_ENABLED(CONFIG_PREEMPT));
> >                         preempt_dynamic_mode = preempt_dynamic_full;
> >                         pr_info("Dynamic Preempt: full\n");
> >                 }
> >         }
> > }
> > 
> > Получается, что PREEMPT_DYNAMIC по сути включает CONFIG_PREEMPT,
> > что соответствует preempt=full.
> 
> Не понимаю откуда такой вывод.
> 
> > 
> > Похоже, что HAVE_PREEMPT_DYNAMIC_CALL включено по умолчанию только на x86*.
> > 
> > 
> > -- 
> > ldv
> > _______________________________________________
> > devel-kernel mailing list
> > devel-kernel@lists.altlinux.org
> > https://lists.altlinux.org/mailman/listinfo/devel-kernel


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y
  2022-05-07  0:49             ` Vitaly Chikunov
@ 2022-05-07  7:25               ` Dmitry V. Levin
  0 siblings, 0 replies; 10+ messages in thread
From: Dmitry V. Levin @ 2022-05-07  7:25 UTC (permalink / raw)
  To: devel-kernel

On Sat, May 07, 2022 at 03:49:04AM +0300, Vitaly Chikunov wrote:
> On Sat, May 07, 2022 at 12:16:19AM +0300, Vitaly Chikunov wrote:
> > On Fri, May 06, 2022 at 09:49:15PM +0300, Dmitry V. Levin wrote:
> > > On Fri, May 06, 2022 at 06:31:10PM +0300, Vitaly Chikunov wrote:
> > > > On Fri, May 06, 2022 at 05:59:29PM +0300, Dmitry V. Levin wrote:
> > > > > On Fri, May 06, 2022 at 05:54:49PM +0300, Vitaly Chikunov wrote:
> > > > > > On Fri, May 06, 2022 at 05:53:06PM +0300, Vladimir D. Seleznev wrote:
> > > > > > > On Fri, May 06, 2022 at 05:44:37PM +0300, Vitaly Chikunov wrote:
> > > > > > > 
> > > > > > > > Предлагаю так же отключить нашу традиционную std-def опцию CONFIG_PREEMPT=y
> > > > > > > 
> > > > > > > Вроде бы CONFIG_PREEMPT=y включен в un-def, а в std-def традиционно
> > > > > > > выключен.
> > > > > > 
> > > > > > Да это и имелось ввиду. Спасибо за поправку.
> > > > > 
> > > > > Главное - не выключать CONFIG_PREEMPT_DYNAMIC.
> > > > 
> > > > Это другой вариант о котором я не думал, но может стоит сделать и так.
> > > > 
> > > > На сколько я понял, по умолчанию эта опция включает PREEMPT_NONE, а не
> > > > PREEMPT_VOLUNTARY. То есть умолчание хуже чем CONFIG_PREEMPT_VOLUNTARY=y.
> > > 
> > > Давайте почитаем код вслух:
> > 
> > Я это читал - но понял так, что он выбирает из тех что включены, начиная с
> > NONE. Если не включать NONE, то тогда остается выбор только между VOLUNTARY и
> > PREEMPT. Хотя наверное это хороший выбор.
> > 
> > > 
> > > config PREEMPT_NONE
> > >         bool "No Forced Preemption (Server)"
> > >         select PREEMPT_NONE_BUILD if !PREEMPT_DYNAMIC
> > > 
> > > config PREEMPT_VOLUNTARY
> > >         bool "Voluntary Kernel Preemption (Desktop)"
> > >         depends on !ARCH_NO_PREEMPT
> > >         select PREEMPT_VOLUNTARY_BUILD if !PREEMPT_DYNAMIC
> > > 
> > > config PREEMPT
> > >         bool "Preemptible Kernel (Low-Latency Desktop)"
> > >         depends on !ARCH_NO_PREEMPT
> > >         select PREEMPT_BUILD
> 
> Эти пункты внутри
> 
>   choice
> 	  prompt "Preemption Model"
> 	  default PREEMPT_NONE
> 
> То есть из них можно выбрать только 1. Судя по коду ниже это и будет
> preempt mode по умолчанию. Но,
> 
> > > 
> > > config PREEMPT_DYNAMIC
> > >         bool "Preemption behaviour defined on boot"
> > >         depends on HAVE_PREEMPT_DYNAMIC && !PREEMPT_RT
> > >         select JUMP_LABEL if HAVE_PREEMPT_DYNAMIC_KEY
> > >         select PREEMPT_BUILD
> > >         default y if HAVE_PREEMPT_DYNAMIC_CALL
> 
> Это было в 5.17, а в 5.15:
> 
>   Symbol: PREEMPT_DYNAMIC [=n]                                                      
>   Type  : bool                                                                      
>   Defined at kernel/Kconfig.preempt:85                                              
>   Selected by [n]:                                                                  
>     - PREEMPT [=n] && <choice> && !ARCH_NO_PREEMPT [=n] && HAVE_PREEMPT_DYNAMIC [=y]
> 
> То есть для него нужен PREEMPT=y. А значит, для старых ядер, PREEMPT_DYNAMIC
> можно включить только при выбранном PREEMPT и умолчанием всегда будет
> PREEMPT.

Да, поведение поменялось в результате коммитов v5.16-rc1~197^2~48 и
v5.16-rc1~10^2, и в новых ядрах можно выбрать и PREEMPT_DYNAMIC, и
умолчание, отличное от PREEMPT.

Возможно, эти коммиты можно сбэкпортить.


-- 
ldv


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-05-07  7:25 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-06 14:44 [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y Vitaly Chikunov
2022-05-06 14:53 ` Vladimir D. Seleznev
2022-05-06 14:54   ` Vitaly Chikunov
2022-05-06 14:59     ` Dmitry V. Levin
2022-05-06 15:31       ` Vitaly Chikunov
2022-05-06 18:49         ` Dmitry V. Levin
2022-05-06 21:16           ` Vitaly Chikunov
2022-05-07  0:49             ` Vitaly Chikunov
2022-05-07  7:25               ` Dmitry V. Levin
2022-05-06 15:39     ` Andrey Savchenko

ALT Linux kernel packages development

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel-kernel/0 devel-kernel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel-kernel devel-kernel/ http://lore.altlinux.org/devel-kernel \
		devel-kernel@altlinux.org devel-kernel@altlinux.ru devel-kernel@altlinux.com
	public-inbox-index devel-kernel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git