PlatformLab/HomaModule

▲ 24 stars today★ 366⑂ 65

A Linux kernel module that implements the Homa transport protocol.

About PlatformLab/HomaModule

PlatformLab/HomaModule is an open-source project on GitHub, mainly written in C. A Linux kernel module that implements the Homa transport protocol. It currently holds 366 stars and 65 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

Git Homed tracks it on the Today's Trending board, currently at rank #96 with 24 new stars today.

GitHub Repository Details

Repository PlatformLab/HomaModule · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

This repo contains an implementation of the Homa transport protocol as a Linux kernel module.

Wiki. the paper A Linux Kernel Implementation of the Homa Transport Protocol, which appeared in the USENIX Annual Technical Conference in July, 2021. protocol.md. and its tail latency is more than 10x better than TCP for all workloads I have measured (Homa's 99-th percentile latency is usually better than TCP's mean latency). Here is a list of the most significant functionality that is still missing: been implemented yet. If you would like to test Homa under large incasts, let me know and I will implement this feature. provide advice and support. Homa is different from TCP sockets. Please let me know if you find other NICs that work (or don't work). "make" in that subdirectory. you may find useful in exercising and benchmarking Homa. Compile them by typing make in that subdirectory. Here are some examples of benchmarks you might find useful: simple benchmarks. For a simple latency test, run cp_node server on node1 of the cluster, then run cp_node client on node 0. The client will send continuous back-to-back short requests to the server and output timing information. Or, run cp_node client --workload 500000 on the client: this will send continuous 500 KB messages for a simple througput test. Type cp_node --help to learn about other ways you can use this program. benchmarks; it was used to generate the data for Figures 3 and 4 in the Homa ATC paper. Here is an example command:
    cp_bench -n 10 -w w4 -b 20 -B homa_vs_tcp
    
The -B option selects one of several benchmarks; homa_vs_tcp will run both Homa and TCP on the same workload and generate graphs comparing them. When invoked on node0, this will run the W4 workload from the ATC paper, running on 10 nodes and generating 20 Gbps of offered load (80% network load on a 25 Gbps network). Type cp_bench --help for information on all available options. distribution of incoming messages. You can access these through the file /proc/net/homa_metrics. The script util/metrics.py will collect metrics and print out all the numbers that have changed since its last run. sysctl mechanism. For details, see the man page homa.7.

Significant changes

8 and 9.5, using the branches rhel8 and rhel9.5. Future changes made to the main branch are likely to be reflected in these branches also. performance when TCP and Homa run simultaneously. Results on c6620 CloudLab cluster (100 Gbps network): suffers (4x increase for P99 for short messages) but TCP performance improves. running stand-alone or together. what is is when running without TCP. without homa_qdisc. information about a Homa socket. See man/homa.7 for details. homa_reply, homa_replyv, homa_send, and homa_sendv no longer exist. remove complexity that was causing an unending stream of bugs). requests can block if memory limit is reached. HOMA_RECVMSG_REQUEST and HOMA_RECVMSG_RESPONSE flags no longer exist and struct homa_sendmsg_args now has a flags field with one defined flag: HOMA_SENDMSG_PRIVATE. unless the socket has been bound. setsockopt can be used with SO_HOMA_SERVER to enable or disable incoming requests for any socket. begun. The reviewing process is likely to result in API changes. Upstreaming will occur in stages, so the first version to appear in Linux will not be either functionally complete or performant. The sources in this repository contain '#ifndef __STRIP__' directives, which separate functionality being upstreamed from functionality that is not currently upstreamed (some things, such as development aids, may never be upstreamed). legitimate TCP segments (using TCP as the IP protocol) and then reclaimed from TCP on the destination. This allows Homa to make better use of TSO and RSS. efficiency significantly. buffer space for incoming messages, which improves throughput by 50-100% in many situations. In addition, Homa now uses the sendmsg and recvmsg system calls, rather than ioctls, for sending and receiving messages. The API for receiving messages is incompatible with 1.01. This required small but incompatible changes to the API. Many thanks to Dan Manjarres for contributing these improvements. longer see multiple instances of the same RPC). support iovecs; in addition, incoming messages can be read incrementally across several homa_recv calls. microseconds off latency. where they never make progress. of IP headers. benchmark. including better hashing and batching across RPCs; improves both throughput and latency. socket locks for most things (significantly reduces socket lock. contention). Many more refinements to this in subsequent commits. timeouts. Also, limit the rate at which RESENDs will be sent to an overloaded machine. and epoll. Homa now connects will all of the essential Linux plumbing. implement SRPT properly).

GitHub Stars & Activity

366Stars
65Forks
0Open issues
CLanguage

GitHub Popularity

GitHub stars366
Forks65
Open issues0
Primary languageC
License-
Stars gained today24
Created-
Last pushed-

Trending History

Daily boardrank #96 · ▲ 24 stars

Related GitHub Projects

1

Genymobile / scrcpy

C★ 150,081⑂ 13,783▲ 79 stars
2

ventoy / Ventoy

C★ 79,415⑂ 4,945▲ 29 stars
3

pgvector / pgvector

C★ 23,106⑂ 1,327▲ 23 stars
4

HarbourMasters / PaperBoat

C★ 344⑂ 18▲ 34 stars
5

affaan-m / ECC

JavaScript★ 263,725⑂ 39,455▲ 826 stars
6

ossu / computer-science

HTML★ 209,232⑂ 25,883▲ 67 stars
7

tensorflow / tensorflow

C++★ 200,216⑂ 77,020▲ 30 stars
8

Significant-Gravitas / AutoGPT

Python★ 187,466⑂ 46,006▲ 27 stars

More Trending Repositories