【发布时间】:2020-03-01 02:35:49
【问题描述】:
我正在尝试在 Linux 中以编程方式监控 RSS(驻留集大小)(通过解析 /proc/self/stat),但似乎 RSS 在我分配内存时并没有增加。
例如,考虑以下程序,它分配 10 个 4KB 缓冲区并在每次分配后打印 RSS。
int main(int argc, char** argv) {
const long pageSizeKb = sysconf(_SC_PAGE_SIZE) / 1024;
cout << "pageSizeKB is " << pageSizeKb << "\n";
std::vector<std::vector<char>> buffers;
for (int i = 0; i < 10; i++) {
buffers.emplace_back(4*1024);
std::string line;
getline(ifstream("/proc/self/stat", ios_base::in), line);
std::vector<string> stats;
boost::split(stats, line, boost::is_any_of(" "));
cout << "allocated " << (i+1)*4 << "KB" << "\tRSS is " << stats[23] << "\n";
}
}
它的输出是:
pageSizeKB is 4
allocated 4KB RSS is 53507
allocated 8KB RSS is 53507
allocated 12KB RSS is 53507
allocated 16KB RSS is 53507
allocated 20KB RSS is 53507
allocated 24KB RSS is 53507
allocated 28KB RSS is 53507
allocated 32KB RSS is 53507
allocated 36KB RSS is 53507
allocated 40KB RSS is 53507
每次分配后RSS不应该加一吗(页面为4KB)?
谢谢
【问题讨论】:
-
stackoverflow.com/questions/7880784/… - 根据这个问题,RSS 不显示被分页的内存。也许这就是它不改变的原因?