У меня есть программа, которая несколько раз перезагружает одну и ту же фиктивную разделяемую библиотеку. После каждой перезагрузки я использую getrusage
, чтобы получить ru_maxrss
. Результаты отличаются от запуска к запуску. Я предполагаю, что единственная разница - это смещение отображаемых областей. но как это может повлиять на ru_maxrss
? Я использую Ubuntu 18.04.2 LTS.
код для основного
#include <string.h>
#include <stdlib.h>
#include <sys/resource.h>
#include <dlfcn.h>
#include <stdio.h>
#include <assert.h>
#include <unistd.h>
const char *lib = "./dumy/libdumy.so";
long rss[1000];
int main(int argc, char **argv) {
assert (argc == 2);
int n = atoi(argv[1]);
struct rusage usg;
for (size_t i = 1; i <= n; ++i) {
void *handle = dlopen(lib, RTLD_LAZY);
assert (handle != NULL);
assert (dlclose(handle) == 0);
assert (getrusage(RUSAGE_SELF, &usg) == 0);
rss[i] = usg.ru_maxrss;
}
for (size_t i = 1; i <= n; ++i) {
printf("%ld\n", rss[i]);
}
}
код для куклы
int f() {}
Я ожидаю, что результат будет одинаковым при каждом запуске. фактические выходные данные иногда все 1392
, иногда все 1448
, а иногда 1440
с последующим 1448
и т. д.