[c++] C++로 리눅스 시스템 리소스 관리하기

리눅스 시스템에서의 리소스 관리는 매우 중요합니다. C++을 사용하여 리눅스의 CPU, 메모리 및 디스크 리소스 등을 관리하는 방법에 대해 알아보겠습니다.

1. CPU 리소스 관리

리눅스 시스템에서 CPU 리소스를 관리하려면 sched.h 헤더 파일을 사용하여 CPU 스케쥴링 정책, CPU 점유율, CPU 코어 수 등을 조사할 수 있습니다.

#include <sched.h>
#include <stdio.h>

int main() {
    int numCores = sysconf(_SC_NPROCESSORS_ONLN);
    printf("Number of CPU cores: %d\n", numCores);

    cpu_set_t cpuSet;
    CPU_ZERO(&cpuSet);
    CPU_SET(0, &cpuSet); // CPU 코어 0에 프로세스 바인딩

    sched_setaffinity(0, sizeof(cpuSet), &cpuSet); // 현재 프로세스를 CPU 코어 0에 바인딩

    return 0;
}

2. 메모리 리소스 관리

메모리 관리를 위해 리눅스에서는 프로세스의 가용한 가상 메모리 공간 및 물리적 메모리 사용량을 관찰할 수 있습니다. /proc/meminfo 파일 등을 통해 메모리에 관한 정보를 조회할 수 있습니다.

#include <fstream>
#include <iostream>

int main() {
    std::ifstream memInfo("/proc/meminfo");
    if (memInfo.is_open()) {
        std::string line;
        while (std::getline(memInfo, line)) {
            if (line.find("MemTotal") != std::string::npos || line.find("MemFree") != std::string::npos) {
                std::cout << line << std::endl;
            }
        }
    }
    return 0;
}

3. 디스크 리소스 관리

리눅스 시스템에서 디스크 리소스를 관리하려면 sys/statvfs.h 헤더 파일을 사용하여 디스크의 가용한 공간, 디스크 총 용량 등을 확인할 수 있습니다.

#include <sys/statvfs.h>
#include <iostream>

int main() {
    struct statvfs diskInfo;
    if (statvfs("/", &diskInfo) == 0) {
        unsigned long long totalSpace = diskInfo.f_frsize * diskInfo.f_blocks;
        unsigned long long freeSpace = diskInfo.f_frsize * diskInfo.f_bfree;
        std::cout << "Total disk space: " << totalSpace << std::endl;
        std::cout << "Free disk space: " << freeSpace << std::endl;
    }
    return 0;
}

리눅스 시스템의 리소스를 관리하기 위한 C++ 코드를 작성하여 시스템 리소스 사용 및 모니터링에 도움이 되길 바랍니다.

참고 자료