Назад к вопросам
Junior — Middle
80
Какими способами можно получить информацию о текущих нагрузках системы?
Компании, где спрашивали
ГК Промэкспертиза
Ответ от нейросети
sobes.tech AI
Для получения информации о текущих нагрузках системы в C/C++ можно использовать несколько подходов:
-
Системные вызовы и API:
- На Linux/Unix системах можно читать данные из файлов
/proc(например,/proc/loadavgдля средней загрузки процессора). - Использовать функции, такие как
getloadavg()для получения средней нагрузки. - Вызовы
sysconf()для получения информации о количестве процессоров.
- На Linux/Unix системах можно читать данные из файлов
-
Использование библиотек и инструментов мониторинга:
- Библиотеки, оборачивающие системные вызовы, например,
libprocps. - Вызов внешних утилит через
popen(), например,top,vmstat,uptimeи парсинг их вывода.
- Библиотеки, оборачивающие системные вызовы, например,
-
Сбор метрик вручную:
- Использование функций для измерения времени выполнения, использования памяти и 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;
}