diff mbox series

[kirkstone,master] rng-tools: Add Arm aarch64 CPU specific configuration to address excessive CPU usage on startup

Message ID 20221031075042.224693-1-xiangyu.chen@windriver.com
State New, archived
Headers show
Series [kirkstone,master] rng-tools: Add Arm aarch64 CPU specific configuration to address excessive CPU usage on startup | expand

Commit Message

Xiangyu Chen Oct. 31, 2022, 7:50 a.m. UTC
With the default jitter options aarch64 CPU-based devices typically experience continuous
high CPU utilisation for several minutes after rngd starts.

Accoring to the rng-tools issue #150[1] and comments[2],in order to address this,
the following configuration changes have been made, those configurations
also can be found on Alpine Linux[3]:

- reduce the number of threads used to 1 in total, rather than 1 per core.
- reduce the buffer size from 16535 to 4133 which reduces the time taken
  to fill the buffer (and so reduces the duration of CPU load).

[1] https://github.com/nhorman/rng-tools/issues/150
[2] https://github.com/nhorman/rng-tools/issues/150#issuecomment-953079212
[3] https://git.alpinelinux.org/aports/tree/main/rng-tools/rngd.confd-arm

Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
---
 .../rng-tools/rng-tools/default.aarch64               | 11 +++++++++++
 meta/recipes-support/rng-tools/rng-tools_6.15.bb      |  5 +++++
 2 files changed, 16 insertions(+)
 create mode 100644 meta/recipes-support/rng-tools/rng-tools/default.aarch64

Comments

Khem Raj Oct. 31, 2022, 3:40 p.m. UTC | #1
On Mon, Oct 31, 2022 at 12:51 AM Xiangyu Chen
<xiangyu.chen@windriver.com> wrote:
>
> With the default jitter options aarch64 CPU-based devices typically experience continuous
> high CPU utilisation for several minutes after rngd starts.
>
> Accoring to the rng-tools issue #150[1] and comments[2],in order to address this,
> the following configuration changes have been made, those configurations
> also can be found on Alpine Linux[3]:
>
> - reduce the number of threads used to 1 in total, rather than 1 per core.
> - reduce the buffer size from 16535 to 4133 which reduces the time taken
>   to fill the buffer (and so reduces the duration of CPU load).
>
> [1] https://github.com/nhorman/rng-tools/issues/150
> [2] https://github.com/nhorman/rng-tools/issues/150#issuecomment-953079212
> [3] https://git.alpinelinux.org/aports/tree/main/rng-tools/rngd.confd-arm
>
> Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
> ---
>  .../rng-tools/rng-tools/default.aarch64               | 11 +++++++++++
>  meta/recipes-support/rng-tools/rng-tools_6.15.bb      |  5 +++++
>  2 files changed, 16 insertions(+)
>  create mode 100644 meta/recipes-support/rng-tools/rng-tools/default.aarch64
>
> diff --git a/meta/recipes-support/rng-tools/rng-tools/default.aarch64 b/meta/recipes-support/rng-tools/rng-tools/default.aarch64
> new file mode 100644
> index 0000000000..5a2fbcc9ef
> --- /dev/null
> +++ b/meta/recipes-support/rng-tools/rng-tools/default.aarch64
> @@ -0,0 +1,11 @@
> +# With the default jitter options Arm CPU-based devices typically experience
> +# continuous high CPU utilisation for several minutes after rngd starts.
> +# See https://gitlab.alpinelinux.org/alpine/aports/-/issues/13035 and
> +# https://github.com/nhorman/rng-tools/issues/150
> +# In order to address this the following configuration changes have been made:
> +#
> +#   - reduce the number of threads used to 1 in total, rather than 1 per core.
> +#   - reduce the buffer size from 16535 to 4133 which reduces the time taken
> +#     to fill the buffer (and so reduces the duration of CPU load).
> +#
> +EXTRA_ARGS="-r /dev/hwrng -O jitter:buffer_size:4133 -O jitter:refill_thresh:4133 -O jitter:thread_count:1"
> diff --git a/meta/recipes-support/rng-tools/rng-tools_6.15.bb b/meta/recipes-support/rng-tools/rng-tools_6.15.bb
> index 0696351903..e1f6b2ad77 100644
> --- a/meta/recipes-support/rng-tools/rng-tools_6.15.bb
> +++ b/meta/recipes-support/rng-tools/rng-tools_6.15.bb
> @@ -12,6 +12,7 @@ SRC_URI = "git://github.com/nhorman/rng-tools.git;branch=master;protocol=https \
>             file://init \
>             file://default \
>             file://rngd.service \
> +           file://default.aarch64 \
>             "
>  SRCREV = "381f69828b782afda574f259c1b7549f48f9bb77"
>
> @@ -59,3 +60,7 @@ do_install:append() {
>              ${D}${systemd_system_unitdir}/rngd.service
>      fi
>  }
> +
> +do_install:append:aarch64() {
> +    install -Dm 0644 ${WORKDIR}/default.aarch64 ${D}${sysconfdir}/default/rng-tools
> +}

Perhaps drop the aarch64 specific default file inside a folder called
aarch64 under meta/recipes-support/rng-tools/rng-tools
and we don't need any changes in recipe.

> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#172290): https://lists.openembedded.org/g/openembedded-core/message/172290
> Mute This Topic: https://lists.openembedded.org/mt/94680433/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Xiangyu Chen Nov. 1, 2022, 1:49 a.m. UTC | #2
On 10/31/22 23:40, Khem Raj wrote:
> [Please note: This e-mail is from an EXTERNAL e-mail address]
>
> On Mon, Oct 31, 2022 at 12:51 AM Xiangyu Chen
> <xiangyu.chen@windriver.com> wrote:
>> With the default jitter options aarch64 CPU-based devices typically experience continuous
>> high CPU utilisation for several minutes after rngd starts.
>>
>> Accoring to the rng-tools issue #150[1] and comments[2],in order to address this,
>> the following configuration changes have been made, those configurations
>> also can be found on Alpine Linux[3]:
>>
>> - reduce the number of threads used to 1 in total, rather than 1 per core.
>> - reduce the buffer size from 16535 to 4133 which reduces the time taken
>>    to fill the buffer (and so reduces the duration of CPU load).
>>
>> [1] https://github.com/nhorman/rng-tools/issues/150
>> [2] https://github.com/nhorman/rng-tools/issues/150#issuecomment-953079212
>> [3] https://git.alpinelinux.org/aports/tree/main/rng-tools/rngd.confd-arm
>>
>> Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
>> ---
>>   .../rng-tools/rng-tools/default.aarch64               | 11 +++++++++++
>>   meta/recipes-support/rng-tools/rng-tools_6.15.bb      |  5 +++++
>>   2 files changed, 16 insertions(+)
>>   create mode 100644 meta/recipes-support/rng-tools/rng-tools/default.aarch64
>>
>> diff --git a/meta/recipes-support/rng-tools/rng-tools/default.aarch64 b/meta/recipes-support/rng-tools/rng-tools/default.aarch64
>> new file mode 100644
>> index 0000000000..5a2fbcc9ef
>> --- /dev/null
>> +++ b/meta/recipes-support/rng-tools/rng-tools/default.aarch64
>> @@ -0,0 +1,11 @@
>> +# With the default jitter options Arm CPU-based devices typically experience
>> +# continuous high CPU utilisation for several minutes after rngd starts.
>> +# See https://gitlab.alpinelinux.org/alpine/aports/-/issues/13035 and
>> +# https://github.com/nhorman/rng-tools/issues/150
>> +# In order to address this the following configuration changes have been made:
>> +#
>> +#   - reduce the number of threads used to 1 in total, rather than 1 per core.
>> +#   - reduce the buffer size from 16535 to 4133 which reduces the time taken
>> +#     to fill the buffer (and so reduces the duration of CPU load).
>> +#
>> +EXTRA_ARGS="-r /dev/hwrng -O jitter:buffer_size:4133 -O jitter:refill_thresh:4133 -O jitter:thread_count:1"
>> diff --git a/meta/recipes-support/rng-tools/rng-tools_6.15.bb b/meta/recipes-support/rng-tools/rng-tools_6.15.bb
>> index 0696351903..e1f6b2ad77 100644
>> --- a/meta/recipes-support/rng-tools/rng-tools_6.15.bb
>> +++ b/meta/recipes-support/rng-tools/rng-tools_6.15.bb
>> @@ -12,6 +12,7 @@ SRC_URI = "git://github.com/nhorman/rng-tools.git;branch=master;protocol=https \
>>              file://init \
>>              file://default \
>>              file://rngd.service \
>> +           file://default.aarch64 \
>>              "
>>   SRCREV = "381f69828b782afda574f259c1b7549f48f9bb77"
>>
>> @@ -59,3 +60,7 @@ do_install:append() {
>>               ${D}${systemd_system_unitdir}/rngd.service
>>       fi
>>   }
>> +
>> +do_install:append:aarch64() {
>> +    install -Dm 0644 ${WORKDIR}/default.aarch64 ${D}${sysconfdir}/default/rng-tools
>> +}
> Perhaps drop the aarch64 specific default file inside a folder called
> aarch64 under meta/recipes-support/rng-tools/rng-tools
> and we don't need any changes in recipe.

Thanks,  already sent the v2 patch.

https://lists.openembedded.org/g/openembedded-core/message/172349

>> --
>> 2.34.1
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#172290): https://lists.openembedded.org/g/openembedded-core/message/172290
>> Mute This Topic: https://lists.openembedded.org/mt/94680433/1997914
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
diff mbox series

Patch

diff --git a/meta/recipes-support/rng-tools/rng-tools/default.aarch64 b/meta/recipes-support/rng-tools/rng-tools/default.aarch64
new file mode 100644
index 0000000000..5a2fbcc9ef
--- /dev/null
+++ b/meta/recipes-support/rng-tools/rng-tools/default.aarch64
@@ -0,0 +1,11 @@ 
+# With the default jitter options Arm CPU-based devices typically experience
+# continuous high CPU utilisation for several minutes after rngd starts.
+# See https://gitlab.alpinelinux.org/alpine/aports/-/issues/13035 and
+# https://github.com/nhorman/rng-tools/issues/150
+# In order to address this the following configuration changes have been made:
+#
+#   - reduce the number of threads used to 1 in total, rather than 1 per core.
+#   - reduce the buffer size from 16535 to 4133 which reduces the time taken
+#     to fill the buffer (and so reduces the duration of CPU load).
+#
+EXTRA_ARGS="-r /dev/hwrng -O jitter:buffer_size:4133 -O jitter:refill_thresh:4133 -O jitter:thread_count:1"
diff --git a/meta/recipes-support/rng-tools/rng-tools_6.15.bb b/meta/recipes-support/rng-tools/rng-tools_6.15.bb
index 0696351903..e1f6b2ad77 100644
--- a/meta/recipes-support/rng-tools/rng-tools_6.15.bb
+++ b/meta/recipes-support/rng-tools/rng-tools_6.15.bb
@@ -12,6 +12,7 @@  SRC_URI = "git://github.com/nhorman/rng-tools.git;branch=master;protocol=https \
            file://init \
            file://default \
            file://rngd.service \
+           file://default.aarch64 \
            "
 SRCREV = "381f69828b782afda574f259c1b7549f48f9bb77"
 
@@ -59,3 +60,7 @@  do_install:append() {
             ${D}${systemd_system_unitdir}/rngd.service
     fi
 }
+
+do_install:append:aarch64() {
+    install -Dm 0644 ${WORKDIR}/default.aarch64 ${D}${sysconfdir}/default/rng-tools
+}