<reponame>lc0305/bachelor_thesis
@ARTICLE{sutter:free_lunch,
  author = {<NAME>},
  title = {{The Free Lunch Is Over}},
  year = {2005},
  url = {http://www.gotw.ca/publications/concurrency-ddj.htm},
  note = {[Online; accessed 20-December-2020]}
}

@ONLINE{schmidt:reactor,
  author = {Schmidt, <NAME>.},
  title = {Reactor: An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events},
  year = {1995},
  publisher = {Department of Computer Science, Washington University, St. Louis, MO},
  url = {https://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf},
  note = {[Online; accessed 21-December-2020]},
}

@ONLINE{kegel:c10k,
  author = {<NAME>},
  title = {The C10K problem},
  year = {1999},
  publisher = {kegel.com},
  url = {http://www.kegel.com/c10k.html},
  note = {[Online; accessed 19-December-2020]}
}

@INPROCEEDINGS{schmidt:proactor,
  author = {<NAME> and <NAME> and <NAME>},
  title = {Proactor: An Object Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events},
  year = {1997},
  publisher = {Department of Computer Science, Washington University, St. Louis, MO},
  url = {https://www.dre.vanderbilt.edu/~schmidt/PDF/proactor.pdf},
  booktitle = {4th annual Pattern Languages of Programming conference},
  location = {Allerton Park, Illinois},
}

@ONLINE{lerche:scheduler,
  author = {<NAME>},
  title = {{Making the Tokio scheduler 10x faster}},
  year = {2019},
  publisher = {tokio.rs},
  url = {https://tokio.rs/blog/2019-10-scheduler},
  note = {[Online; accessed 03-January-2021]}
}

@ONLINE{lerche:preemption,
  author = {<NAME>},
  title = {{Reducing tail latencies with automatic cooperative task yielding}},
  year = {2020},
  publisher = {tokio.rs},
  url = {https://tokio.rs/blog/2020-04-preemption},
  note = {[Online; accessed 03-January-2021]}
}

@ONLINE{majkowski:io_submit,
  author = {<NAME>},
  title = {{io\_submit: The epoll alternative you’ve never heard about}},
  year = {2019},
  publisher = {blog.cloudflare.com},
  url = {https://blog.cloudflare.com/io_submit-the-epoll-alternative-youve-never-heard-about/},
  note = {[Online; accessed 04-January-2021]}
}

@ONLINE{drepper:futex,
  author = {<NAME>},
  year = {2004},
  month = {07},
  publisher = {Red Hat, Inc},
  title = {Futexes Are Tricky},
  url = {https://dept-info.labri.fr/~denis/Enseignement/2008-IR/Articles/01-futex.pdf},
  note = {[Online; accessed 18-February-2021]}
}

@ONLINE{andre:tokio,
  author = {<NAME>},
  year = {2020},
  month = {11},
  publisher = {Blogpost on dev.to},
  url = {https://dev.to/martichou/rust-vs-go-load-testing-400k-req-s-53l},
  title = {Rust vs Go - Load testing webserv (>400k req/s)},
  note = {[Online; accessed 16-Febuary-2021]}
}

@ONLINE{techempower:tokio,
  year = {2021},
  publisher = {techempower.com},
  url = {https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=fortune},
  title = {Web Framework Benchmarks - Round 20},
  note = {[Online; accessed 16-Febuary-2021]}
}

@ONLINE{majkowski:nginx,
  author = {<NAME>},
  title = {{Why does one NGINX worker take all the load?}},
  year = {2017},
  publisher = {blog.cloudflare.com},
  url = {https://blog.cloudflare.com/the-sad-state-of-linux-socket-balancing/},
  note = {[Online; accessed 30-January-2021]}
}

@ONLINE{mandry:await,
  author = {<NAME>},
  title = {How Rust optimizes async/await I + II},
  year = {2019},
  url = {https://tmandry.gitlab.io/blog/posts/},
  note = {[Online; accessed 30-January-2021]}
}

@MANUAL{man:futex,
  editor = {Linux Contributors},
  title = {futex(2) — Linux manual page},
  year = {2020},
  url = {https://man7.org/linux/man-pages/man2/futex.2.html},
  note = {[Online; accessed 16-Febuary-2021]}
}

@MANUAL{man:sendfile,
  editor = {Linux Contributors},
  title = {sendfile(2) — Linux manual page},
  year = {2017},
  url = {https://man7.org/linux/man-pages/man2/sendfile.2.html},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{man:epoll,
  editor = {Linux Contributors},
  title = {epoll(7) — Linux manual page},
  year = {2019},
  url = {https://man7.org/linux/man-pages/man7/epoll.7.html},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{man:poll,
  editor = {Linux Contributors},
  title = {poll(2) — Linux manual page},
  year = {2020},
  url = {https://man7.org/linux/man-pages/man2/poll.2.html},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{man:select,
  editor = {Linux Contributors},
  title = {select(2) — Linux manual page},
  year = {2020},
  url = {https://man7.org/linux/man-pages/man2/select.2.html},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{man:io_submit,
  editor = {Linux Contributors},
  title = {io\_submit(2) — Linux manual page},
  year = {2020},
  url = {https://man7.org/linux/man-pages/man2/io_submit.2.html},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{man:socket,
  editor = {Linux Contributors},
  title = {socket(7) — Linux manual page},
  year = {2020},
  url = {https://man7.org/linux/man-pages/man7/socket.7.html},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{man:signalfd,
  editor = {Linux Contributors},
  title = {signalfd(7) — Linux manual page},
  year = {2020},
  url = {https://man7.org/linux/man-pages/man2/signalfd.2.html},
  note = {[Online; accessed 7-January-2021]}
}

@MANUAL{man:io_uring,
  editor = {Linux Contributors},
  title = {io\_uring\_enter(2) — Linux manual page},
  year = {2020},
  url = {https://manpages.debian.org/unstable/liburing-dev/io_uring_enter.2.en.html},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{man:std_future,
  editor = {Rust-Lang Contributors},
  title = {Trait std::future::Future},
  year = {2020},
  url = {https://docs.rs/rustc-std-workspace-std/1.0.1/std/future/trait.Future.html},
  note = {[Online; accessed 19-January-2021]}
}

@MANUAL{man:crate_future,
  editor = {Future Crate Contributors},
  title = {{Crate futures}},
  year = {2020},
  url = {https://docs.rs/futures/0.3.12/futures/},
  note = {[Online; accessed 19-January-2021]}
}

@MANUAL{doc:tokio_task,
  editor = {tokio-rs},
  title = {Module tokio::task},
  year = {2020},
  url = {https://docs.rs/tokio/1.1.0/tokio/task/index.html},
  note = {[Online; accessed 02-February-2021]}
}

@MANUAL{man:kqueue,
  editor = {FreeBSD Contributors},
  title = {{kqueue(2) — BSD System Calls Manual}},
  year = {2020},
  url = {https://www.freebsd.org/cgi/man.cgi?query=kevent&apropos=0&sektion=0&manpath=FreeBSD+9.0-RELEASE&arch=default&format=html},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{doc:llvm_vec,
  editor = {LLVM Contributors},
  title = {Auto-Vectorization in LLVM},
  year = {2021},
  url = {https://llvm.org/docs/Vectorizers.html},
  note = {[Online; accessed 09-February-2021]}
}

@MANUAL{doc:gcc_vec,
  editor = {GCC Contributors},
  title = {Auto-vectorization in GCC},
  year = {2011},
  url = {https://gcc.gnu.org/projects/tree-ssa/vectorization.html},
  note = {[Online; accessed 09-February-2021]}
}

@MANUAL{man:avx,
  editor = {Intel®},
  title = {Intel® Advanced Vector Extensions Programming Reference},
  year = {2011},
  publisher = {Intel® Corporation},
  url = {https://software.intel.com/sites/default/files/4f/5b/36945},
  note = {[Online; accessed 09-February-2021]}
}

@MANUAL{doc:swisstable,
  editor = {Abseil Contributors},
  title = {Swiss Tables Design Notes},
  url = {https://abseil.io/about/design/swisstables#swiss-tables-design-notes},
  note = {[Online; accessed 03-February-2021]}
}

@ONLINE{intel:soaaos,
  editor = {Intel®},
  title = {How to Manipulate Data Structure to Optimize Memory Use on 32-Bit Intel® Architecture},
  year = {2012},
  publisher = {Intel® Corporation},
  url = {https://software.intel.com/content/www/us/en/develop/articles/how-to-manipulate-data-structure-to-optimize-memory-use-on-32-bit-intel-architecture.html},
  note = {[Online; accessed 09-February-2021]}
}

@INPROCEEDINGS{polross:bloom,
  author = {<NAME> <NAME>.},
  title = {Vectorized Bloom Filters for Advanced SIMD Processors},
  year = {2014},
  publisher = {Association for Computing Machinery},
  booktitle = {DaMoN’14 (10th International Workshop on Data Management on New Hardware (DaMoN 2014), June 22-27 2014},
  address = {Snowbird, UT, USA},
  url = {http://www.cs.columbia.edu/~orestis/damon14.pdf}
}

@ARTICLE{langdale:simdjson,
   title = {Parsing gigabytes of JSON per second},
   volume = {28},
   ISSN = {0949-877X},
   url = {http://dx.doi.org/10.1007/s00778-019-00578-5},
   DOI = {10.1007/s00778-019-00578-5},
   number = {6},
   journal = {The VLDB Journal},
   publisher = {Springer Science and Business Media LLC},
   author = {<NAME> and <NAME>},
   year = {2019},
   month = {Oct},
   pages = {941–960}
}

@INPROCEEDINGS{peassa:thread_per_core,
   title = "The Impact of Thread-Per-Core Architecture on Application Tail Latency",
   keywords = "113 Computer and information sciences",
   author = "<NAME> and <NAME> and <NAME>",
   year = "2019",
   doi = "10.1109/ANCS.2019.8901874",
   language = "English",
   isbn = "978-1-7281-4388-0",
   pages = "1--8",
   booktitle = "Architectures for Networking and Communications Systems (ANCS),2019 ACM/IEEE Symposium on",
   publisher = "IEEE",
   address = "United States",
   note = " 2019 ACM/IEEE Symposium on Architectures for Networking and Communications Systems, ANCS ; Conference date: 24-09-2019 Through 25-09-2019",
}

@ARTICLE{kagan:mmx,
  title = {MMX TM Microarchitecture of Pentium ® Processors With MMX Technology and Pentium ® II Microprocessors},
  author = {<NAME>.},
  number = {3},
  year = {1997},
  publisher = {Intel® Corporation},
  series = {Intel Technology Journal},
  url = {https://www.intel.com/content/dam/www/public/us/en/documents/research/1997-vol01-iss-3-intel-technology-journal.pdf}
}

@INPROCEEDINGS{acm:linux_perf,
   author = {<NAME> al.},
   title = {An Analysis of Performance Evolution of Linux's Core Operations},
   year = {2019},
   isbn = {978-1-4503-6873-5/19/10},
   publisher = {Association for Computing Machinery},
   address = {New York, NY, USA},
   url = {https://doi.org/10.1145/3341301.3359640},
   doi = {10.1145/3341301.3359640},
   booktitle = {Proceedings of the 27th ACM Symposium on Operating Systems Principles},
   pages = {554–569},
   numpages = {16},
   keywords = {performance evolution, Linux, operating systems},
   location = {Huntsville, Ontario, Canada},
   series = {SOSP '19}
}

@ONLINE{turner:retpoline,
  author = {<NAME>},
  title = {{Retpoline: a software construct for preventing branch-target-injection}},
  year = {2020},
  publisher = {support.google.com},
  url = {https://support.google.com/faqs/answer/7625886},
  note = {[Online; accessed 05-January-2021]}
}

@ONLINE{antirez:libuv,
  author = {<NAME>},
  title = {{Redis for win32 and the Microsoft patch}},
  year = {2011},
  url = {http://oldblog.antirez.com/post/redis-win32-msft-patch.html},
  note = {[Online; accessed 05-January-2021]}
}

@ONLINE{redis:introduction,
  editor = {RedisLabs},
  title = {{Introduction to Redis}},
  year = {2021},
  url = {https://redis.io/topics/introduction},
  note = {[Online; accessed 05-January-2021]}
}

@ONLINE{aws:redis,
  editor = {Amazon Web Services},
  title = {Amazon ElastiCache for Redis 5.0.3 enhances I/O handling to boost performance},
  year = {2019},
  publisher = {aws.amazon.com},
  url = {https://aws.amazon.com/about-aws/whats-new/2019/03/amazon-elasticache-for-redis-503-enhances-io-handling-to-boost-performance/},
  note = {[Online; accessed 01-December-2020]}
}

@ELECTRONIC{antirez:io_submit,
  author = {<NAME>},
  year = {2019},
  url = {https://twitter.com/antirez/status/1082230921472999426},
  note = {[Online; accessed 05-January-2021]}
}

@ELECTRONIC{antirez:io_submit2,
  author = {<NAME>},
  year = {2019},
  url = {https://twitter.com/antirez/status/1111165726340075520},
  note = {[Online; accessed 05-January-2021]}
}

@ELECTRONIC{antirez:io_threading,
  author = {<NAME>},
  year = {2019},
  url = {https://twitter.com/antirez/status/1110973405539565569},
  note = {[Online; accessed 05-February-2021]}
}

@ELECTRONIC{glommio:ebpf,
  author = {<NAME>},
  year = {2020},
  url = {https://github.com/DataDog/glommio/issues/237},
  note = {[Online; accessed 01-February-2021]}
}

@ONLINE{linux:zerocopy,
  editor = {Linux Contributors},
  title = {MSG\_ZEROCOPY},
  year = {2018},
  url = {https://github.com/torvalds/linux/blob/master/Documentation/networking/msg_zerocopy.rst},
  note = {[Online; accessed 27-December-2020]}
}

@ONLINE{linux:io_uring,
  editor = {Linux Contributors},
  title = {Efficient IO with io\_uring},
  year = {2019},
  url = {https://kernel.dk/io_uring.pdf},
  note = {[Online; accessed 27-December-2020]}
}

@ONLINE{linux:networking,
  author = {Linux Contributors},
  title = {Networking},
  year = {2020},
  publisher = {The kernel development community},
  url = {https://linux-kernel-labs.github.io/refs/heads/master/labs/networking.html},
  note = {[Online; accessed 27-December-2020]}
}

@ONLINE{linux:dpdk,
  author = {<NAME>},
  title = {How can DPDK access devices from user space?},
  year = {2019},
  publisher = {codilime.com},
  url = {https://codilime.com/how-can-dpdk-access-devices-from-user-space/},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{intel:8256,
  editor = {Intel®},
  title = {PCIe* GbE Controllers Open Source Software Developer’s Manual},
  year = {2012},
  chapter = {2.3 Microarchitecture},
  publisher = {Intel® Corporation},
  url = {https://www.intel.com/content/dam/www/public/us/en/documents/manuals/pcie-gbe-controllers-open-source-manual.pdf},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{arm:v8,
  editor = {ARM®},
  title = {Programmer’s Guide for ARMv8-A},
  year = {2015},
  publisher = {ARM®},
  chapter = {6.3 Memory access instructions, 14.1 Multi-processing systems},
  url = {https://documentation-service.arm.com/static/5fbd26f271eff94ef49c7020},
  note = {[Online; accessed 27-January-2021]}
}

@ONLINE{intel:memory_order,
  editor = {Intel®},
  title = {Intel® 64 Architecture Memory Ordering White Paper},
  year = {2007},
  publisher = {Intel® Corporation},
  url = {http://www.cs.cmu.edu/~410-f10/doc/Intel_Reordering_318147.pdf},
  note = {[Online; accessed 10-January-2021]}
}

@ONLINE{intel:packet,
  author = {<NAME>},
  title = {Design Patterns for Packet Processing Applications on Multi-core Intel® Architecture Processors},
  year = {2008},
  publisher = {Intel® Corporation},
  url = {https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-multicore-packet-processing-paper.pdf},
  note = {[Online; accessed 27-December-2020]}
}

@MANUAL{cppref:memory_order,
  editor = {cpp reference},
  title = {std::memory\_order},
  year = {2020},
  url = {https://en.cppreference.com/w/cpp/atomic/memory_order},
  note = {[Online; accessed 13-January-2021]}
}

@ONLINE{stroustrup:lists,
  author = {<NAME>},
  title = {Are lists evil?},
  url = {https://www.stroustrup.com/bs_faq.html#list},
  note = {[Online; accessed 31-January-2021]}
}

@ARTICLE{lwn:ebpf,
  author = {<NAME>},
  title = {A thorough introduction to eBPF},
  year = {2017},
  publisher = {LWN.net},
  url = {https://lwn.net/Articles/740157/},
  note = {[Online; accessed 18-January-2021]}
}

@ONLINE{bendersky:context,
  author = {<NAME>},
  title = {Measuring context switching and memory overheads for Linux threads},
  year = {2018},
  url = {https://eli.thegreenplace.net/2018/measuring-context-switching-and-memory-overheads-for-linux-threads/},
  note = {[Online; accessed 02-February-2021]}
}

@ONLINE{stonebraker:shared_nothing,
  author = {Stonebraker, Michael},
  title = {The Case for Shared Nothing},
  year = {1986},
  publisher = {University of California Berkeley, Ca.},
  url = {https://dsf.berkeley.edu/papers/hpts85-nothing.pdf},
  note = {[Online; accessed 27-December-2020]}
}

@ONLINE{wikipedia:shared_nothing,
  editor = {Wikipedia Contributors},
  title = {{Shared-nothing architecture}},
  publisher = {wikipedia.org},
  url = {https://en.wikipedia.org/wiki/Shared-nothing_architecture},
  note = {[Online; accessed 27-December-2020]}
}

@ONLINE{wikipedia:futures,
  editor = {Wikipedia Contributors},
  title = {Futures and promises},
  publisher = {wikipedia.org},
  url = {https://en.wikipedia.org/wiki/Futures_and_promises},
  note = {[Online; accessed 02-January-2021]}
}

@INPROCEEDINGS{bahe:garbage_collection,
  author = {<NAME>., <NAME>},
  title = {The Incremental Garbage Collection of Processes},
  publisher = {Massachusetts Institute of Technology Artificial Intelligence Laboratory},
  month = {August},
  year = {1977},
  url = {https://core.ac.uk/download/pdf/4406556.pdf},
  booktitle = {AI PL Conference},
  location = {Rochester, N.Y., USA},
  series = {AI Working Paper 149}
}

@INPROCEEDINGS{amazon:dynamo,
  author = {<NAME>.},
  url = {https://www.allthingsdistributed/files/amazon-dynamo-sosp2007.pdf},
  booktitle = {SOSP 2007},
  location = {Stevenson, WA, USA},
  publisher = {ACM},
  title = {Dynamo: Amazon’s Highly Available Key-value Store},
  year = {2007}
}

@ONLINE{alibaba:redis,
  editor = {Alibaba Cloud},
  url = {https://www.alibabacloud.com/blog/improving-redis-performance-through-multi-thread-processing_594150},
  title = {Improving Redis Performance through Multi-Thread Processing},
  publisher = {alibabacloud.com},
  year = {2018},
  note = {[Online; accessed 03-December-2020]}
}

@ONLINE{redis:io_thread,
  author = {<NAME>},
  url = {https://itnext.io/benchmarking-the-experimental-redis-multi-threaded-i-o-1bb28b69a314},
  title = {Benchmarking the experimental Redis Multi-Threaded I/O},
  publisher = {itnext.io},
  year = {2019},
  note = {[Online; accessed 13-Febuary-2021]}
}

@ONLINE{redis:cluster,
  editor = {RedisLabs},
  url = {https://redis.io/topics/cluster-spec},
  title = {Redis Cluster Specification},
  publisher = {redis.io},
  year = {2018},
  note = {[Online; accessed 29-November-2020]}
}

@ARTICLE{prasad:server,
  author = {<NAME>.},
  url = {http://www.ijstr.org/final-print/dec2019/A-Comparative-Study-Between-Multi-Queue-Multi-Server-And-Single-Queue-Multi-Server-Queuing-System.pdf},
  title = {A Comparative Study Between Multi Queue Multi Server And Single Queue Multi Server Queuing System},
  journal = {International Journal of Scientific \& Technology Research},
  volume = {8},
  number = {12},
  year = {2019},
  issn = {2277-8616}
}

@ONLINE{redislabs:rollback,
  author = {<NAME>},
  url = {https://redislabs.com/blog/you-dont-need-transaction-rollbacks-in-redis/},
  title = {You Don't Need Transaction Rollbacks in Redis},
  publisher = {redislabs.com},
  year = {2020},
  note = {[Online; accessed 30-November-2020]}
}

@ONLINE{ryhl:async,
  author = {<NAME>},
  url = {https://ryhl.io/blog/async-what-is-blocking/},
  title = {Async: What is blocking?},
  year = {2020},
  note = {[Online; accessed 20-January-2021]}
}

@ONLINE{github:io_uring_bench,
  author = {<NAME>},
  title = {{io\_uring bare minimum echo server}},
  year = {2020},
  url = {https://github.com/frevib/io_uring-echo-server},
  note = {[Online; accessed 05-January-2021]}
}

@BOOK{herlihy:art_of_mp,
  author = {<NAME> and <NAME>},
  isbn = {9780124159501},
  publisher = {Morgan Kaufmann},
  title = {The Art of Multiprocessor Programming},
  pages = {13-14, 45-48, 63, 223-238, 369-391, 473-476},
  chapters = {1.5 The Harsh Realities of Parallelization, 3.1 Concurrency and Correctness, 3.8.2 Volatile Fields, 10 Concurrent Queues and the ABA Problem, 16.1 Futures, Scheduling, and Work Distribution, B.5 Caches},
  year = {2008}
}

@BOOK{henpat:computer_arch,
  author = {<NAME>. and Patterson, <NAME>.},
  isbn = {9780123838728},
  publisher = {Morgan Kaufmann},
  title = {Computer Architecture: A Quantitative Approach},
  year = {2012},
  pages = {262-287},
  chapters = {4 Data-Level Parallelism in Vector, SIMD and GPU Architectures},
}

@BOOK{coru:device_drivers,
  author = {<NAME> and <NAME>},
  isbn = {9780596000080},
  publisher = {O'Reilly},
  title = {Linux Device Drivers, Second Edition},
  year = {2001},
  pages = {425-469},
  chapters = {14 Network Drivers},
}

@BOOK{kleppmann:data,
  title = {Designing Data-Intensive Applications},
  isbn = {9781449373320},
  author = {<NAME>},
  year = {2017},
  publisher = {O'Reilly},
  owner = {<NAME>},
  pages = {13-16, 205},
  chapters = {1 Reliable, Scalable, and Maintainable Applications, 6 Partitioning},
}

@BOOK{kerrisk:linuxapi, 
  author = {<NAME>},
  title = {The Linux Programming Interface: A Linux and UNIX System Programming Handbook},
  year = {2010},
  isbn = {1593272200},
  publisher = {No Starch Press},
  address = {USA},
  edition = {1st},
  pages = {1245, 1260-1262, 1370-1372},
  chapters = {60.4 Other Concurrent Server Designs, 61.4 The sendfile() System Call, 63.5.2 The Self-Pipe Trick},
}

@ONLINE{rust:asyncbook,
  editor = {Rust-Lang Contributors},
  title = {Asynchronous Programming in Rust},
  year = {2019},
  publisher = {Rust Foundation},
  url = {https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html},
  chapter = {2.2 Task Wakeups with Waker},
  note = {[Online; accessed 27-January-2021]}
}

@SOFTWARE{about:tokio,
  editor = {tokio-rs},
  title = {Tokio},
  url = {https://github.com/tokio-rs/tokio},
  version = {1.1},
}

@SOFTWARE{soft:miniredis,
  editor = {tokio-rs},
  title = {Mini-Redis},
  url = {https://github.com/tokio-rs/mini-redis},
  version = {Tokio 1.2},
}

@SOFTWARE{soft:opf,
  editor = {OpenFastPath Project},
  title = {OpenFastPath},
  url = {https://github.com/OpenFastPath/ofp},
  version = {1},
}

@SOFTWARE{soft:memtier,
  editor = {RedisLabs},
  title = {memtier_benchmark},
  url = {https://github.com/RedisLabs/memtier_benchmark},
  version = {1.3.0},
}

@SOFTWARE{soft:tokio,
  editor = {tokio-rs},
  title = {Tokio},
  url = {https://github.com/tokio-rs/tokio},
  version = {1.1},
}

@SOFTWARE{soft:nginx,
  editor = {Nginx, Inc.},
  title = {NGINX},
  url = {http://hg.nginx.org/nginx/},
  version = {1.19.6},
}

@SOFTWARE{soft:libuv,
  editor = {libuv team},
  title = {libuv},
  url = {https://github.com/libuv/libuv},
  version = {1.40.0},
}

@SOFTWARE{soft:redis,
  editor = {RedisLabs},
  title = {Redis},
  url = {https://github.com/redis/redis},
  version = {6.0.9},
}

@SOFTWARE{soft:keydb,
  author = {<NAME>},
  title = {KeyDB},
  url = {https://github.com/JohnSully/KeyDB},
  version = {6.0.16},
}

@SOFTWARE{soft:glommio,
  editor = {DataDog},
  title = {glommio},
  url = {https://github.com/DataDog/glommio},
  version = {0.2.0-alpha},
}

@SOFTWARE{soft:actix,
  editor = {ACTIX Contributors},
  title = {actix},
  url = {https://github.com/actix/actix},
  version = {0.10.0},
}

@SOFTWARE{soft:deno,
  author = {<NAME>},
  title = {deno},
  url = {https://github.com/denoland/deno},
  version = {1.7.2},
}

@UNPUBLISHED{kulukundis:swisstable,
   title = {Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step},
   author = {<NAME>},
   year = {2017},
   note = {CppCon 2017},
   url = {https://www.youtube.com/watch?v=ncHmEUmJZf4},
   note = {[Online; accessed 30-November-2020]}
}

@UNPUBLISHED{eerd:queue,
   title = {An Interesting Lock-free Queue - Part 2 of N},
   author = {<NAME>, Tony},
   year = {2017},
   note = {CppCon 2017},
   url = {https://www.youtube.com/watch?v=HP2InVqgBFM},
   note = {[Online; accessed 29-November-2020]}
}

@UNPUBLISHED{torvalds:spinlock,
   title = {No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)},
   author = {Torvalds, Linus},
   year = {2020},
   note = {E-Mail by Linux Torvalds},
   url = {https://www.realworldtech.com/forum/?threadid=189711&curpostid=189723},
   note = {[Online; accessed 30-January-2021]}
}