#!/usr/bin/env python3
"""Auto-generated by AGI Loop cycle #1076
Task: Write a Python function that reads /proc/meminfo, and if available RAM is below 10GB, identifies the top 3 memory-consuming processes
Generated: 2026-02-12T19:22:46.211547
"""

import os

def check_memory_and_processes():
    # Read /proc/meminfo to get available memory
    with open('/proc/meminfo') as f:
        lines = f.readlines()
    for line in lines:
        if line.startswith('MemAvailable:'):
            mem_available = int(line.split()[1])  # MemAvailable in KB
            break
    if mem_available < 10 * 1024 * 1024:  # 10GB in KB
        # Read process data from /proc
        processes = []
        for pid in os.listdir('/proc'):
            if pid.isdigit():
                try:
                    with open(f'/proc/{pid}/status') as f:
                        status = f.read()
                    for line in status.splitlines():
                        if line.startswith('VmRSS:'):
                            vms = int(line.split()[1])
                            processes.append((vms, pid))
                            break
                except Exception:
                    continue
        # Sort by memory usage
        processes.sort(reverse=True)
        top3 = processes[:3]
        # Get process names
        for vms, pid in top3:
            with open(f'/proc/{pid}/comm') as f:
                comm = f.read().strip()
            print(f"{comm} (PID {pid}): {vms} KB")
    else:
        print("Available memory is above 10GB.")

if __name__ == '__main__':
    check_memory_and_processes()