From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sat, 7 May 2022 10:25:49 +0300 From: "Dmitry V. Levin" To: devel-kernel@lists.altlinux.org Message-ID: <20220507072549.GB3440@altlinux.org> References: <20220506144437.aqcwdw4oo37tp5dr@altlinux.org> <20220506145449.xg5mcuqaknb7mudy@altlinux.org> <20220506145929.GA24271@altlinux.org> <20220506153110.6wygefz343jvascg@altlinux.org> <20220506184915.GA26339@altlinux.org> <20220506211618.smtrvgu77gzmxxcc@altlinux.org> <20220507004904.aqpof32nijy3pieg@altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220507004904.aqpof32nijy3pieg@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: Sat, 07 May 2022 07:25:49 -0000 Archived-At: List-Archive: List-Post: 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] && && !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