* [dpdk-stable] [PATCH v1 1/1] test/power: fix several bugs in cpufreq autotest
@ 2021-04-06 3:33 Richael Zhuang
2021-04-06 6:39 ` Richael Zhuang
0 siblings, 1 reply; 5+ messages in thread
From: Richael Zhuang @ 2021-04-06 3:33 UTC (permalink / raw)
To: dev; +Cc: alan.carew, stable, David Hunt, Pablo de Lara
1. Sleep for 1s before checking the newly updated value from
"/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq", because
for some systems it may not be effective immediately.
2. The value in "/sys/.../cpuinfo_cur_freq" may not be exactly the
same as what we set. For example, we write "2400000" to
"/sys/.../cpufreq/scaling_setspeed" to set the frequency, then the
value in "/sys/.../cpuinfo_cur_freq" may be "2401222". So need to
round the value.
Fixes: ed7c51a6a680 ("app/test: vm power management")
Cc: alan.carew@intel.com
Cc: stable@dpdk.org
Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
---
app/test/test_power_cpufreq.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
index 731c6b4dc..c4f4541ac 100644
--- a/app/test/test_power_cpufreq.c
+++ b/app/test/test_power_cpufreq.c
@@ -34,6 +34,10 @@ test_power_caps(void)
#define TEST_POWER_LCORE_INVALID ((unsigned)RTE_MAX_LCORE)
#define TEST_POWER_FREQS_NUM_MAX ((unsigned)RTE_MAX_LCORE_FREQS)
+/* macros used for rounding frequency to nearest 100000 */
+#define TEST_FREQ_ROUNDING_DELTA 50000
+#define TEST_ROUND_FREQ_TO_N_100000 100000
+
#define TEST_POWER_SYSFILE_CUR_FREQ \
"/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq"
@@ -43,6 +47,9 @@ static uint32_t freqs[TEST_POWER_FREQS_NUM_MAX];
static int
check_cur_freq(unsigned lcore_id, uint32_t idx)
{
+ /* wait for the value to be updated */
+ sleep(1);
+
#define TEST_POWER_CONVERT_TO_DECIMAL 10
FILE *f;
char fullpath[PATH_MAX];
@@ -62,7 +69,17 @@ check_cur_freq(unsigned lcore_id, uint32_t idx)
goto fail_get_cur_freq;
}
cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL);
- ret = (freqs[idx] == cur_freq ? 0 : -1);
+
+ /* convert the frequency to nearest 100000 value
+ * Ex: if cur_freq=1396789 then freq_conv=1400000
+ * Ex: if cur_freq=800030 then freq_conv=800000
+ */
+ unsigned int freq_conv = 0;
+ freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
+ / TEST_ROUND_FREQ_TO_N_100000;
+ freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
+
+ ret = (freqs[idx] == freq_conv ? 0 : -1);
fail_get_cur_freq:
fclose(f);
--
2.20.1
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-stable] [PATCH v1 1/1] test/power: fix several bugs in cpufreq autotest
2021-04-06 3:33 [dpdk-stable] [PATCH v1 1/1] test/power: fix several bugs in cpufreq autotest Richael Zhuang
@ 2021-04-06 6:39 ` Richael Zhuang
2021-04-06 7:45 ` Richael Zhuang
0 siblings, 1 reply; 5+ messages in thread
From: Richael Zhuang @ 2021-04-06 6:39 UTC (permalink / raw)
To: dev; +Cc: alan.carew, stable, David Hunt, Pablo de Lara
1. Sleep for 1s before checking the newly updated value from
"/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq", because
for some systems it may not be effective immediately.
2. The value in "/sys/.../cpuinfo_cur_freq" may not be exactly the
same as what we set. For example, we write "2400000" to
"/sys/.../cpufreq/scaling_setspeed" to set the frequency, then the
value in "/sys/.../cpuinfo_cur_freq" may be "2401222". So need to
round the value.
Fixes: ed7c51a6a680 ("app/test: vm power management")
Cc: alan.carew@intel.com
Cc: stable@dpdk.org
Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
---
app/test/test_power_cpufreq.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
index 731c6b4dc..c4f4541ac 100644
--- a/app/test/test_power_cpufreq.c
+++ b/app/test/test_power_cpufreq.c
@@ -34,6 +34,10 @@ test_power_caps(void)
#define TEST_POWER_LCORE_INVALID ((unsigned)RTE_MAX_LCORE)
#define TEST_POWER_FREQS_NUM_MAX ((unsigned)RTE_MAX_LCORE_FREQS)
+/* macros used for rounding frequency to nearest 100000 */
+#define TEST_FREQ_ROUNDING_DELTA 50000
+#define TEST_ROUND_FREQ_TO_N_100000 100000
+
#define TEST_POWER_SYSFILE_CUR_FREQ \
"/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq"
@@ -43,6 +47,9 @@ static uint32_t freqs[TEST_POWER_FREQS_NUM_MAX];
static int
check_cur_freq(unsigned lcore_id, uint32_t idx)
{
+ /* wait for the value to be updated */
+ sleep(1);
+
#define TEST_POWER_CONVERT_TO_DECIMAL 10
FILE *f;
char fullpath[PATH_MAX];
@@ -62,7 +69,17 @@ check_cur_freq(unsigned lcore_id, uint32_t idx)
goto fail_get_cur_freq;
}
cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL);
- ret = (freqs[idx] == cur_freq ? 0 : -1);
+
+ /* convert the frequency to nearest 100000 value
+ * Ex: if cur_freq=1396789 then freq_conv=1400000
+ * Ex: if cur_freq=800030 then freq_conv=800000
+ */
+ unsigned int freq_conv = 0;
+ freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
+ / TEST_ROUND_FREQ_TO_N_100000;
+ freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
+
+ ret = (freqs[idx] == freq_conv ? 0 : -1);
fail_get_cur_freq:
fclose(f);
--
2.20.1
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-stable] [PATCH v1 1/1] test/power: fix several bugs in cpufreq autotest
2021-04-06 6:39 ` Richael Zhuang
@ 2021-04-06 7:45 ` Richael Zhuang
2021-04-06 8:30 ` Richael Zhuang
0 siblings, 1 reply; 5+ messages in thread
From: Richael Zhuang @ 2021-04-06 7:45 UTC (permalink / raw)
To: dev; +Cc: alan.carew, stable, David Hunt, Pablo de Lara
1. Sleep for 1s before checking the newly updated value from
"/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq", because
for some systems it may not be effective immediately.
2. The value in "/sys/.../cpuinfo_cur_freq" may not be exactly the
same as what we set. For example, we write "2400000" to
"/sys/.../cpufreq/scaling_setspeed" to set the frequency, then the
value in "/sys/.../cpuinfo_cur_freq" may be "2401222". So need to
round the value.
Fixes: ed7c51a6a680 ("app/test: vm power management")
Cc: alan.carew@intel.com
Cc: stable@dpdk.org
Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
---
app/test/test_power_cpufreq.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
index 731c6b4dc..c4f4541ac 100644
--- a/app/test/test_power_cpufreq.c
+++ b/app/test/test_power_cpufreq.c
@@ -34,6 +34,10 @@ test_power_caps(void)
#define TEST_POWER_LCORE_INVALID ((unsigned)RTE_MAX_LCORE)
#define TEST_POWER_FREQS_NUM_MAX ((unsigned)RTE_MAX_LCORE_FREQS)
+/* macros used for rounding frequency to nearest 100000 */
+#define TEST_FREQ_ROUNDING_DELTA 50000
+#define TEST_ROUND_FREQ_TO_N_100000 100000
+
#define TEST_POWER_SYSFILE_CUR_FREQ \
"/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq"
@@ -43,6 +47,9 @@ static uint32_t freqs[TEST_POWER_FREQS_NUM_MAX];
static int
check_cur_freq(unsigned lcore_id, uint32_t idx)
{
+ /* wait for the value to be updated */
+ sleep(1);
+
#define TEST_POWER_CONVERT_TO_DECIMAL 10
FILE *f;
char fullpath[PATH_MAX];
@@ -62,7 +69,17 @@ check_cur_freq(unsigned lcore_id, uint32_t idx)
goto fail_get_cur_freq;
}
cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL);
- ret = (freqs[idx] == cur_freq ? 0 : -1);
+
+ /* convert the frequency to nearest 100000 value
+ * Ex: if cur_freq=1396789 then freq_conv=1400000
+ * Ex: if cur_freq=800030 then freq_conv=800000
+ */
+ unsigned int freq_conv = 0;
+ freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
+ / TEST_ROUND_FREQ_TO_N_100000;
+ freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
+
+ ret = (freqs[idx] == freq_conv ? 0 : -1);
fail_get_cur_freq:
fclose(f);
--
2.20.1
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-stable] [PATCH v1 1/1] test/power: fix several bugs in cpufreq autotest
2021-04-06 7:45 ` Richael Zhuang
@ 2021-04-06 8:30 ` Richael Zhuang
2021-04-06 8:59 ` [dpdk-stable] [dpdk-dev] " Thomas Monjalon
0 siblings, 1 reply; 5+ messages in thread
From: Richael Zhuang @ 2021-04-06 8:30 UTC (permalink / raw)
To: dev; +Cc: alan.carew, stable, David Hunt, Pablo de Lara
1. Sleep for 1s before checking the newly updated value from
"/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq", because
for some systems it may not be effective immediately.
2. The value in "/sys/.../cpuinfo_cur_freq" may not be exactly the
same as what we set. For example, we write "2400000" to
"/sys/.../cpufreq/scaling_setspeed" to set the frequency, then the
value in "/sys/.../cpuinfo_cur_freq" may be "2401222". So need to
round the value.
Fixes: ed7c51a6a680 ("app/test: vm power management")
Cc: alan.carew@intel.com
Cc: stable@dpdk.org
Signed-off-by: Richael Zhuang <richael.zhuang@arm.com>
---
app/test/test_power_cpufreq.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
index 731c6b4dc..c4f4541ac 100644
--- a/app/test/test_power_cpufreq.c
+++ b/app/test/test_power_cpufreq.c
@@ -34,6 +34,10 @@ test_power_caps(void)
#define TEST_POWER_LCORE_INVALID ((unsigned)RTE_MAX_LCORE)
#define TEST_POWER_FREQS_NUM_MAX ((unsigned)RTE_MAX_LCORE_FREQS)
+/* macros used for rounding frequency to nearest 100000 */
+#define TEST_FREQ_ROUNDING_DELTA 50000
+#define TEST_ROUND_FREQ_TO_N_100000 100000
+
#define TEST_POWER_SYSFILE_CUR_FREQ \
"/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq"
@@ -43,6 +47,9 @@ static uint32_t freqs[TEST_POWER_FREQS_NUM_MAX];
static int
check_cur_freq(unsigned lcore_id, uint32_t idx)
{
+ /* wait for the value to be updated */
+ sleep(1);
+
#define TEST_POWER_CONVERT_TO_DECIMAL 10
FILE *f;
char fullpath[PATH_MAX];
@@ -62,7 +69,17 @@ check_cur_freq(unsigned lcore_id, uint32_t idx)
goto fail_get_cur_freq;
}
cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL);
- ret = (freqs[idx] == cur_freq ? 0 : -1);
+
+ /* convert the frequency to nearest 100000 value
+ * Ex: if cur_freq=1396789 then freq_conv=1400000
+ * Ex: if cur_freq=800030 then freq_conv=800000
+ */
+ unsigned int freq_conv = 0;
+ freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
+ / TEST_ROUND_FREQ_TO_N_100000;
+ freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
+
+ ret = (freqs[idx] == freq_conv ? 0 : -1);
fail_get_cur_freq:
fclose(f);
--
2.20.1
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v1 1/1] test/power: fix several bugs in cpufreq autotest
2021-04-06 8:30 ` Richael Zhuang
@ 2021-04-06 8:59 ` Thomas Monjalon
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2021-04-06 8:59 UTC (permalink / raw)
To: Richael Zhuang
Cc: dev, stable, David Hunt, Pablo de Lara, honnappa.nagarahalli,
ruifeng.wang
Hi,
When sending a new version, please upgrade the version number.
Would be good to cleanup patchwork as well,
by setting old versions as superseded.
06/04/2021 10:30, Richael Zhuang:
> 1. Sleep for 1s before checking the newly updated value from
> "/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq", because
> for some systems it may not be effective immediately.
>
> 2. The value in "/sys/.../cpuinfo_cur_freq" may not be exactly the
> same as what we set. For example, we write "2400000" to
> "/sys/.../cpufreq/scaling_setspeed" to set the frequency, then the
> value in "/sys/.../cpuinfo_cur_freq" may be "2401222". So need to
> round the value.
If there are multiple bugs, they should be adressed in multiple patches.
> IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
I won't process a confidential patch.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-04-06 8:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-06 3:33 [dpdk-stable] [PATCH v1 1/1] test/power: fix several bugs in cpufreq autotest Richael Zhuang
2021-04-06 6:39 ` Richael Zhuang
2021-04-06 7:45 ` Richael Zhuang
2021-04-06 8:30 ` Richael Zhuang
2021-04-06 8:59 ` [dpdk-stable] [dpdk-dev] " Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).