{"id":13875924,"url":"https://github.com/utah-scs/splinter","last_synced_at":"2025-07-16T10:32:19.082Z","repository":{"id":70732541,"uuid":"109311438","full_name":"utah-scs/splinter","owner":"utah-scs","description":"A low-latency, extensible, multi-tenant key-value store.","archived":false,"fork":false,"pushed_at":"2020-12-11T06:59:34.000Z","size":9315,"stargazers_count":53,"open_issues_count":11,"forks_count":12,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-08-07T06:05:54.344Z","etag":null,"topics":["distributed-systems","kernel-bypass","key-value","low-latency","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/utah-scs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-11-02T19:45:45.000Z","updated_at":"2024-06-27T16:40:27.000Z","dependencies_parsed_at":"2023-03-07T02:15:10.679Z","dependency_job_id":null,"html_url":"https://github.com/utah-scs/splinter","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utah-scs%2Fsplinter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utah-scs%2Fsplinter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utah-scs%2Fsplinter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utah-scs%2Fsplinter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/utah-scs","download_url":"https://codeload.github.com/utah-scs/splinter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226122303,"owners_count":17576920,"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":["distributed-systems","kernel-bypass","key-value","low-latency","rust"],"created_at":"2024-08-06T06:00:50.376Z","updated_at":"2024-11-24T03:31:32.830Z","avatar_url":"https://github.com/utah-scs.png","language":"Rust","funding_links":[],"categories":["Rust","rust"],"sub_categories":[],"readme":"# Splinter\nA multi-tenant key-value store into which untrusted extensions can be pushed\ndown at run-time\n\n## Running Splinter on CloudLab\nTo run Sandstorm on [CloudLab](https://www.cloudlab.us/login.php), do the\nfollowing\n\n1. Instantiate an experiment using the `splinter-cluster` profile under the\n    `sandstorm` project (you will need to join the project first). When asked,\n    allocate two machines for the experiment.\n2. Next, run\n    `python3 scripts/everything/main.py --setup --build \u003ccloudlab-username\u003e \u003cany-host-in-cluster\u003e \u003ccommand/extension\u003e`\n    From the root directory of the project on any machine outside or inside the cluster.\n    This script is capable of: \n      - Installing Rust\n      - Installing DPDK\n      - Setting up NIC and MAC addresses\n      - Compiling Server and Client Rust\n      - Pushing and recompiling local commits\n      - Running extensions/clients\n      - logging output to `logs/latest/`\n    If you want to know more about the features of this script,\n    use `python3 scripts/everything/main.py -h`\n  \n## How to run server and client for each extension\nTo update the configuration parameters, change `db/server.toml` on the server side and `splinter/client.toml` on the client side.\n\nTo run the extension on the client-side, use `use_invoke = false` and for the server-side use `use_invoke=true`. And to run the extension on both on the server-side and client-side, keep `use_invoke = true` and add `pushback` feature in `db/Cargo.toml` on the server-side.\n\nChange `num_tenants` and `num_keys` on both the sides. The server uses these parameters to populate the tables and extension for different number of extensions and the client uses these parameters to generate the load.\n\n### Aggregate Extension\n`key_size = 8`\n\n`value_size = 30`\n\n`num_aggr = X`\t// The number of record accessed for per aggregate operation.\n\n`order = X`\t// The amound of computation(multiplication) for per aggregate operation.\n\n### Analysis Extension\n`key_size = 30`\n\n`value_size = 108`\n\nAlso add the feature `ml_model` in `db/Cargo.toml`.\n\n### Auth Extension\n`key_size = 30`\n\n`value_size = 72`\n\n### Pushback Extension\n`key_size = 30`\n\n`value_size = 100`\n\n`num_aggr = X` // The number of records accessed per operation.\n\n`order = X` // The amount of compute per operation in terms of CPU cycles.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futah-scs%2Fsplinter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Futah-scs%2Fsplinter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futah-scs%2Fsplinter/lists"}