Re: [PATCH] powerpc/time: use get_tb instead of get_vtb in running_clock

From: Benjamin Herrenschmidt
Date: Thu Jul 13 2017 - 17:52:13 EST


On Thu, 2017-07-13 at 14:55 +0800, hejianet wrote:
> Hi Ben
> I add some printk logs in watchdog_timer_fn in the guest
> [ÂÂ 16.025222] get_vtb=8236291881, get_tb=13756711357, get_timestamp=4
> [ÂÂ 20.025624] get_vtb=9745285807, get_tb=15804711283, get_timestamp=7
> [ÂÂ 24.025042] get_vtb=11518119641, get_tb=17852711085, get_timestamp=10
> [ÂÂ 28.024074] get_vtb=13192704319, get_tb=19900711071, get_timestamp=13
> [ÂÂ 32.024086] get_vtb=14856516982, get_tb=21948711066, get_timestamp=16
> [ÂÂ 36.024075] get_vtb=16569127618, get_tb=23996711078, get_timestamp=20
> [ÂÂ 40.024138] get_vtb=17008865823, get_tb=26044718418, get_timestamp=20
> [ÂÂ 44.023993] get_vtb=17020637241, get_tb=28092716383, get_timestamp=20
> [ÂÂ 48.023996] get_vtb=17022857170, get_tb=30140718472, get_timestamp=20
> [ÂÂ 52.023996] get_vtb=17024268541, get_tb=32188718432, get_timestamp=20
> [ÂÂ 56.023996] get_vtb=17036577783, get_tb=34236718077, get_timestamp=20
> [ÂÂ 60.023996] get_vtb=17037829743, get_tb=36284718437, get_timestamp=20
> [ÂÂ 64.023992] get_vtb=17039846747, get_tb=38332716609, get_timestamp=20
> [ÂÂ 68.023991] get_vtb=17041448345, get_tb=40380715903, get_timestamp=20
>
> The get_timestamp(use get_vtb(),unit is second) is slower down compared
> with printk time. You also can obviously watch the get_vtb increment is
> slowly less than get_tb increment.

But that is the entire point of vtb ... because it only counts when
running in the guest, not the time spent in the host.

> Without this patch, I thought there might be some softlockup warnings
> missed in guest.

Ugh ? We already have too many of these ! On the contrary, we don't
want the guest to start to spew soft lockup warnings because it was not
scheduled by the host enough. The guest soft lockup warnings should be
specifically about something bad happening inside the guest.

Your patch seems to defeat the whole purpose of that running_clock()
function unless I'm somewhat mistaken.

Ben.