All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rng-tools: disable the CPU affinity mask
@ 2021-05-10  2:33 Yu, Mingli
  2021-05-10  9:48 ` [OE-core] " Richard Purdie
  0 siblings, 1 reply; 5+ messages in thread
From: Yu, Mingli @ 2021-05-10  2:33 UTC (permalink / raw)
  To: openembedded-core

From: Mingli Yu <mingli.yu@windriver.com>

For the jitter entropy source, each task thread will create an internal
counter timer thread when the system clock resolution is under 5MHz.

But it will introduce high cpu usage for a long time and also make random
data generate too slow if sets the CPU affinity mask of the internal counter
timer thread.

There is no solution until now and the Upstream recommends to disable
the internal timer and think Jitter RNG will not work due to the coarse
timer. Check [1] and [2] for more details.

So disable the CPU affinity mask as a workaround to avoid lots of context
switch and too high cpu load for a long time.

[1] https://github.com/smuellerDD/jitterentropy-library/issues/37
[2] https://github.com/nhorman/rng-tools/pull/123

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
 ...tter.c-disable-the-CPU-affinity-mask.patch | 48 +++++++++++++++++++
 .../rng-tools/rng-tools_6.11.bb               |  1 +
 2 files changed, 49 insertions(+)
 create mode 100644 meta/recipes-support/rng-tools/rng-tools/0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch

diff --git a/meta/recipes-support/rng-tools/rng-tools/0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch b/meta/recipes-support/rng-tools/rng-tools/0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch
new file mode 100644
index 0000000000..e5fe1b0021
--- /dev/null
+++ b/meta/recipes-support/rng-tools/rng-tools/0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch
@@ -0,0 +1,48 @@
+From e44e35dd0b739da8718a5c78e0092bd2feabf5ce Mon Sep 17 00:00:00 2001
+From: Zhantao Tang <zhantao.tang@windriver.com>
+Date: Sun, 25 Apr 2021 11:33:24 +0800
+Subject: [PATCH] rngd_jitter.c: disable the CPU affinity mask
+
+For the jitter entropy source, each task thread will create an internal
+counter timer thread when the system clock resolution is under 5MHz.
+
+But it will introduce high cpu usage for a long time and also make random
+data generate too slow if sets the CPU affinity mask of the internal counter
+timer thread.
+
+So disable the CPU affinity mask to avoid lots of context switch and too
+high cpu load for a long time.
+
+Upstream-Status: Denied[There is no solution until now and Upstream recommend
+                        to disable the internal timer and think Jitter RNG will
+                        not work due to the coarse timer. Check [1] and [2] for
+                        more details]
+
+[1] https://github.com/smuellerDD/jitterentropy-library/issues/37
+[2] https://github.com/nhorman/rng-tools/pull/123
+
+Signed-off-by: Zhantao Tang <zhantao.tang@windriver.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ rngd_jitter.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/rngd_jitter.c b/rngd_jitter.c
+index c803f0d..ef03c6c 100644
+--- a/rngd_jitter.c
++++ b/rngd_jitter.c
+@@ -252,11 +252,6 @@ static void *thread_entropy_task(void *data)
+ 		me->slptm.tv_nsec = 0;
+ 	}
+ 
+-	/* fill initial entropy */
+-	CPU_ZERO(&cpuset);
+-	CPU_SET(me->core_id, &cpuset);
+-	pthread_setaffinity_np(pthread_self(), CPU_ALLOC_SIZE(me->core_id+1), &cpuset);
+-
+ 	tmpbuf = malloc(me->buf_sz);
+ 	if (!tmpbuf) {
+ 		message_entsrc(me->ent_src,LOG_DAEMON|LOG_DEBUG, "Unable to allocate temp buffer on cpu %d\n", me->core_id);
+-- 
+2.17.1
+
diff --git a/meta/recipes-support/rng-tools/rng-tools_6.11.bb b/meta/recipes-support/rng-tools/rng-tools_6.11.bb
index 61a0cef2e0..e45a7d12cb 100644
--- a/meta/recipes-support/rng-tools/rng-tools_6.11.bb
+++ b/meta/recipes-support/rng-tools/rng-tools_6.11.bb
@@ -10,6 +10,7 @@ DEPENDS = "sysfsutils openssl"
 
 SRC_URI = "\
     git://github.com/nhorman/rng-tools.git \
+    file://0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch \
     file://init \
     file://default \
     file://rngd.service \
-- 
2.29.2


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

* Re: [OE-core] [PATCH] rng-tools: disable the CPU affinity mask
  2021-05-10  2:33 [PATCH] rng-tools: disable the CPU affinity mask Yu, Mingli
@ 2021-05-10  9:48 ` Richard Purdie
  2021-05-10 13:23   ` Jack Mitchell
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Purdie @ 2021-05-10  9:48 UTC (permalink / raw)
  To: Yu, Mingli, openembedded-core

On Mon, 2021-05-10 at 10:33 +0800, Yu, Mingli wrote:
> From: Mingli Yu <mingli.yu@windriver.com>
> 
> For the jitter entropy source, each task thread will create an internal
> counter timer thread when the system clock resolution is under 5MHz.
> 
> But it will introduce high cpu usage for a long time and also make random
> data generate too slow if sets the CPU affinity mask of the internal counter
> timer thread.
> 
> There is no solution until now and the Upstream recommends to disable
> the internal timer and think Jitter RNG will not work due to the coarse
> timer. Check [1] and [2] for more details.
> 
> So disable the CPU affinity mask as a workaround to avoid lots of context
> switch and too high cpu load for a long time.
> 
> [1] https://github.com/smuellerDD/jitterentropy-library/issues/37
> [2] https://github.com/nhorman/rng-tools/pull/123
> 
> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> ---
>  ...tter.c-disable-the-CPU-affinity-mask.patch | 48 +++++++++++++++++++
>  .../rng-tools/rng-tools_6.11.bb               |  1 +
>  2 files changed, 49 insertions(+)
>  create mode 100644 meta/recipes-support/rng-tools/rng-tools/0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch

Thanks for investigating this upstream. From an OE-Core perspective, I've very
reluctant to take what looks like a very board specific change which the upstream
is advising against. The issue is that this will affect all hardware, not just
the hardware which has the issue. I think we need to find a better solution.

Cheers,

Richard


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

* Re: [OE-core] [PATCH] rng-tools: disable the CPU affinity mask
  2021-05-10  9:48 ` [OE-core] " Richard Purdie
@ 2021-05-10 13:23   ` Jack Mitchell
  2021-05-10 13:34     ` Mikko Rapeli
  2021-05-13 15:48     ` Joshua Watt
  0 siblings, 2 replies; 5+ messages in thread
From: Jack Mitchell @ 2021-05-10 13:23 UTC (permalink / raw)
  To: openembedded-core

On 10/05/2021 10:48, Richard Purdie wrote:
> On Mon, 2021-05-10 at 10:33 +0800, Yu, Mingli wrote:
>> From: Mingli Yu <mingli.yu@windriver.com>
>>
>> For the jitter entropy source, each task thread will create an internal
>> counter timer thread when the system clock resolution is under 5MHz.
>>
>> But it will introduce high cpu usage for a long time and also make random
>> data generate too slow if sets the CPU affinity mask of the internal counter
>> timer thread.
>>
>> There is no solution until now and the Upstream recommends to disable
>> the internal timer and think Jitter RNG will not work due to the coarse
>> timer. Check [1] and [2] for more details.
>>
>> So disable the CPU affinity mask as a workaround to avoid lots of context
>> switch and too high cpu load for a long time.
>>
>> [1] https://github.com/smuellerDD/jitterentropy-library/issues/37
>> [2] https://github.com/nhorman/rng-tools/pull/123
>>
>> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> ---
>>  ...tter.c-disable-the-CPU-affinity-mask.patch | 48 +++++++++++++++++++
>>  .../rng-tools/rng-tools_6.11.bb               |  1 +
>>  2 files changed, 49 insertions(+)
>>  create mode 100644 meta/recipes-support/rng-tools/rng-tools/0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch
> 
> Thanks for investigating this upstream. From an OE-Core perspective, I've very
> reluctant to take what looks like a very board specific change which the upstream
> is advising against. The issue is that this will affect all hardware, not just
> the hardware which has the issue. I think we need to find a better solution.
> 
> Cheers,
> 
> Richard
> 

FWIW I forcefully have to ensure nothing pulls in rng-tools in my builds
which are for two different Rockchip chipsets (armv7 and armv8) as the
rng-tools binary pegs the CPU at 100% for minutes after boot, every
boot. It's particularly annoying as openssh brings it in by default
which I've unsuccessfully argued is wrong before. I believe the problem
is probably fairly widespread but just unnoticed.

Regards,

-- 
Jack Mitchell, Consultant
https://www.tuxable.co.uk

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

* Re: [OE-core] [PATCH] rng-tools: disable the CPU affinity mask
  2021-05-10 13:23   ` Jack Mitchell
@ 2021-05-10 13:34     ` Mikko Rapeli
  2021-05-13 15:48     ` Joshua Watt
  1 sibling, 0 replies; 5+ messages in thread
From: Mikko Rapeli @ 2021-05-10 13:34 UTC (permalink / raw)
  To: ml; +Cc: openembedded-core

Hi,

On Mon, May 10, 2021 at 02:23:02PM +0100, Jack Mitchell wrote:
> On 10/05/2021 10:48, Richard Purdie wrote:
> > On Mon, 2021-05-10 at 10:33 +0800, Yu, Mingli wrote:
> >> From: Mingli Yu <mingli.yu@windriver.com>
> >>
> >> For the jitter entropy source, each task thread will create an internal
> >> counter timer thread when the system clock resolution is under 5MHz.
> >>
> >> But it will introduce high cpu usage for a long time and also make random
> >> data generate too slow if sets the CPU affinity mask of the internal counter
> >> timer thread.
> >>
> >> There is no solution until now and the Upstream recommends to disable
> >> the internal timer and think Jitter RNG will not work due to the coarse
> >> timer. Check [1] and [2] for more details.
> >>
> >> So disable the CPU affinity mask as a workaround to avoid lots of context
> >> switch and too high cpu load for a long time.
> >>
> >> [1] https://github.com/smuellerDD/jitterentropy-library/issues/37
> >> [2] https://github.com/nhorman/rng-tools/pull/123
> >>
> >> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> >> ---
> >>  ...tter.c-disable-the-CPU-affinity-mask.patch | 48 +++++++++++++++++++
> >>  .../rng-tools/rng-tools_6.11.bb               |  1 +
> >>  2 files changed, 49 insertions(+)
> >>  create mode 100644 meta/recipes-support/rng-tools/rng-tools/0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch
> > 
> > Thanks for investigating this upstream. From an OE-Core perspective, I've very
> > reluctant to take what looks like a very board specific change which the upstream
> > is advising against. The issue is that this will affect all hardware, not just
> > the hardware which has the issue. I think we need to find a better solution.
> > 
> > Cheers,
> > 
> > Richard
> > 
> 
> FWIW I forcefully have to ensure nothing pulls in rng-tools in my builds
> which are for two different Rockchip chipsets (armv7 and armv8) as the
> rng-tools binary pegs the CPU at 100% for minutes after boot, every
> boot. It's particularly annoying as openssh brings it in by default
> which I've unsuccessfully argued is wrong before. I believe the problem
> is probably fairly widespread but just unnoticed.

Unfortunately this is better than not having ssh, TLS etc encrypted access
at all to/from the target HW since openssl and kernel refuse to proceed
due to lack of entropy.

If your HW has random number generators and driver support is in place,
then rng-tools isn't needed.

Cheers,

-Mikko

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

* Re: [OE-core] [PATCH] rng-tools: disable the CPU affinity mask
  2021-05-10 13:23   ` Jack Mitchell
  2021-05-10 13:34     ` Mikko Rapeli
@ 2021-05-13 15:48     ` Joshua Watt
  1 sibling, 0 replies; 5+ messages in thread
From: Joshua Watt @ 2021-05-13 15:48 UTC (permalink / raw)
  To: Jack Mitchell; +Cc: OE-core

On Mon, May 10, 2021 at 8:23 AM Jack Mitchell <ml@embed.me.uk> wrote:
>
> On 10/05/2021 10:48, Richard Purdie wrote:
> > On Mon, 2021-05-10 at 10:33 +0800, Yu, Mingli wrote:
> >> From: Mingli Yu <mingli.yu@windriver.com>
> >>
> >> For the jitter entropy source, each task thread will create an internal
> >> counter timer thread when the system clock resolution is under 5MHz.
> >>
> >> But it will introduce high cpu usage for a long time and also make random
> >> data generate too slow if sets the CPU affinity mask of the internal counter
> >> timer thread.
> >>
> >> There is no solution until now and the Upstream recommends to disable
> >> the internal timer and think Jitter RNG will not work due to the coarse
> >> timer. Check [1] and [2] for more details.
> >>
> >> So disable the CPU affinity mask as a workaround to avoid lots of context
> >> switch and too high cpu load for a long time.
> >>
> >> [1] https://github.com/smuellerDD/jitterentropy-library/issues/37
> >> [2] https://github.com/nhorman/rng-tools/pull/123
> >>
> >> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> >> ---
> >>  ...tter.c-disable-the-CPU-affinity-mask.patch | 48 +++++++++++++++++++
> >>  .../rng-tools/rng-tools_6.11.bb               |  1 +
> >>  2 files changed, 49 insertions(+)
> >>  create mode 100644 meta/recipes-support/rng-tools/rng-tools/0001-rngd_jitter.c-disable-the-CPU-affinity-mask.patch
> >
> > Thanks for investigating this upstream. From an OE-Core perspective, I've very
> > reluctant to take what looks like a very board specific change which the upstream
> > is advising against. The issue is that this will affect all hardware, not just
> > the hardware which has the issue. I think we need to find a better solution.
> >
> > Cheers,
> >
> > Richard
> >
>
> FWIW I forcefully have to ensure nothing pulls in rng-tools in my builds
> which are for two different Rockchip chipsets (armv7 and armv8) as the
> rng-tools binary pegs the CPU at 100% for minutes after boot, every
> boot. It's particularly annoying as openssh brings it in by default
> which I've unsuccessfully argued is wrong before. I believe the problem
> is probably fairly widespread but just unnoticed.

Is the reason for the CPU being pegged because of the jitter entropy
source? If so, perhaps you can disable libjitterentropy in rng-tools
packageconfig. We might also be able to make that packageconfig option
more "automatic" by basing it on some high precision timer
MACHINE_FEATURE instead of always being included.

>
> Regards,
>
> --
> Jack Mitchell, Consultant
> https://www.tuxable.co.uk
>
> 
>

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

end of thread, other threads:[~2021-05-13 15:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-10  2:33 [PATCH] rng-tools: disable the CPU affinity mask Yu, Mingli
2021-05-10  9:48 ` [OE-core] " Richard Purdie
2021-05-10 13:23   ` Jack Mitchell
2021-05-10 13:34     ` Mikko Rapeli
2021-05-13 15:48     ` Joshua Watt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.