[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++ 코드를 작성하여 시스템 리소스 사용 및 모니터링에 도움이 되길 바랍니다.