Spaces:
Build error
Build error
| import GPUtil | |
| import matplotlib.pyplot as plt | |
| import os | |
| import psutil | |
| import gradio as gr | |
| # TODO: Use plotly trace to update a plot of the stats; try to get near parity to system monitor | |
| # Ask: what stats are users most interested in knowing? | |
| def get_stats(plot): | |
| stats = "" | |
| # Get CPU usage | |
| cpu_percent = psutil.cpu_percent(interval=0) | |
| # Get the number of CPU cores | |
| num_cores = os.cpu_count() | |
| # Get RAM usage | |
| ram = psutil.virtual_memory() | |
| total_ram = psutil.virtual_memory().total | |
| stats += f"CPU Usage: {cpu_percent}%\n" | |
| stats += f"Number of CPU Cores: {num_cores}\n" | |
| stats += f"RAM Usage: {ram.percent}%\n" | |
| stats += f"RAM Used: {ram.used / (1024 ** 3):.2f} GB\n" | |
| stats += f"Total RAM: {total_ram / (1024 ** 3):.2f} GB\n" | |
| # print(f"CPU Usage: {cpu_percent}%") | |
| # print(f"Number of CPU Cores: {num_cores}") | |
| # print(f"RAM Usage: {ram.percent}%") | |
| # print(f"RAM Used: {ram.used / (1024 ** 3):.2f} GB") | |
| # print(f"Total RAM: {total_ram / (1024 ** 3):.2f} GB") | |
| # Get GPU usage and memory info | |
| gpu_info = GPUtil.getGPUs() | |
| for i, gpu in enumerate(gpu_info): | |
| stats += f"GPU {i + 1}:\n" | |
| stats += f" GPU Name: {gpu.name}\n" | |
| stats += f" GPU Usage: {gpu.load * 100}%\n" | |
| stats += f" GPU VRAM Usage: {(gpu.memoryUtil * 100):.2f}%\n" | |
| stats += f" GPU Free VRAM: {(gpu.memoryFree / 1024):.2f} MB\n" | |
| stats += f" GPU Total VRAM: {gpu.memoryTotal / 1024} MB\n\n" | |
| # print(f"GPU {i + 1}:") | |
| # print(f" GPU Name: {gpu.name}") | |
| # print(f" GPU Usage: {gpu.load * 100}%") | |
| # print(f" GPU VRAM Usage: {(gpu.memoryUtil * 100):.2f}%") | |
| # print(f" GPU Free VRAM: {(gpu.memoryFree / 1024):.2f} MB") | |
| # print(f" GPU Total VRAM: {gpu.memoryTotal / 1024} MB\n") | |
| return stats, None | |
| with gr.Blocks() as demo: | |
| gr.Markdown(value='# System Monitor') | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| gr.Markdown('## View system resource usage for the demo') | |
| stats_box = gr.TextArea(label="System Stats") | |
| with gr.Column(scale=1): | |
| plot = gr.Plot(label="Plot", value=None) | |
| dep = demo.load(get_stats, [plot], [stats_box, plot], every=5) | |
| stats_box.change(get_stats, [plot], [stats_box, plot], every=5, cancels=[dep]) | |
| with gr.Accordion('Developer Notes:', open=False): | |
| gr.Markdown('I\'ve seen a number of Ai tools that report system resource usage and think that is a good trend.\n\n' | |
| 'With more time I could see a "Task Manager" component for gradio being useful for demos.\n\n' | |
| 'The plot for this demo is broken but I may revisit this later.') | |
| if __name__ == '__main__': | |
| demo.queue().launch() | |