diff --git a/invokeai/backend/model_manager/util/libc_util.py b/invokeai/backend/model_manager/util/libc_util.py index 8d104093085..61649532811 100644 --- a/invokeai/backend/model_manager/util/libc_util.py +++ b/invokeai/backend/model_manager/util/libc_util.py @@ -36,23 +36,35 @@ class Struct_mallinfo2(ctypes.Structure): ] def __str__(self) -> str: - s = "" - s += ( - f"{'arena': <10}= {(self.arena / 2**30):15.5f} # Non-mmapped space allocated (GB) (uordblks + fordblks)\n" - ) - s += f"{'ordblks': <10}= {(self.ordblks): >15} # Number of free chunks\n" - s += f"{'smblks': <10}= {(self.smblks): >15} # Number of free fastbin blocks \n" - s += f"{'hblks': <10}= {(self.hblks): >15} # Number of mmapped regions \n" - s += f"{'hblkhd': <10}= {(self.hblkhd / 2**30):15.5f} # Space allocated in mmapped regions (GB)\n" - s += f"{'usmblks': <10}= {(self.usmblks): >15} # Unused\n" - s += f"{'fsmblks': <10}= {(self.fsmblks / 2**30):15.5f} # Space in freed fastbin blocks (GB)\n" - s += ( - f"{'uordblks': <10}= {(self.uordblks / 2**30):15.5f} # Space used by in-use allocations (non-mmapped)" - " (GB)\n" - ) - s += f"{'fordblks': <10}= {(self.fordblks / 2**30):15.5f} # Space in free blocks (non-mmapped) (GB)\n" - s += f"{'keepcost': <10}= {(self.keepcost / 2**30):15.5f} # Top-most, releasable space (GB)\n" - return s + # Precompute divisor + GB = 2**30 + + # Avoid repeated attribute and division lookups + arena_gb = self.arena / GB + ordblks = self.ordblks + smblks = self.smblks + hblks = self.hblks + hblkhd_gb = self.hblkhd / GB + usmblks = self.usmblks + fsmblks_gb = self.fsmblks / GB + uordblks_gb = self.uordblks / GB + fordblks_gb = self.fordblks / GB + keepcost_gb = self.keepcost / GB + + # List of strings, join at the end for efficiency + lines = [ + f"{'arena': <10}= {arena_gb:15.5f} # Non-mmapped space allocated (GB) (uordblks + fordblks)\n", + f"{'ordblks': <10}= {ordblks: >15} # Number of free chunks\n", + f"{'smblks': <10}= {smblks: >15} # Number of free fastbin blocks \n", + f"{'hblks': <10}= {hblks: >15} # Number of mmapped regions \n", + f"{'hblkhd': <10}= {hblkhd_gb:15.5f} # Space allocated in mmapped regions (GB)\n", + f"{'usmblks': <10}= {usmblks: >15} # Unused\n", + f"{'fsmblks': <10}= {fsmblks_gb:15.5f} # Space in freed fastbin blocks (GB)\n", + (f"{'uordblks': <10}= {uordblks_gb:15.5f} # Space used by in-use allocations (non-mmapped) (GB)\n"), + f"{'fordblks': <10}= {fordblks_gb:15.5f} # Space in free blocks (non-mmapped) (GB)\n", + f"{'keepcost': <10}= {keepcost_gb:15.5f} # Top-most, releasable space (GB)\n", + ] + return "".join(lines) class LibcUtil: