Sure, the code is attached.
On Fri, Feb 25, 2011 at 5:15 PM, Daniel Baluta <[email protected]>wrote:
> On Fri, Feb 25, 2011 at 8:22 PM, Mauro Romano Trajber <[email protected]>
> wrote:
> > Thanks Enrico and Daniel, you're right. glibc was caching getpid(); but
> this
> > is not the root cause of this behavior.
> > Going further, I decide to use call getpid without glibc, using
> > syscall(SYS_getpid) to test this behavior and it happened again.
> > Calling it once, the test consumes about 7k CPU cycles and 10 calls
> consumes
> > about 10k CPU cycles.
> > Any ideas ?
>
> Can you post a pointer to your code and information about how you got
> this numbers?
>
> thanks,
> Daniel.
>
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <sys/syscall.h>
#include <sched.h>
long mygetpid() {
return syscall(SYS_getpid);
}
inline volatile long long RDTSC() {
register long long TSC asm("eax");
asm volatile (".byte 15, 49" : : : "eax", "edx");
return TSC;
}
int main(int argc, char *argv[]) {
cpu_set_t cpu;
CPU_ZERO(&cpu);
CPU_SET(0, &cpu);
if (sched_setaffinity(0, sizeof(cpu), &cpu) < 0) {
perror("sched_setaffinity");
exit(1);
}
int i, qtd = 0;
if (argc == 2) {
qtd = atoi(argv[1]);
}
long long start = RDTSC();
for (i = 0; i < qtd; i++) {
mygetpid();
}
long long end = RDTSC();
printf("%lld\n", (end - start));
return 0;
}
_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies