Make process title - % complete

Ivan Voras ivoras at freebsd.org
Tue Oct 20 12:42:55 UTC 2009


Alex Kozlov wrote:

> Of course ps or top output much more convenient, but if setproctitle so
> expencive and will be called so often, then SIGINFO may be good
> compromise. 

Regarding speed of setproctitle(), here are some microbenchmark results 
from the attached test source:

getpid: 3661124.75 iterations/s
setproctitle: 591357.56 iterations/s

Meaning, setprocitle() is around 6 times more expensive than getpid(), 
meaning it can only be pulled off nearly 600,000 calls/s on a 2.3 GHz 
Core 2 CPU.

I really want to be enlightened about how it could affect wallclock time 
in make(1).

----

#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#define NITER 1e7

double now() {
	struct timeval tp;
	gettimeofday(&tp, NULL);
	return tp.tv_sec + (double)tp.tv_usec / 1e6f;
}

int main() {
	double t1, t2, t3;
	int i;

	t1 = now();
	for (i = 0; i < NITER; i++)
		getpid();
	t2 = now() - t1;

	printf("getpid: %0.2f iterations/s\n", (float)(NITER/t2));

	t1 = now();
	for (i = 0; i < NITER; i++)
		setproctitle("t%d", i);
	t3 = now() - t1;

	printf("setproctitle: %0.2f iterations/s\n", (float)(NITER/t3));
}



More information about the freebsd-hackers mailing list