From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 6 May 2022 21:49:15 +0300 From: "Dmitry V. Levin" To: ALT Linux kernel packages development Message-ID: <20220506184915.GA26339@altlinux.org> References: <20220506144437.aqcwdw4oo37tp5dr@altlinux.org> <20220506145449.xg5mcuqaknb7mudy@altlinux.org> <20220506145929.GA24271@altlinux.org> <20220506153110.6wygefz343jvascg@altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220506153110.6wygefz343jvascg@altlinux.org> Subject: Re: [d-kernel] CONFIG_PREEMPT=y --> CONFIG_PREEMPT_VOLUNTARY=y X-BeenThere: devel-kernel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux kernel packages development List-Id: ALT Linux kernel packages development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 May 2022 18:49:15 -0000 Archived-At: List-Archive: List-Post: 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