LINUX.ORG.RU

длительность выполнения процессов


0

0

Я отфоркнул процесс, который запускает внеешнюю прога, а та впустую использует процессорное время :)) То, что она действительно загружает проц - свидетельствует top, а то, что она является потомком нашего процесса - pstree. Теперь я хочу узнать, сколько реально процессорного времени она проработала. Для этого я смотрю файл /proc/mypid/stat, где mypid - pid НАШЕГО процесса, а не форканого ребенка. Из этого файла читаю чиселки cutime u cstime, которые равны количеству квантов, которые провели дети нашего процесса в режиме юзера(cutime) u в режиме ядря(cstime) (для тех кто в танке - man 5 proc, только если ман русский, то там опечатка: cutime u cstime - это количество квантов времени, израсходованных только потомками нашего процесса). А теперь главный фокус: эти числа всегда равны нулю Теперь про то как я получаю эти числа. Дело происходит в перле. Я испробовал 2 способа: встроенную функцию times и вызов моей c-проги, что-то вроде `./ctimes`, где вот код ctimes.c:

#include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]){ char fname[1000]; FILE *inp; int nDummy; char cDummy; char sDummy[100]; int utime=-1, stime=-1, cutime=-1, cstime=-1; sprintf(fname, "/proc/%s/stat", argv[1]); if( NULL== (inp = fopen(fname, "rt")) )return 0; fscanf(inp, "%d %s %c %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &nDummy, &cDummy, sDummy, &nDummy, &nDummy, &nDummy, &nDummy, &nDummy, &nDummy, &nDummy, &nDummy, &nDummy, &nDummy, &utime, &stime, &cutime, &cstime); printf("%d %d %d %d\n", utime, stime, cutime, cstime); return 0; }

в если вызывать times, то получаем чистый ноль. Если вызывать эту программу, то получается 1-4 кванта, что явно маловато (это как раз насколько я себе представляю издержки на вызов этой проги - она ведь тоже получается нашим потомком). фуххх, кажется все. может кто-нибудь сталкивался с подобным или знает где собака зарыта?

anonymous

Я не вникал детально в код, но многие эффекты с квантами UNIX имеют свои отчётливые фокусы, я тоже много раз наблюдал "0", там где ожидал (и видел ... по часам) реальные величины. Кое-что об службах времени, но в другом из UNIX - QNX, я писал здесь: http://qnx.org.ru/forum/viewtopic.php?topic=812&forum=14&0 Во всём, что связано с хронометражом - там гораздо больше общего, чем частностей: посмотрите, может что подскажет?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.