Message ID | 20200226181020.19592-3-alex.bennee@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix codegen translation cache size | expand |
Hi Alex, On Wed, Feb 26, 2020 at 7:10 PM Alex Bennée <alex.bennee@linaro.org> wrote: > Basing the TB cache size on the ram_size was always a little heuristic > and was broken by a1b18df9a4 which caused ram_size not to be fully > realised at the time we initialise the TCG translation cache. > Now I'm beginning to understand the issue better. So without this patch, the TCG translation cache effectively was disabled, causing the slowdown, correct? > > The current DEFAULT_CODE_GEN_BUFFER_SIZE may still be a little small > but follow-up patches will address that. > > Fixes: a1b18df9a4 > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > Cc: Niek Linnenbank <nieklinnenbank@gmail.com> > Cc: Igor Mammedov <imammedo@redhat.com> > --- > accel/tcg/translate-all.c | 8 -------- > 1 file changed, 8 deletions(-) > > diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c > index 238b0e575bf..5b66af783b5 100644 > --- a/accel/tcg/translate-all.c > +++ b/accel/tcg/translate-all.c > @@ -938,15 +938,7 @@ static inline size_t size_code_gen_buffer(size_t > tb_size) > { > /* Size the buffer. */ > if (tb_size == 0) { > -#ifdef USE_STATIC_CODE_GEN_BUFFER > tb_size = DEFAULT_CODE_GEN_BUFFER_SIZE; > -#else > - /* ??? Needs adjustments. */ > - /* ??? If we relax the requirement that CONFIG_USER_ONLY use the > - static buffer, we could size this on RESERVED_VA, on the text > - segment size of the executable, or continue to use the > default. */ > - tb_size = (unsigned long)(ram_size / 4); > As you wrote in the commit message, I think we are indeed reducing the cache size here to 32MiB versus a larger size without this patch. In the next patch #4 in this series you are increasing it for 64-bit hosts, but what about the 32-bit hosts? Or will that be addressed in a later series? For now, this fix works and resolves the slowdown, so: Tested-by: Niek Linnenbank <nieklinnenbank@gmail.com> Regards, Niek > -#endif > } > if (tb_size < MIN_CODE_GEN_BUFFER_SIZE) { > tb_size = MIN_CODE_GEN_BUFFER_SIZE; > -- > 2.20.1 > >
On 2/26/20 10:10 AM, Alex Bennée wrote: > Basing the TB cache size on the ram_size was always a little heuristic > and was broken by a1b18df9a4 which caused ram_size not to be fully > realised at the time we initialise the TCG translation cache. > > The current DEFAULT_CODE_GEN_BUFFER_SIZE may still be a little small > but follow-up patches will address that. > > Fixes: a1b18df9a4 > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > Cc: Niek Linnenbank <nieklinnenbank@gmail.com> > Cc: Igor Mammedov <imammedo@redhat.com> > --- > accel/tcg/translate-all.c | 8 -------- > 1 file changed, 8 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 2/26/20 2:26 PM, Niek Linnenbank wrote: > Hi Alex, > > On Wed, Feb 26, 2020 at 7:10 PM Alex Bennée <alex.bennee@linaro.org > <mailto:alex.bennee@linaro.org>> wrote: > > Basing the TB cache size on the ram_size was always a little heuristic > and was broken by a1b18df9a4 which caused ram_size not to be fully > realised at the time we initialise the TCG translation cache. > > > Now I'm beginning to understand the issue better. So without this patch, the > TCG translation > cache effectively was disabled, causing the slowdown, correct? Yes. r~
On 2/26/20 7:10 PM, Alex Bennée wrote: > Basing the TB cache size on the ram_size was always a little heuristic > and was broken by a1b18df9a4 which caused ram_size not to be fully > realised at the time we initialise the TCG translation cache. > > The current DEFAULT_CODE_GEN_BUFFER_SIZE may still be a little small > but follow-up patches will address that. > > Fixes: a1b18df9a4 > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > Cc: Niek Linnenbank <nieklinnenbank@gmail.com> > Cc: Igor Mammedov <imammedo@redhat.com> > --- > accel/tcg/translate-all.c | 8 -------- > 1 file changed, 8 deletions(-) > > diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c > index 238b0e575bf..5b66af783b5 100644 > --- a/accel/tcg/translate-all.c > +++ b/accel/tcg/translate-all.c > @@ -938,15 +938,7 @@ static inline size_t size_code_gen_buffer(size_t tb_size) > { > /* Size the buffer. */ > if (tb_size == 0) { > -#ifdef USE_STATIC_CODE_GEN_BUFFER > tb_size = DEFAULT_CODE_GEN_BUFFER_SIZE; > -#else > - /* ??? Needs adjustments. */ > - /* ??? If we relax the requirement that CONFIG_USER_ONLY use the > - static buffer, we could size this on RESERVED_VA, on the text > - segment size of the executable, or continue to use the default. */ > - tb_size = (unsigned long)(ram_size / 4); > -#endif > } > if (tb_size < MIN_CODE_GEN_BUFFER_SIZE) { > tb_size = MIN_CODE_GEN_BUFFER_SIZE; > Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c index 238b0e575bf..5b66af783b5 100644 --- a/accel/tcg/translate-all.c +++ b/accel/tcg/translate-all.c @@ -938,15 +938,7 @@ static inline size_t size_code_gen_buffer(size_t tb_size) { /* Size the buffer. */ if (tb_size == 0) { -#ifdef USE_STATIC_CODE_GEN_BUFFER tb_size = DEFAULT_CODE_GEN_BUFFER_SIZE; -#else - /* ??? Needs adjustments. */ - /* ??? If we relax the requirement that CONFIG_USER_ONLY use the - static buffer, we could size this on RESERVED_VA, on the text - segment size of the executable, or continue to use the default. */ - tb_size = (unsigned long)(ram_size / 4); -#endif } if (tb_size < MIN_CODE_GEN_BUFFER_SIZE) { tb_size = MIN_CODE_GEN_BUFFER_SIZE;
Basing the TB cache size on the ram_size was always a little heuristic and was broken by a1b18df9a4 which caused ram_size not to be fully realised at the time we initialise the TCG translation cache. The current DEFAULT_CODE_GEN_BUFFER_SIZE may still be a little small but follow-up patches will address that. Fixes: a1b18df9a4 Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Cc: Niek Linnenbank <nieklinnenbank@gmail.com> Cc: Igor Mammedov <imammedo@redhat.com> --- accel/tcg/translate-all.c | 8 -------- 1 file changed, 8 deletions(-)