{"id":13509589,"url":"https://github.com/vhive-serverless/vHive","last_synced_at":"2025-03-30T13:32:38.056Z","repository":{"id":37957918,"uuid":"240554209","full_name":"vhive-serverless/vHive","owner":"vhive-serverless","description":"vHive: Open-source framework for serverless experimentation","archived":false,"fork":false,"pushed_at":"2025-03-26T17:16:57.000Z","size":319790,"stargazers_count":295,"open_issues_count":49,"forks_count":97,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-30T10:34:20.461Z","etag":null,"topics":["benchmarking","containerd","faas","firecracker","functions-as-a-service","gvisor","knative","knative-serving","kubernetes","microvm","serverless","vhive"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vhive-serverless.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing_to_vhive.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-14T16:39:44.000Z","updated_at":"2025-03-29T03:31:42.000Z","dependencies_parsed_at":"2024-11-14T09:28:41.546Z","dependency_job_id":null,"html_url":"https://github.com/vhive-serverless/vHive","commit_stats":{"total_commits":1361,"total_committers":58,"mean_commits":23.46551724137931,"dds":0.7575312270389419,"last_synced_commit":"751085c365638b7def6b58189cea29c26f1f5929"},"previous_names":["ustiugov/fccd-orchestrator","ease-lab/fccd-orchestrator","ease-lab/vhive"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhive-serverless%2FvHive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhive-serverless%2FvHive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhive-serverless%2FvHive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhive-serverless%2FvHive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vhive-serverless","download_url":"https://codeload.github.com/vhive-serverless/vHive/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246324230,"owners_count":20759098,"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":["benchmarking","containerd","faas","firecracker","functions-as-a-service","gvisor","knative","knative-serving","kubernetes","microvm","serverless","vhive"],"created_at":"2024-08-01T02:01:10.007Z","updated_at":"2025-03-30T13:32:38.043Z","avatar_url":"https://github.com/vhive-serverless.png","language":"Go","readme":"[![build](https://github.com/vhive-serverless/vhive/workflows/vHive%20build%20tests/badge.svg)](https://github.com/vhive-serverless/vhive/actions)\n[![Firecracker MicroVM E2E tests](https://github.com/vhive-serverless/vHive/actions/workflows/firecracker_cri_tests.yml/badge.svg)](https://github.com/vhive-serverless/vHive/actions/workflows/firecracker_cri_tests.yml)\n[![gVisor MicroVM E2E tests](https://github.com/vhive-serverless/vHive/actions/workflows/gvisor_cri_tests.yml/badge.svg)](https://github.com/vhive-serverless/vHive/actions/workflows/gvisor_cri_tests.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/vhive-serverless/vhive)](https://goreportcard.com/report/github.com/vhive-serverless/vhive)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\u003ca href=\"https://twitter.com/intent/follow?screen_name=ease_lab\" target=\"_blank\"\u003e\n\u003cimg src=\"https://img.shields.io/twitter/follow/ease_lab?style=social\u0026logo=twitter\" alt=\"follow on Twitter\"\u003e\u003c/a\u003e\n\n![vHive Header](docs/figures/vhive_hdr.jpg)\n\n## News\n\nA full-day tutorial, co-located with the ASPLOS'22 conference, is going to take place in Lausanne, Switzerland on March 1. The tutorial will be in a hybrid format (both in-person and virtual) and will cover both the serverless cloud foundations and the vHive ecosystem and include several hands-on sessions. In this tutorial, the participants will learn how to analyze performance of commercial and open-source clouds as well as how to experiment and innovate across serverless stack using vHive. For more information, please visit the [tutorial webpage](https://ease-lab.github.io/vhive-asplos22).\n\n## Mission\n\nvHive aims to enable serverless systems researchers to innovate across the deep and distributed software stacks\nof a modern serverless platform. Hence, we built vHive to be representative of the leading\nFunction-as-a-Service (FaaS) providers, integrating the same production-grade components used by the providers, including\n[AWS Firecracker hypervisor](https://firecracker-microvm.github.io/),\nCloud Native Computing Foundation's [Containerd](https://containerd.io/),\nand [Kubernetes](https://kubernetes.io/). \n\nvHive adopts the [Knative](https://knative.dev/) flexible programming model, allowing the researchers to quickly deploy\nand experiment with *any* serverless applications that may comprise many functions,\nrunning in secure Firecracker microVMs, as well as serverfull services.\nBoth the functions and the stateful services can be deployed using OCI/Docker images.\n\nvHive empowers systems researchers to innovate on key serverless features,\nincluding functions autoscaling and cold-start delay optimization with several snapshotting mechanisms.\n\nvHive has added support for the state-of-the-art extension [eStargz](https://github.com/containerd/stargz-snapshotter) to container layers and lazy pull support for container images.\n\nvHive supports running Knative on top of [`OpenYurt`](https://openyurt.io/), an open platform that extends upstream Kubernetes to run on edge node pools. More details on how to the `Knative-atop-OpenYurt` mode are described [here](scripts/openyurt-deployer/README.md).\n\n## vHive architecture\n\n![vHive Architecture](docs/figures/vhive_architecture.jpg)\n\nThe details of the vHive architecture can be found in our ASPLOS'21 paper\n([extended abstract](https://asplos-conference.org/abstracts/asplos21-paper212-extended_abstract.pdf),\n[full paper](docs/papers/REAP_ASPLOS21.pdf)).\n\nCurrently, vHive supports 3 types of sandboxes for functions, namely\n[Firecracker MicroVMs](https://firecracker-microvm.github.io/) (default),\n[gVisor MicroVMs](https://gvisor.dev/),\nand Containerd containers (as in vanilla Knative).\n\n\n### Technical talks\n\n* [Slides](docs/talks/vHive_REAP_@AWS_04_02_2021.pdf) from\n[Dmitrii](https://ustiugov.github.io)'s talk at AWS on Feb, 4th 2021.\n* ASPLOS'21 talks on YouTube:\n[short](https://www.youtube.com/watch?v=w1vGb0X0SUQ), [long](https://www.youtube.com/watch?v=zfLd_MTGOA8).\n* Serverless and vHive tutorial [series](https://www.youtube.com/playlist?list=PLVdxPJaekjWqBsEUwnrYRQCaMqvcDVsBE)\n* Upcoming serverless computing workshop at EuroSys 2023 [website](https://vhive-serverless.github.io/sesame-eurosys23)\n\n\n## Referencing our work\n\nIf you decide to use vHive for your research and experiments, we are thrilled to support you by offering\nadvice for potential extensions of vHive and always open for collaboration.\n\nPlease cite our paper that has been recently accepted to ASPLOS 2021:\n```\n@inproceedings{ustiugov:benchmarking,\n  author    = {Dmitrii Ustiugov and\n               Plamen Petrov and\n               Marios Kogias and\n               Edouard Bugnion and\n               Boris Grot},\n  title     = {Benchmarking, Analysis, and Optimization of Serverless Function Snapshots},\n  booktitle = {Proceedings of the 26th ACM International Conference on\n               Architectural Support for Programming Languages and Operating Systems (ASPLOS'21)},\n  publisher = {{ACM}},\n  year      = {2021},\n  doi       = {10.1145/3445814.3446714},\n}\n```\n\n\n## Getting started with vHive\n\nvHive can be readily deployed on premises or in cloud, with support for nested virtualization.\nWe provide [a quick-start guide](docs/quickstart_guide.md)\nthat describes how to set up an experiment with vHive.\n\n\n## Developing vHive\n\n### Developer's guide and performance analysis with vHive\n\nWe provide a basic developer's guide that we plan to extend in future.\nWe encourage the community to contribute their analysis scenarios and tools.\n\nYou can view the vHive documentation [here](https://pkg.go.dev/github.com/vhive-serverless/vhive).\n\n### vHive maintenance\n\nvHive is a community-led project maintained by the EASE lab at the University of\nEdinburgh and the HySCALE lab at Nanyang Technological University.\nTo guarantee high code quality and reliability, we deploy fully automated CI\non cloud and self-hosted runners with GitHub Actions.\n\nThe statistics of this repository's views, clones, and forks are available by the following\n[link](https://vhive-serverless.github.io/vhive.github.io/vhive-serverless/vhive/latest-report/report.html).\n\n\n### Getting help and contributing\n\nWe would be happy to answer any questions in GitHub Issues and encourage the open-source community\nto submit new Issues, assist in addressing existing issues and limitations, and contribute their code with Pull Requests.\nPlease check our guide on [Contributing to vHive](docs/contributing_to_vhive.md) if you would like contribute.\nYou can also talk to us in our [Slack space](https://join.slack.com/t/vhivetutorials/shared_invite/zt-1fk4v71gn-nV5oev5sc9F4fePg3_OZMQ).\n\n\n## License and copyright\n\nvHive is free. We publish the code under the terms of the MIT License that allows distribution, modification, and commercial use.\nThis software, however, comes without any warranty or liability.\n\nThe software is maintained at the [EASE lab](https://easelab.inf.ed.ac.uk/) at the University of Edinburgh and the\n[HySCALE](https://ustiugov.github.io/) at Nanyang Technological University.\n\n\n### Maintainers\n\n* High-level architecture, roadmap: Dmitrii\n  Ustiugov ([GitHub](https://github.com/ustiugov),\n  [twitter](https://twitter.com/DmitriiUstiugov), [web page](https://ustiugov.github.io));\n* Issues, discussions, and tests on GitHub: [Leonid Kondrashov](https://github.com/leokondrashov);\n* Integration with firecracker-containerd [Georgiy Lebedev](https://github.com/curiousgeorgiy);\n* Integration with Knative: [Shyam Jesalpura](https://github.com/shyamjesal)\n","funding_links":[],"categories":["Go","serverless"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvhive-serverless%2FvHive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvhive-serverless%2FvHive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvhive-serverless%2FvHive/lists"}