Benchmarking tools for measuring operating system performance
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
README.md
UNLICENSE

README.md

OSBench

This is a collection of benchmarks that aim to measure the performance of operating system primitives, such as process and thread creation.

Building

To build the benchmarks you need a C compiler, meson and ninja.

mkdir out
cd out
meson --buildtype=release ../src
ninja

Micro benchmarks

All benchmarks run their work for five seconds, and the fastest pass is reported.

create_threads

Create 100 threads and wait for them to finish. Each thread does nothing (just return).

  • POSIX: pthread_create(), pthread_join()
  • WIN32: _beginthreadex(), WaitForSingleObject(), CloseHandle()

create_processes

Create 100 processes and wait for them to finish. Each process does nothing (just exit).

  • Unix: fork(), waitpid()
  • WIN32: Not implemented (Windows lacks the corresponding functionality).

launch_programs

Launch 100 programs and wait for them to finish. Each program does nothing (just exit).

  • Unix: fork(), execlp(), waitpid()
  • WIN32: CreateProcess(), WaitForSingleObject(), CloseHandle()

create_files

Create 65,534 files, write 32 byts of data to each file, and then delete them.

  • fopen(), fwrite(), fclose(), remove()

NOTE: To measure filesystem/kernel performance rather than storage medium performance, consider using a RAM disk.

mem_alloc

Allocate 1,000,000 small chunks of memory, and then free them. Each chunk is 4-128 bytes in size.

  • malloc(), free()