README.md 1.9 KB
Newer Older
1
2
Fred / Libfibre
===============
Martin Karsten's avatar
Martin Karsten committed
3

4
Fred / Libfibre is an M:N user-level threading runtime without preemption, thus the term <i>fibre</i>. It demonstrably supports massive session concurrency in network/cloud servers with minimal overhead.
Martin Karsten's avatar
Martin Karsten committed
5

6
Running `make all` builds the fibre library in `src/libfibre.so` along with several example/test programs: `test1`, `ordering`, `threadtest`, `echotest`, and `webserver` in the subdirectory `apps`.
Martin Karsten's avatar
Martin Karsten committed
7

Martin Karsten's avatar
Martin Karsten committed
8
9
10
The build process should download all git submodules.
If that fails, download manually using `git submodule update --init --recursive`.

Martin Karsten's avatar
Martin Karsten committed
11
12
Running `make doc` builds documentation in `doc/html/index.html`.

Martin Karsten's avatar
Martin Karsten committed
13
Both Linux/epoll and FreeBSD/kqueue are supported, but significantly more testing has been done for Linux/epoll.
Martin Karsten's avatar
Martin Karsten committed
14

Martin Karsten's avatar
Martin Karsten committed
15
16
17
18
19
20
21
### Results

The runtime system has been described and evaluated in our Sigmetrics 2020
paper [User-level Threading: Have Your Cake and Eat It Too](https://cs.uwaterloo.ca/~mkarsten/papers/sigmetrics2020.html).
In this paper, it has been named <b>Fred</b> to satsify anonymity
requirements during peer review - and to distinguish it from other user-level threading runtimes.

Martin Karsten's avatar
Martin Karsten committed
22
23
### Contributors

24
25
The runtime has originally been developed in close collaboration with Saman Barghi.

26
In addition, the following students (in alphabetical order) have helped with various parts of Libfibre:
Martin Karsten's avatar
Martin Karsten committed
27
28
29

- Qin An (FreeBSD/kqueue)
- Bilal Akhtar (gdb extension)
30
- Peter Cai (bug fixes)
31
- Peng Chen (split stack)
32
- Bryant Curto (bug fixes)
33
- Peiran Hong (API/Apache)
34
- Matthew May (MCS queue with timeout)
Martin Karsten's avatar
Martin Karsten committed
35
- Wen Shi (gdb extension)
36
- Kai Sun (ARM64, mutex locks)
37
38
- Shuangyi Tong (event scopes)
- Gan Wang (API/Apache)
Martin Karsten's avatar
Martin Karsten committed
39

40
41
 All bugs are mine though. ;-)

Martin Karsten's avatar
Martin Karsten committed
42
43
### License

44
Libfibre is currently distributed under the GNU GPL license, although this could change in the future. See <tt>[LICENSE](LICENSE)</tt> for details.
Martin Karsten's avatar
Martin Karsten committed
45
46
47
48

### Feedback / Questions

Please send any questions or feedback to mkarsten|**at**|uwaterloo.ca.