본문 바로가기

IT/개발

python 에서 Rocky linux 시스템 리소스 정보 가져오기(hostname, cpu, ram 사용량 , gpu 사용량, disk 사용량 등)

반응형

개발을 하다보면 시스템 정보를 계속 모니터링 해야하는 경우가 많습니다. 

 

현재 구동중인 프로그램이 CPU 부하를 얼마나 쓰는지 RAM은 얼마나 사용하는지.

memory leak이 있는지 등등..

 

관련된 정보를 알아오는 방법을 알아보겠습니다. 

 

파이썬에서는 주로 psutil과  GPUtil 을 사용하여 정보를 얻을 수 있습니다. 

 

1. 각종 정보 받아오기 소스 

 

import psutil
import GPUtil
import socket


# 자신의 호스트 이름 가져오기
def get_hostname() :

    my_hostname = socket.gethostname()
    print(f"hostname: {my_hostname}")



#CPU/RAM 정보 가져오기    
def get_cpu_ram():
    cpu = psutil.cpu_percent()
    print(f"cpu: {cpu:.2f}/100 %")
    ram = psutil.virtual_memory()
    ram_used = f"{ram.used/1024**3:.2f}"
    ram_total = f"{ram.total/1024**3:.2f}"
   
    print(f"ram : {ram_used}/{ram_total} GB")      

#GPU/RAM/온도 정보 가져오기    
def get_gpu():
    gpus = GPUtil.getGPUs()
    for gpu in gpus:
        print(f"gpu {gpu.id}: {gpu.name}")
        print(f"  gpu Load: {gpu.load*100}%")
        print(f"  gpu Free Memory: {gpu.memoryFree}MB")
        print(f"  gpu Used Memory: {gpu.memoryUsed}MB")
        print(f"  gpu Total Memory: {gpu.memoryTotal}MB")
        print(f"  gpu Temperature: {gpu.temperature} C")
    if not gpus:
        print("No gpu found.")
   
#마운트된 disk 정보 가져오기        
def get_disk() :        
    # 디스크 파티션 정보 가져오기
    partitions = psutil.disk_partitions()
   
    # 관심 있는 마운트포인트만 필터링
    interesting_mountpoints = {'/','/home'}

    # 각 파티션에 대해 사용량 정보를 가져오기
    for partition in partitions:
       
        mountpoint = partition.mountpoint
       
        # 중복이나 필요 없는 시스템 경로를 제외 조건으로 걸러냄
        #if mountpoint not in interesting_mountpoints and not mountpoint.startswith('/etc') and not mountpoint.startswith('/usr'):
        #    interesting_mountpoints.add(mountpoint)
           
        # 설정한 관심 있는 경로만 처리할때
        if mountpoint in interesting_mountpoints:
       
            print(f"Device: {partition.device}")
            print(f"  Mountpoint: {partition.mountpoint}")
            print(f"  File system type: {partition.fstype}")

            try:
                # 디스크 사용량 정보 가져오기
                usage = psutil.disk_usage(partition.mountpoint)
                print(f"  Total Size: {usage.total / (1024 ** 3):.2f} GB")
                print(f"  Used: {usage.used / (1024 ** 3):.2f} GB")
                print(f"  Free: {usage.free / (1024 ** 3):.2f} GB")
                print(f"  Usage Percentage: {usage.percent}%")
            except PermissionError:
                # 특정 파티션에 대한 접근 권한이 없을 수 있습니다.
                print("  Could not access this partition.\n")
               
       
if __name__ == '__main__' :
   
    get_hostname()    
    get_cpu_ram()
    get_gpu()
    get_disk()
 

 

 

실행 결과를 보겠습니다. 

 

hostname: ubuntu219


cpu: 0.00/100 %
ram : 2.49/31.20 GB


gpu 0: NVIDIA GeForce RTX 2080 Ti
  gpu Load: 0.0%
  gpu Free Memory: 11003.0MB
  gpu Used Memory: 15.0MB
  gpu Total Memory: 11264.0MB
  gpu Temperature: 39.0 C

 

Device: /dev/sda6
  Mountpoint: /
  File system type: ext4
  Total Size: 857.06 GB
  Used: 660.67 GB
  Free: 152.78 GB
  Usage Percentage: 81.2%
Device: /dev/sdc1
  Mountpoint: /home
  File system type: fuseblk
  Total Size: 1863.01 GB
  Used: 909.28 GB
  Free: 953.74 GB
  Usage Percentage: 48.8%

 

 

반응형