Sobes.tech
Back to questions
Junior — Middle
79

Какими способами можно получить информацию о текущих нагрузках системы?

Companies where asked
ГК Промэкспертиза

Answer from AI

sobes.tech AI

Для получения информации о текущих нагрузках системы в C/C++ можно использовать несколько подходов:

  1. Системные вызовы и API:

    • На Linux/Unix системах можно читать данные из файлов /proc (например, /proc/loadavg для средней загрузки процессора).
    • Использовать функции, такие как getloadavg() для получения средней нагрузки.
    • Вызовы sysconf() для получения информации о количестве процессоров.
  2. Использование библиотек и инструментов мониторинга:

    • Библиотеки, оборачивающие системные вызовы, например, libprocps.
    • Вызов внешних утилит через popen(), например, top, vmstat, uptime и парсинг их вывода.
  3. Сбор метрик вручную:

    • Использование функций для измерения времени выполнения, использования памяти и CPU в рамках программы.

Пример чтения средней нагрузки с помощью getloadavg():

#include <stdio.h>
#include <stdlib.h>

int main() {
    double loadavg[3];
    if (getloadavg(loadavg, 3) != -1) {
        printf("Load averages: 1 min: %.2f, 5 min: %.2f, 15 min: %.2f\n", loadavg[0], loadavg[1], loadavg[2]);
    } else {
        printf("Failed to get load averages\n");
    }
    return 0;
}