BENCH (ns/op) min mediana --- A. piso de syscall --- getppid (syscall nulo) 78.7 97.2 (n=300000) clock_gettime MONOTONIC (vDSO) 31.2 31.7 (n=300000) clock_gettime MONOTONIC (syscall) 143.8 147.0 (n=200000) getpid (vDSO no; glibc syscall) 71.1 74.3 (n=300000) sched_yield 174.2 180.9 (n=200000) --- B. contabilidad de proceso propio --- getrusage(RUSAGE_SELF) 238.1 244.6 (n=200000) clock_gettime(PROCESS_CPUTIME) 214.0 245.8 (n=200000) pread+parse /proc/self/stat (fd abierto) 1271.4 1334.6 (n=100000) open+read+parse /proc/self/stat 2691.7 2801.0 (n=50000) open+read+parse /proc/self/status(RSS) 4642.6 4857.3 (n=30000) --- C. liveness de otro proceso --- access(/proc/) [lo que se usa hoy] 344.9 352.4 (n=200000) kill(pid,0) 119.0 126.0 (n=300000) pidfd_send_signal(fd,0) [sin carrera] 119.0 129.1 (n=300000) pidfd_open+close 413.7 423.4 (n=100000) --- D. barrido de /proc (enumeracion) --- procesos vivos = 291 solo readdir(/proc) 106.0 121.2 (us/barrido) readdir + stat de cada pid 990.7 1061.7 (us/barrido) => coste por proceso 3404.3 3648.5 (ns/proceso) --- E. creacion de procesos --- fork + _exit + waitpid 83874.0 87347.9 (n=400) vfork + execve(/bin/true) + wait 324621.2 353117.9 (n=300) posix_spawn(/bin/true) + wait 323507.4 335470.5 (n=300) --- F. IPC: round-trip entre 2 hilos (mismo cpu) --- pthread_mutex lock+unlock (sin disputa) 8.6 8.7 (n=1000000) pipe read/write 2955.8 (RTT) socketpair AF_UNIX 3638.5 (RTT) eventfd 2507.1 (RTT) kill(self,SIGUSR1) + handler 1165.1 1188.5 (n=200000) --- G. temporizadores --- nanosleep(1ms) overshoot 65179.4 70381.1 (sobrecoste ns sobre 1ms)