[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[qemu-xen staging] accel/tcg: better handle memory constrained systems



commit c83d628b7fba050e59ccf7bda050bc27af241b61
Author:     Alex Bennée <alex.bennee@xxxxxxxxxx>
AuthorDate: Fri Jul 24 07:44:59 2020 +0100
Commit:     Alex Bennée <alex.bennee@xxxxxxxxxx>
CommitDate: Mon Jul 27 09:40:16 2020 +0100

    accel/tcg: better handle memory constrained systems
    
    It turns out there are some 64 bit systems that have relatively low
    amounts of physical memory available to them (typically CI system).
    Even with swapping available a 1GB translation buffer that fills up
    can put the machine under increased memory pressure. Detect these low
    memory situations and reduce tb_size appropriately.
    
    Fixes: 600e17b2615 ("accel/tcg: increase default code gen buffer size for 
64 bit")
    Signed-off-by: Alex Bennée <alex.bennee@xxxxxxxxxx>
    Reviewed-by: Richard Henderson <richard.henderson@xxxxxxxxxx>
    Reviewed-by: Robert Foley <robert.foley@xxxxxxxxxx>
    Cc: BALATON Zoltan <balaton@xxxxxxxxxx>
    Cc: Christian Ehrhardt <christian.ehrhardt@xxxxxxxxxxxxx>
    Message-Id: <20200724064509.331-7-alex.bennee@xxxxxxxxxx>
---
 accel/tcg/translate-all.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index 2afa46bd2b..2d83013633 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -976,7 +976,12 @@ static inline size_t size_code_gen_buffer(size_t tb_size)
 {
     /* Size the buffer.  */
     if (tb_size == 0) {
-        tb_size = DEFAULT_CODE_GEN_BUFFER_SIZE;
+        size_t phys_mem = qemu_get_host_physmem();
+        if (phys_mem == 0) {
+            tb_size = DEFAULT_CODE_GEN_BUFFER_SIZE;
+        } else {
+            tb_size = MIN(DEFAULT_CODE_GEN_BUFFER_SIZE, phys_mem / 8);
+        }
     }
     if (tb_size < MIN_CODE_GEN_BUFFER_SIZE) {
         tb_size = MIN_CODE_GEN_BUFFER_SIZE;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.