did a simple test under FreeBSD/amd64 on intel atom 1.8GHz

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
main() {
 int a;
 for(a=0;a<10000000;a++) read(0,(void*)&a,0);
}


takes over 5 seconds (10^10 cycles) to execute system call doing nothing 10^7 times. it did this in a loop so even no cache refill effect should make a difference.

so 1000 CPU cycles on 2-way superscalar in-order CPU per system call with everything in L1 cache. for me it is way too much.

Huge overhead of passing through ancient x86 gate descriptors are not present - FreeBSD uses syscall instruction.

i found that doing other system calls that too do - in effect - nothing, doesn't change that figure much.

tried to browse FreeBSD sources and found it quite complex.

As i for now don't have dragonfly installed on real computer at present (VM is not a place to make good test) so could anyone perform that test on dragonfly?

Reply via email to