Recently, I've been forced down a rabbit-hole in this space, the tl:dr of it being I have crappy internet where I live, and I've had to cobble together a multiple-ISP solution with load balancing wherein the individual ISP connections are on opposite sides of the house, and it is absurdly difficult to understand. I have a ton of old computers/equipment that I'm sure could do most of the lifting, and I'm relatively pr…
The route I took was to place a small, low-power Linux box between my network and my ADSL router, running OpenWRT, and then configure load-balancing on that. A Web search for "bufferbloat cake" (no, really :-)) will show you one of the most useful Web sites I found.
One other measure you can take is aggressive content-blocking. I use Pi-Hole, uBlock Origin, Privacy Badger and Blokada, and I recommend them all. If you don't have much bandwidth, you don't want to give half of it away to marketers and creepy trackers. Use what little you have to work for you, rather than against you.
Having started from a position of knowing very little about Linux networking, I'd say that the Linux networking stack is powerful, flexible and fast, but it's let down by the available documentation, most of which seems to have been written at least fifteen years ago, and much of which is simply out-of-date. I couldn't find anything that just starts at the beginning and tells you everything you want to know, and is based on modern Linux commands and facilities. I'd write it myself if I understood it well enough but, honestly, I still don't. For anyone who wants to contribute to Linux but is a wordsmith rather than a coder, here's your chance.