Может ли какая-либо библиотека или инструменты рассчитать использование процессора и некоторые другие параметры для другого процесса в C / C ++ под Linux?

Теперь мой проект основан на многопроцессорности, и я пытаюсь вычислить некоторые параметры каждого процесса, такие как использование процессора, использование io. Я использую C ++, и мой проект работает под Linux. Может ли какой-нибудь проект lib или open source решить эту проблему?

0

Решение

Ядро выставляет такие параметры через /proc файловая система, см. Proc (5) для большего.

Файлы внутри /proc/ обычно являются текстовыми файлами и должны читаться последовательно (они генерируются на лету, как трубы; часто стат (2) на них даёт 0 бессмысленных размеров). Чтение этих псевдофайлов не требует дискового ввода-вывода, поэтому выполняется очень быстро.

Попробуйте, например, следующие команды:

 cat /proc/self/maps
cat /proc/$$/status

Например, чтобы получить размер программы progsize (на самом деле размер процесса) процесса PID pid вы могли бы сделать:

 long progsize= -1;
pid_t pid = something();
char path[32];
snprintf (path, sizeof(path), "/proc/%d/statm", (int) pid);
FILE *fil = fopen(path, "r");
if (fil) {
fscanf(fil, "%ld", &progsize);
fclose(fil);
} else { perror(path); exit(EXIT_FAILURE); };

Возможно, вы захотите разобрать /proc/1234/stat для определения времени (и размера резидентного набора, то есть используемой оперативной памяти и т. д. и т. д.) информации pid 1234.

Для ваших законченных дочерних процессов используйте также wait4 (2) который заполняет struct rusage о дочернем процессе, см. также getrusage (2)

1

Другие решения


По вопросам рекламы [email protected]