[Crash-utility] [PATCH] Skip alternate hz calculation in Linux 4.8+
HAGIO KAZUHITO(萩尾 一仁)
k-hagio-ab at nec.com
Thu Apr 22 01:38:36 UTC 2021
Hi Martin,
> -----Original Message-----
> From: crash-utility-bounces at redhat.com <crash-utility-bounces at redhat.com> On Behalf Of Moore, Martin
> (Linux ERT)
> Sent: Thursday, April 15, 2021 5:44 AM
> To: Discussion list for crash utility usage, maintenance and development <crash-utility at redhat.com>
> Subject: [Crash-utility] [PATCH] Skip alternate hz calculation in Linux 4.8+
>
> In task_init() there is a calculation of machdep->hz based on the value of cfq_slice_async if the symbol
> exists:
>
>
>
> if (symbol_exists("cfq_slice_async")) {
>
> uint cfq_slice_async;
>
>
>
> get_symbol_data("cfq_slice_async", sizeof(int),
>
> &cfq_slice_async);
>
>
>
> if (cfq_slice_async) {
>
> machdep->hz = cfq_slice_async * 25;
>
>
>
> if (CRASHDEBUG(2))
>
> fprintf(fp,
>
> "cfq_slice_async exists: setting hz to %d\n",
>
> machdep->hz);
>
> }
>
> }
>
>
>
> However, patch “cfq-iosched: Convert from jiffies to nanoseconds”
> (https://patchwork.kernel.org/project/linux-block/patch/1465391499-27867-2-git-send-email-jack@suse.cz
> /) changed the definition of cfq_slice_async from (HZ / 25) to (NSEC_PER_SEC / 25). As such, the above
> calculation will result in a value of 1000000000 for machdep->hz. In vmcores where the symbol exists and
> has this definition, this causes incorrect results for some calculations. I have a couple of 4.12 vmcores
> in this situation, and in them crash shows the uptime as 3 seconds, which also throws off the timestamps
> in “log -T”.
>
>
>
> Fix this by skipping the above code block for kernels 4.8 and above:
>
>
Thank you for the report and patch, there is another discussion about the
HZ calculation [1], but anyway I think we should have this patch.
Acked-by: Kazuhito Hagio <k-hagio-ab at nec.com>
Could I have your Signed-off-by: tag?
Thanks,
Kazu
[1] https://listman.redhat.com/archives/crash-utility/2021-April/msg00057.html
>
> --- task.c.orig 2021-04-14 16:07:52.021137849 -0400
>
> +++ task.c 2021-04-14 16:11:03.406626370 -0400
>
> @@ -417,7 +417,8 @@
>
>
>
> STRUCT_SIZE_INIT(cputime_t, "cputime_t");
>
>
>
> - if (symbol_exists("cfq_slice_async")) {
>
> + if ((THIS_KERNEL_VERSION < LINUX(4,8,0)) &&
>
> + symbol_exists("cfq_slice_async")) {
>
> uint cfq_slice_async;
>
>
>
> get_symbol_data("cfq_slice_async", sizeof(int),
>
>
>
>
>
> Martin Moore
> Linux Engineering Resolution Team
>
> HPE Pointnext Services
> Hewlett Packard Enterprise
>
>
>
>
More information about the Crash-utility
mailing list