Распределение ресурсов исполняемого файла C на двух разных компьютерах Linux - PullRequest
3 голосов
/ 17 апреля 2020

Я компилирую и запускаю следующий файл c на двух разных компьютерах linux (Arch на ноутбуке Huawei 8 ГБ ОЗУ, Ubuntu на iMa c 2017 32 ГБ ОЗУ).

#include <stdio.h>
#include <sys/resource.h>

long get_mem_usage()
{
    struct rusage myusage;
    getrusage(RUSAGE_SELF, &myusage);
    return myusage.ru_maxrss;
}

int main()
{
    printf("usage: %ld\n", get_mem_usage());
    return 0;
}

компиляторы: g cc (Ubuntu 9.2.1-9ubuntu2) 9.2.1

g cc (Arch Linux 9.3.0-1) 9.3.0

в Ubuntu , Я последовательно получаю:

usage: 2432
usage: 2432
usage: 2432

На Arch вывод был непоследовательным и намного большим:

usage: 100584
usage: 100964
usage: 100524

Я довольно смущен, почему эти значения отличаются в такой степени между двумя компьютеры / дистрибутивы. Какова причина этого шаблона распределения памяти? Компилятор назначает эти ресурсы памяти? Или ядро ​​определяет распределение памяти?

1 Ответ

1 голос
/ 21 апреля 2020

Исполняемый файл, скорее всего, делился памятью с несколькими другими процессами. Я остановил среду рабочего стола и уничтожил большинство нежелательных программ и получил постоянное значение 1500. Хотя с включенным диспетчером рабочего стола для процесса выделялись различные объемы памяти.

...