1
PlatformLab/HomaModule
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
README
This repo contains an implementation of the Homa transport protocol as a Linux kernel module.
- For more information on Homa in general, see the Homa
- More information about this implementation and its performance are available in
- A synopsis of the protocol implemented by this module is available in
- As of August 2020, Homa has complete functionality for running real applications,
- The incast optimization from Section 3.6 of the SIGCOMM paper has not
- Please contact me if you have any problems using this repo; I'm happy to
- To build and install Homa, see instructions in
INSTALL.md. - A collection of man pages is available in the "man" subdirectory. The API for
- Related work that you may find useful:
- Preliminary support for using Homa with gRPC
- A Go client that works with this module
- NIC support: Homa is known to work with the following NICs:
- Mellanox ConnectX-4, ConnectX-5, and ConnectX-6
- Intel E810 series (ice)
- The subdirectory "test" contains unit tests, which you can run by typing
- The subdirectory "util" contains an assortment of utility programs that
make in that subdirectory. Here are some examples of benchmarks you might
find useful:
- The
cp_nodeprogram can be run stand-alone on clients and servers to 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.
- The
cp_benchscript usescp_nodeto run any of a variety of
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.
- Some additional tools you might find useful:
- Homa collects various metrics about its behavior, such as the size
/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.
- Homa exports a collection of configuration parameters through the
homa.7.
Significant changes
- March 2026: backported Homa to Red Hat Enterprise Linux versions
rhel8 and rhel9.5. Future changes made to
the main branch are likely to be reflected in these branches also.
- January 2026: introduced new 'homa_qdisc' queuing discpline to improve
- Without homa_qdisc, if Homa and TCP run together, Homa performance
- Homa_qdisc improves performance for both Homa and TCP, whether
- homa_qdisc improves Homa's performance when running with TCP to almost
- TCP performance improves when running together with Homa, with or
- November 2025: upgraded to Linux 6.17.8.
- October 2025: added the HOMAIOCINFO ioctl for retrieving status
- May 2025:
homa_api.chas been removed, so the functionshoma_abort,
homa_reply, homa_replyv, homa_send, and homa_sendv no longer
exist.
- May 2025: added support for network namespaces.
- May 2025: reworked support for peers to cap peer memory usage.
- April 2025: upgraded to Linux 6.13.9.
- April 2025: major refactoring of grant management (more efficient,
- March 2025: added memory cap on memory for outgoing messages: send
- March 2025: implemented private RPCs, resulting in API changes.
- February 2025: by default, incoming requests for a socket are rejected
- October 2024: the process of upstreaming Homa into the Linux kernel has
- October 2024: Homa now has an official IANA IP protocol number (146).
- August 2024: upgraded to Linux 6.10.6.
- July 2024: introduced "TCP hijacking", where Homa packets are sent as
- June 2024: refactored sk_buff management to use frags; improves
- April 2024: replaced
masterbranch withmain - July 2023: upgraded to Linux 6.1.38.
- December 2022: Version 2.0. This includes a new mechanism for managing
- November 2022: implemented software GSO for Homa.
- September 2022: added support for IPv6, as well as completion cookies.
- September 2022: Homa now works on Linux 5.18 as well as 5.17.7
- June 2022: upgraded to Linux 5.17.7.
- November 2021: changed semantics to at-most-once (servers can no
- August 2021: added new versions of the Homa system calls that
- November 2020: upgraded to Linux 5.4.3.
- June 2020: implemented busy-waiting during homa_recv: shaves 2
- June 2020: several fixes to prevent RPCs from getting "stuck",
- May 2020: got priorities working correctly using the DSCP field
- December 2019: first versions of cperf ("cluster performance")
- December 2019 - June 2020: many improvements to the GRO mechanism,
- Fall 2019: many improvements to pacer, spread over a couple of months.
- November 6, 2019: reworked locking to use RPC-level locks instead of
- September 25, 2019: reworked timeout mechanism to eliminate over-hasty
- August 1, 2019: GSO and GRO are now working.
- March 13, 2019: added support for shutdown kernel call, plus poll, select,
- March 11, 2019: extended homa_recv API with new arguments: flags, id.
- February 16, 2019: added manual entries in the subdirectory "man".
- February 14, 2019: output queue throttling now seems to work (i.e., senders
- November 6, 2019: timers and packet retransmission now work.
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
2
3
4
5
6
7
8