{"id":18421947,"url":"https://github.com/spcl/rfaas","last_synced_at":"2025-05-09T00:07:02.853Z","repository":{"id":43189910,"uuid":"356537532","full_name":"spcl/rFaaS","owner":"spcl","description":"rFaaS: a high-performance FaaS platform with RDMA acceleration for low-latency invocations.","archived":false,"fork":false,"pushed_at":"2025-04-15T12:25:32.000Z","size":1004,"stargazers_count":51,"open_issues_count":23,"forks_count":18,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-09T00:06:56.409Z","etag":null,"topics":["faas","faas-platform","rdma","serverless","serverless-framework"],"latest_commit_sha":null,"homepage":"https://mcopik.github.io/projects/rfaas/ ","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spcl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-04-10T09:45:24.000Z","updated_at":"2025-03-28T08:28:28.000Z","dependencies_parsed_at":"2023-09-22T14:19:48.697Z","dependency_job_id":"f94c807c-0f4b-4183-9a48-da1fdbe85b15","html_url":"https://github.com/spcl/rFaaS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2FrFaaS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2FrFaaS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2FrFaaS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2FrFaaS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spcl","download_url":"https://codeload.github.com/spcl/rFaaS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253166519,"owners_count":21864479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["faas","faas-platform","rdma","serverless","serverless-framework"],"created_at":"2024-11-06T04:27:24.283Z","updated_at":"2025-05-09T00:07:02.828Z","avatar_url":"https://github.com/spcl.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rFaaS: RDMA-Enabled FaaS Platform for Serverless High-Performance Computing\n\n**A high-performance FaaS platform with RDMA acceleration for function invocations.**\n\n![License](https://img.shields.io/github/license/spcl/rfaas)\n![GitHub issues](https://img.shields.io/github/issues/spcl/serverless-benchmarks)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/spcl/serverless-benchmarks)\n\n[\u003cimg alt=\"rFaaS vs HPC vs FaaS\" src=\"docs/systems_comparison.png\" height=\"200\" align=\"right\" title=\"rFaaS vs HPC vs FaaS\"/\u003e](docs/systems_comparison.png)\nThe cloud paradigm Function-as-a-Service (FaaS) provides an ability to execute stateless and fine-grained functions on elastic and ephemeral resources. However, serverless struggles to achieve the performance needed in high-performance computing: slow invocations, low network bandwidth, and the overheads of the FaaS management system make it difficult to incorporate serverless functions when every millisecond counts. Therefore, we decided to combine the best of both worlds: elasticity of FaaS and high-performance of cluster batch systems. We built a new FaaS platform with RDMA-accelerated network transport.\n\nrFaaS is a serverless platform redesigned to support high-performance and low-latency invocations with a direct RDMA connection. \nIn rFaaS, the centralized schedulers and API gateway are replaced with a decentralized allocation mechanism. Instead of using a traditional cloud trigger, HPC applications query executor servers, obtain resource allocation and establish RDMA connections to remote workers. Every function is invoked by writing input data directly to the memory of the worker. This allows us to achieve a single-digit microsecond hot invocation latency - hot invocations add less than 350 nanoseconds overhead on top of the fastest available network transmission.\n\nTo use rFaaS, please read the documentation on [software and hardware requirements](#requirements), [installation instructions](#installation), and [the basic example of using rFaaS](#usage). rFaaS comes with a set of [benchmark](docs/benchmarks.md) applications and [tests](docs/testing). We provide an extended set of [C++ serverless functions](docs/examples.md), including multimedia and ML inference examples from [the serverless benchmarking suite SeBS](https://github.com/spcl/serverless-benchmarks). Finally, you can find more details about rFaaS in the documentation on the [system](docs/system.md) and the [client rFaaS library](docs/client_library.md).\n\nDo you have further questions not answered by our documentation? Did you encounter troubles with installing and using rFaaS? Or do you want to use rFaaS in your work and you need new features? Feel free to reach us through GitHub issues or by writing to \u003cmarcin.copik@inf.ethz.ch\u003e.\n\n### Paper\n\nWhen using rFaaS, please cite our [arXiv paper preprint](https://arxiv.org/abs/2106.13859), and you can\nfind more details about research work [in this paper summary](mcopik.github.io/projects/rfaas/).\nYou can cite our software repository as well, using the citation button on the right.\n\n```\n@inproceedings{copik2023rfaas,\n  title={{r}FaaS: Enabling High Performance Serverless with RDMA and Leases},\n  author={Marcin Copik and Konstantin Taranov and Alexandru Calotoiu and Torsten Hoefler},\n  year={2023},\n  series = {IPDPS '23},\n  booktitle = {Proceedings of the 37th IEEE Interational Parallel and Distributed Processing Symposium},\n  eprint={2106.13859},\n}\n```\n\n## Requirements\n\n**Hardware** `rFaaS` supports SoftROCE and RoCE RDMA NICs with the help of `ibverbs`.\nEvaluation and testing with IB fabric is currently in progress.\n\nIn future versions, we plan for `rFaaS` to support Cray interconnect through `libfabric` and\nits `ugni` provider.\n\n**Software** Currently, `rFaaS` works only on Linux systems as we realy heavily on POSIX interfaces. We require the following libraries and tools:\n\n- CMake \u003e= 3.11.\n- C++ compiler with C++17 support.\n- `libibverbs` with headers installed.\n- `librdmacm` with headers installed.\n\nFurthermore, we fetch and build the following dependencies during CMake build - unless\nthey are found already in the system.\n\n- [spdlog](https://github.com/gabime/spdlog) 1.8\n- [cereal](https://uscilab.github.io/cereal/) 1.3\n- [readerwriterqueue](https://github.com/cameron314/readerwriterqueue) 1.0.6\n- [pistache](https://github.com/pistacheio/pistache) 0.0.5\n- [cxxopts](https://github.com/jarro2783/cxxopts) \n- [googletest](https://github.com/google/googletest)\n\n**Containers**\n`rFaaS` supports two types of function executors - a bare-metal process and a Docker container. For Docker, we use the SR-IOV plugin from Mellanox to run Docker-based function executors with virtual NIC device functions. Please follow [Mellanox documentation and instructions](https://community.mellanox.com/s/article/Docker-RDMA-SRIOV-Networking-with-ConnectX4-ConnectX5-ConnectX6) to install and configure the plugin.\n`rFaaS` expects that `docker_rdma_sriov` binary is available in `PATH`.\n\nIn future versions, we plan to support Singularity containers and offer a simpler, but less secure Docker networking.\n\n## Installation\n\nTo build rFaaS, run the following CMake configuration:\n\n```bash\ncmake -DCMAKE_CXX_COMPILER=\u003cyour-cxx-compiler\u003e -DCMAKE_BUILD_TYPE=Release \u003csource-dir\u003e\ncmake --build .\n```\n\nTo enable more verbose logging, change the CMake configuration parameter to: `-DCMAKE_BUILD_TYPE=Debug`.\n\nThe CMake installation has the following optional configuration parameters.\n\n| Arguments                                                            \t|                                              \t\t|\n|-------------------------------------------------------------------|----------------------------------------------|\n| \u003ci\u003eWITH_EXAMPLES\u003c/i\u003e                                       \t| **EXPERIMENTAL** Build additional examples ([see examples subsection](docs/examples.md) for details on additional dependencies).              \t\t\t\t\t\t|\n| \u003ci\u003eWITH_TESTING\u003c/i\u003e                                        \t| **EXPERIMENTAL** Enable testing - requires providing JSON testing configuration as the value of this flag. See [testing](#testing) subsection for details.\t|\n| \u003ci\u003eCXXOPTS_PATH\u003c/i\u003e                                         \t | Path to an existing installation of the `cxxopts` library; disables the automatic fetch and build of the library. |\n| \u003ci\u003eSPDLOG_PATH\u003c/i\u003e                                         \t | Path to an existing installation of the `spdlog` library; disables the automatic fetch and build of the library. |\n| \u003ci\u003eLIBRDMACM_PATH\u003c/i\u003e                                        | Path to a installation directory of the `librdmacm` library. |\n\n## Usage\n\nTo learn how to use rFaaS, please follow the [tutorial](docs/tutorial.md) \n\nFor an in-depth analysis of each component and their configuration, please look at [the system documentation](docs/system.md).\n\n## Authors \u0026 Contributors\n\n* [Marcin Copik (ETH Zurich)](https://github.com/mcopik/) - main author.\n* [Konstantin Taranov (ETH Zurich)](https://github.com/TaranovK) - troubleshooting and optimizating RDMA.\n* [Marcin Chrapek (ETH Zurich)](https://github.com/marchrap) - libfabrics port and support for Cray GNI.\n* [ Nicolò Monaldini (University of Bologna)](https://github.com/nicolo-mn) - improvements to build and RDMA toolchains.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspcl%2Frfaas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspcl%2Frfaas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspcl%2Frfaas/lists"}