mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Added a benchmark for counting context-switches per second.
This commit is contained in:
parent
b0859c6d92
commit
63cde07004
2 changed files with 24 additions and 0 deletions
|
@ -5,6 +5,7 @@ include ../crosscompilemakefile.mak
|
|||
INITRDDIR:=../initrd
|
||||
LOCALBINARIES:=\
|
||||
benchsyscall \
|
||||
benchctxswitch \
|
||||
|
||||
BINARIES:=$(addprefix $(INITRDDIR)/,$(LOCALBINARIES))
|
||||
|
||||
|
|
23
bench/benchctxswitch.cpp
Normal file
23
bench/benchctxswitch.cpp
Normal file
|
@ -0,0 +1,23 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
pid_t slavepid = fork();
|
||||
if ( slavepid < 0 ) { perror("fork"); return 1; }
|
||||
if ( slavepid == 0 ) { while ( true ) { usleep(0); } exit(0); }
|
||||
|
||||
uintmax_t start;
|
||||
if ( uptime(&start) ) { perror("uptime"); return 1; }
|
||||
uintmax_t end = start + 1ULL * 1000ULL; // 1 second
|
||||
size_t count = 0;
|
||||
uintmax_t now;
|
||||
while ( !uptime(&now) && now < end ) { usleep(0); count += 2; /* back and forth */ }
|
||||
printf("Made %zu context switches in 1 second\n", count);
|
||||
|
||||
kill(slavepid, SIGKILL);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue