lkml.org 
[lkml]   [1999]   [Nov]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectProfiling timer not delivered during syscalls?
Date
I did this test on a Red Hat 6.1 system (glibc 2.1.2) with kernel
2.2.13.

I compiled the appended program like so:

gcc -O2 -Wall -g -pg -o foo foo.c

*** Note the -pg option; it is the whole point of the exercise ***

I ran it, and found that the profiling timer is not being delivered
while the program is in select(). In fact, I have not been able to
find a single system call during which the profiling signal is
delivered. (I do admit, so far I have only tried select(), sleep(),
and pthread_join().)

Is this behavior expected? I would have thought that time spent in
system calls would be pretty important when profiling an application.

- Pat

======================================================================
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/types.h>

static __sighandler_t orig_sigprof_handler;

static void
handle_sigprof (int sig, struct sigcontext cxt)
{
fprintf (stderr, "here\n");

if (orig_sigprof_handler != NULL)
((void (*)(int, struct sigcontext))orig_sigprof_handler) (sig, cxt);
}

static void
do_nothing (void)
{
return;
}

int
main (int argc, char *argv[])
{
struct sigaction act;
int i;
struct timeval timeout = { 10, 0 };

/* Get old signal handler. */
if (__sigaction (SIGPROF, NULL, &act) != 0)
{
perror ("first sigaction");
exit (1);
}

/* Install new signal handler, preserving flags and such. */
orig_sigprof_handler = act.sa_handler;
act.sa_handler = (__sighandler_t)handle_sigprof;
if (__sigaction (SIGPROF, &act, NULL) != 0)
{
perror ("second sigaction");
exit (1);
}

select (0, NULL, NULL, NULL, &timeout);
fprintf (stderr, "select finished\n");
for (i=0 ; i<2000000 ; i++)
do_nothing();

return 0;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:54    [W:0.141 / U:0.140 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site