On 12/13/19 11:35 AM, Justin Forbes wrote:
On Fri, Dec 13, 2019 at 8:14 AM Laura Abbott
<labbott(a)redhat.com> wrote:
>
> On 12/12/19 9:10 AM, Justin Forbes wrote:
>> On Thu, Dec 12, 2019 at 3:48 AM Peter Robinson <pbrobinson(a)gmail.com>
wrote:
>>>
>>> Hey All.
>>>
>>> In digging through some pieces around CPU_IDLE I noticed that
>>> NO_HZ_IDLE is explicitly disabled on x86_64 but not on all other
>>> architectures.
>>>
>>> Doing a "git log --follow
>>> configs/fedora/generic/x86/x86_64/CONFIG_NO_HZ_IDLE" it goes all the
>>> way back to 2016 when we changed the way the configs were handled.
>>>
>>> The upstream kernel's opinion [1] on it is "Most of the time you
want
>>> to say Y here." so I'm wondering if there's a reason why
we're
>>> difference on x86_64 or is it just lost in the winds of time?
>>>
>>> Peter
>>>
>>> PS was digging around CPU_IDLE_GOV_TEO for those curious.
>>>
>>> [1]
https://cateee.net/lkddb/web-lkddb/NO_HZ_IDLE.html
>>
>>
>> commit 3836faf6e68495fc70316229a3540506f7ce4c98
>> Author: Kyle McMartin <kyle(a)fedoraproject.org>
>> Date: Wed Sep 17 13:10:12 2014 -0500
>>
>> re-enable RCU_FAST_NO_HZ, enable NO_HZ_FULL on x86_64
>>
>> - I also like to live dangerously. (Re-enable RCU_FAST_NO_HZ which
>> has been off
>> since April 2012. Also enable NO_HZ_FULL on x86_64.)
>
> Yeah I wouldn't quite say it's been "lost" but the real question
> is if it still makes sense. I don't have a strong opinion without
> data. Prarit, any opinion here?
Oh, I wasn't pointing out that it wasn't just lost, I was pointing out
that NO_HZ_IDLE is not set because we run NO_HZ_FULL. We were one of
the first distros to do so, and it has worked well for us. I have a
fairly strong opinion about not dropping back to IDLE without good
reason.
Getting back to the original question, I had to go back through my history to
see if I could find a reason why there is a discrepancy between x86 and the
other arches.
AFAICT in *RHEL8* we have NO_HZ_FULL on all arches except s390x. S390x has
NO_HZ_IDLE. Additionally s390 upstream has:
[prarit@prarit linux]$ git grep NO_HZ_IDLE arch/s390/
arch/s390/configs/debug_defconfig:4:CONFIG_NO_HZ_IDLE=y
arch/s390/configs/defconfig:4:CONFIG_NO_HZ_IDLE=y
arch/s390/configs/zfcpdump_defconfig:2:CONFIG_NO_HZ_IDLE=y
On Fedora, as noted,
[prarit@prarit fedora]$ find ./ -name *NO_HZ_IDLE* | xargs grep ^
./generic/x86/x86_64/CONFIG_NO_HZ_IDLE:# CONFIG_NO_HZ_IDLE is not set
./generic/CONFIG_NO_HZ_IDLE:CONFIG_NO_HZ_IDLE=y
[prarit@prarit fedora]$ find ./ -name *NO_HZ_FULL* | xargs grep ^
./generic/x86/x86_64/CONFIG_NO_HZ_FULL:CONFIG_NO_HZ_FULL=y
./generic/CONFIG_NO_HZ_FULL:# CONFIG_NO_HZ_FULL is not set
FWIW I think the correct thing to do for performance reasons is use NO_HZ_FULL
on all arches except s390x which requires NO_HZ_IDLE.
P.