Forums

How Much RAM a free account has for webapp

using the script from here (with some dirty hacks to quickly make a endpoint for experiment)

import psutil
import platform
from datetime import datetime
import cpuinfo
import socket
import uuid
import re


CONT = ""

def get_size(bytes, suffix="B"):
    """
    Scale bytes to its proper format
    e.g:
        1253656 => '1.20MB'
        1253656678 => '1.17GB'
    """
    factor = 1024
    for unit in ["", "K", "M", "G", "T", "P"]:
        if bytes < factor:
            return f"{bytes:.2f}{unit}{suffix}"
        bytes /= factor

def System_information():
    global CONT
    CONT = ""

    def print(*args):
        global CONT
        CONT = CONT + " ".join(map(str, args)) + "\n"

    print("="*40, "System Information", "="*40)
    uname = platform.uname()
    print(f"System: {uname.system}")
    print(f"Node Name: {uname.node}")
    print(f"Release: {uname.release}")
    print(f"Version: {uname.version}")
    print(f"Machine: {uname.machine}")
    print(f"Processor: {uname.processor}")
    # print(f"Processor: {cpuinfo.get_cpu_info()['brand_raw']}")
    print(f"Ip-Address: {socket.gethostbyname(socket.gethostname())}")
    print(f"Mac-Address: {':'.join(re.findall('..', '%012x' % uuid.getnode()))}")


    # Boot Time
    print("="*40, "Boot Time", "="*40)
    boot_time_timestamp = psutil.boot_time()
    bt = datetime.fromtimestamp(boot_time_timestamp)
    print(f"Boot Time: {bt.year}/{bt.month}/{bt.day} {bt.hour}:{bt.minute}:{bt.second}")


    # print CPU information
    print("="*40, "CPU Info", "="*40)
    # number of cores
    print("Physical cores:", psutil.cpu_count(logical=False))
    print("Total cores:", psutil.cpu_count(logical=True))
    # CPU frequencies
    cpufreq = psutil.cpu_freq()
    print(f"Max Frequency: {cpufreq.max:.2f}Mhz")
    print(f"Min Frequency: {cpufreq.min:.2f}Mhz")
    print(f"Current Frequency: {cpufreq.current:.2f}Mhz")
    # CPU usage
    print("CPU Usage Per Core:")
    for i, percentage in enumerate(psutil.cpu_percent(percpu=True, interval=1)):
        print(f"Core {i}: {percentage}%")
    print(f"Total CPU Usage: {psutil.cpu_percent()}%")


    # Memory Information
    print("="*40, "Memory Information", "="*40)
    # get the memory details
    svmem = psutil.virtual_memory()
    print(f"Total: {get_size(svmem.total)}")
    print(f"Available: {get_size(svmem.available)}")
    print(f"Used: {get_size(svmem.used)}")
    print(f"Percentage: {svmem.percent}%")



    print("="*20, "SWAP", "="*20)
    # get the swap memory details (if exists)
    swap = psutil.swap_memory()
    print(f"Total: {get_size(swap.total)}")
    print(f"Free: {get_size(swap.free)}")
    print(f"Used: {get_size(swap.used)}")
    print(f"Percentage: {swap.percent}%")



    # Disk Information
    print("="*40, "Disk Information", "="*40)
    print("Partitions and Usage:")
    # get all disk partitions
    partitions = psutil.disk_partitions()
    for partition in partitions:
        print(f"=== Device: {partition.device} ===")
        print(f"  Mountpoint: {partition.mountpoint}")
        print(f"  File system type: {partition.fstype}")
        try:
            partition_usage = psutil.disk_usage(partition.mountpoint)
        except PermissionError:
            # this can be catched due to the disk that
            # isn't ready
            continue
        print(f"  Total Size: {get_size(partition_usage.total)}")
        print(f"  Used: {get_size(partition_usage.used)}")
        print(f"  Free: {get_size(partition_usage.free)}")
        print(f"  Percentage: {partition_usage.percent}%")
    # get IO statistics since boot
    disk_io = psutil.disk_io_counters()
    # print(f"Total read: {get_size(disk_io.read_bytes)}")
    # print(f"Total write: {get_size(disk_io.write_bytes)}")

    ## Network information
    print("="*40, "Network Information", "="*40)
    ## get all network interfaces (virtual and physical)
    if_addrs = psutil.net_if_addrs()
    for interface_name, interface_addresses in if_addrs.items():
        for address in interface_addresses:
            print(f"=== Interface: {interface_name} ===")
            if str(address.family) == 'AddressFamily.AF_INET':
                print(f"  IP Address: {address.address}")
                print(f"  Netmask: {address.netmask}")
                print(f"  Broadcast IP: {address.broadcast}")
            elif str(address.family) == 'AddressFamily.AF_PACKET':
                print(f"  MAC Address: {address.address}")
                print(f"  Netmask: {address.netmask}")
                print(f"  Broadcast MAC: {address.broadcast}")
    ##get IO statistics since boot
    net_io = psutil.net_io_counters()
    print(f"Total Bytes Sent: {get_size(net_io.bytes_sent)}")
    print(f"Total Bytes Received: {get_size(net_io.bytes_recv)}")

    return CONT


from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return System_information()

i get this output...

======================================== System Information ========================================
System: Linux
Node Name: blue-liveweb33
Release: 5.15.0-1044-aws
Version: #49~20.04.1-Ubuntu SMP Mon Aug 21 17:09:32 UTC 2023
Machine: x86_64
Processor: x86_64
Ip-Address: 127.0.0.1
Mac-Address: 0a:8a:72:43:56:5d
======================================== Boot Time ========================================
Boot Time: 2023/12/23 7:31:23
======================================== CPU Info ========================================
Physical cores: 2
Total cores: 4
Max Frequency: 0.00Mhz
Min Frequency: 0.00Mhz
Current Frequency: 2801.04Mhz
CPU Usage Per Core:
Core 0: 53.0%
Core 1: 41.2%
Core 2: 98.0%
Core 3: 35.1%
Total CPU Usage: 45.3%
======================================== Memory Information ========================================
Total: 30.89GB
Available: 1.39GB
Used: 28.97GB
Percentage: 95.5%
==================== SWAP ====================
Total: 80.00GB
Free: 48.30GB
Used: 31.70GB
Percentage: 39.6%
======================================== Disk Information ========================================
Partitions and Usage:
======================================== Network Information ========================================
=== Interface: lo ===
IP Address: 127.0.0.1
Netmask: 255.0.0.0
Broadcast IP: None
=== Interface: lo ===
=== Interface: lo ===
MAC Address: 00:00:00:00:00:00
Netmask: None
Broadcast MAC: None
=== Interface: ens5 ===
IP Address: 10.0.0.106
Netmask: 255.255.255.0
Broadcast IP: 10.0.0.255
=== Interface: ens5 ===
=== Interface: ens5 ===
MAC Address: 0a:8a:72:43:56:5d
Netmask: None
Broadcast MAC: ff:ff:ff:ff:ff:ff
=== Interface: docker0 ===
IP Address: 172.17.0.1
Netmask: 255.255.0.0
Broadcast IP: 172.17.255.255
=== Interface: docker0 ===
MAC Address: 02:42:fe:38:c8:22
Netmask: None
Broadcast MAC: ff:ff:ff:ff:ff:ff
Total Bytes Sent: 69.01GB
Total Bytes Received: 133.35GB

in "Memory Information" it says 30.89GB but 95% is being used, but my app is not using it, is it some sort of limit on RAM or a problem on my side, other than that, other information i get seems too much, how much of it is accurate, where are these numbers coming from

Your website is running on shared hosting, that code is showing what's available for all of the sites we happen to be running on that machine. You can use up to 3GiB of that -- if your code starts using more, it may be terminated.