From: "Alex Bennée" <1896298@bugs.launchpad.net> To: qemu-devel@nongnu.org Subject: [Bug 1896298] [RFC PATCH] accel/tcg: change default codegen buffer size for i386-softmmu Date: Tue, 25 May 2021 16:45:41 -0000 [thread overview] Message-ID: <20210525164541.17985-1-alex.bennee@linaro.org> (raw) In-Reply-To: 160046874518.13612.4861858859499751315.malonedeb@gac.canonical.com There are two justifications for making this change. The first is that i386 emulation is typically for smaller machines where having a 1gb of generated code is overkill for basic emulation. The second is the propensity of self-modifying code (c.f. Doom/edit) utilised on i386 systems can trigger a rapid growth in invalidated and re-translated buffers. This is seen in bug #283. Execution is still inefficient but at least the host memory isn't so aggressively used up. That said it's still really just a sticking plaster for user convenience. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Cc: Thomas Huth <thuth@redhat.com> Cc: 1896298@bugs.launchpad.net --- accel/tcg/translate-all.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c index 640ff6e3e7..f442165674 100644 --- a/accel/tcg/translate-all.c +++ b/accel/tcg/translate-all.c @@ -951,9 +951,13 @@ static void page_lock_pair(PageDesc **ret_p1, tb_page_addr_t phys1, * Users running large scale system emulation may want to tweak their * runtime setup via the tb-size control on the command line. */ +#ifdef TARGET_I386 +#define DEFAULT_CODE_GEN_BUFFER_SIZE_1 (32 * MiB) +#else #define DEFAULT_CODE_GEN_BUFFER_SIZE_1 (1 * GiB) #endif #endif +#endif #define DEFAULT_CODE_GEN_BUFFER_SIZE \ (DEFAULT_CODE_GEN_BUFFER_SIZE_1 < MAX_CODE_GEN_BUFFER_SIZE \ -- 2.20.1 -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1896298 Title: TCG memory leak with FreeDOS 'edit' Status in QEMU: Expired Bug description: qemu trunk as of today leaks memory FAST when freedos' edit is running. To reproduce, download: https://www.ibiblio.org/pub/micro/pc- stuff/freedos/files/repositories/1.3/cdrom.iso Then run: $ qemu-system-i386 -cdrom cdrom.iso select your language then select "return to DOS", then type > edit it will consume memory at ~10MB/s This does NOT happen when adding -enable-kvm To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1896298/+subscriptions
WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org> To: qemu-devel@nongnu.org Cc: "Richard Henderson" <richard.henderson@linaro.org>, "Thomas Huth" <thuth@redhat.com>, 1896298@bugs.launchpad.net, "Alex Bennée" <alex.bennee@linaro.org>, "Paolo Bonzini" <pbonzini@redhat.com> Subject: [RFC PATCH] accel/tcg: change default codegen buffer size for i386-softmmu Date: Tue, 25 May 2021 17:45:41 +0100 [thread overview] Message-ID: <20210525164541.17985-1-alex.bennee@linaro.org> (raw) Message-ID: <20210525164541.kazTlnJ4DdwXdSBGBgHgsdaySA6Hz2t8pnQMo26UDcY@z> (raw) There are two justifications for making this change. The first is that i386 emulation is typically for smaller machines where having a 1gb of generated code is overkill for basic emulation. The second is the propensity of self-modifying code (c.f. Doom/edit) utilised on i386 systems can trigger a rapid growth in invalidated and re-translated buffers. This is seen in bug #283. Execution is still inefficient but at least the host memory isn't so aggressively used up. That said it's still really just a sticking plaster for user convenience. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Cc: Thomas Huth <thuth@redhat.com> Cc: 1896298@bugs.launchpad.net --- accel/tcg/translate-all.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c index 640ff6e3e7..f442165674 100644 --- a/accel/tcg/translate-all.c +++ b/accel/tcg/translate-all.c @@ -951,9 +951,13 @@ static void page_lock_pair(PageDesc **ret_p1, tb_page_addr_t phys1, * Users running large scale system emulation may want to tweak their * runtime setup via the tb-size control on the command line. */ +#ifdef TARGET_I386 +#define DEFAULT_CODE_GEN_BUFFER_SIZE_1 (32 * MiB) +#else #define DEFAULT_CODE_GEN_BUFFER_SIZE_1 (1 * GiB) #endif #endif +#endif #define DEFAULT_CODE_GEN_BUFFER_SIZE \ (DEFAULT_CODE_GEN_BUFFER_SIZE_1 < MAX_CODE_GEN_BUFFER_SIZE \ -- 2.20.1
next prev parent reply other threads:[~2021-05-25 17:03 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-18 22:39 [Bug 1896298] [NEW] memory leak Michael Slade 2020-09-18 23:20 ` [Bug 1896298] " Michael Slade 2020-12-02 7:55 ` Thomas Huth 2021-05-11 13:35 ` Thomas Huth 2021-05-13 12:16 ` [Bug 1896298] Re: TCG memory leak with FreeDOS 'edit' Thomas Huth 2021-05-25 14:51 ` Alex Bennée 2021-05-25 16:45 ` Alex Bennée [this message] 2021-05-25 16:45 ` [RFC PATCH] accel/tcg: change default codegen buffer size for i386-softmmu Alex Bennée 2021-06-03 16:33 ` Alex Bennée 2021-06-03 16:33 ` [Bug 1896298] " Alex Bennée 2021-06-03 19:04 ` Richard Henderson 2021-06-04 7:42 ` Alex Bennée 2021-06-04 7:42 ` [Bug 1896298] " Alex Bennée
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210525164541.17985-1-alex.bennee@linaro.org \ --to=1896298@bugs.launchpad.net \ --cc=qemu-devel@nongnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.