Ubuntu下C++获取CPU使用率、GPU使用率
时间: 2024-09-10 12:10:34 浏览: 95
在Ubuntu下获取CPU使用率和GPU使用率可以通过多种方式实现。对于CPU,通常可以使用系统提供的工具和接口,比如`/proc/stat`文件或`top`、`htop`等命令行工具。对于GPU,通常需要使用专门的库或者工具,例如NVIDIA的`nvidia-smi`或AMD的`rocm-smi`。
1. CPU使用率获取方法:
- 使用`/proc/stat`文件:这个文件包含了系统自启动以来的CPU统计信息。通过读取这个文件并计算相关时间数据,可以计算出CPU的使用率。
- 使用`top`或`htop`命令:这些命令会显示实时的CPU使用情况。`htop`是一个增强版的`top`,提供了更友好的用户界面和更多的功能。
2. GPU使用率获取方法:
- 使用`nvidia-smi`命令:这是NVIDIA提供的一个用于监视和管理GPU的工具。通过执行`nvidia-smi --query-gpu=utilization.gpu`命令,可以获取到当前GPU的使用率。
- 对于AMD的GPU,可以使用`rocm-smi`工具来获取GPU使用率。
以下是一个简单的C++示例代码,展示如何通过系统调用`nvidia-smi`来获取GPU使用率:
```cpp
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <sstream>
std::string getGPUUtilization() {
std::string command = "nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits";
std::string utilization;
FILE* pipe = popen(command.c_str(), "r");
if (!pipe) throw std::runtime_error("popen() failed!");
try {
if (fgets(&utilization[0], utilization.capacity(), pipe) == NULL) {
throw std::runtime_error("fgets() failed!");
}
} catch (...) {
pclose(pipe);
throw;
}
pclose(pipe);
return utilization;
}
int main() {
try {
std::string gpuUtil = getGPUUtilization();
std::cout << "GPU utilization: " << gpuUtil << "%" << std::endl;
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
在编译时,需要链接到`nvidia-ml`库:
```bash
g++ -o get_gpu_util get_gpu_util.cpp -lnvidia-ml
```
请注意,上述代码适用于NVIDIA的GPU,如果你使用的是AMD的GPU,你需要查找相应的工具和命令。
阅读全文