Which gives the best HA Performance: HassIO in HassOS vs HA in Docker in Raspbian vs HA in VENV in Raspbian

Hi is much performance difference between these 3 options on older slower hardware such as a Raspberry Pi 3.

I’m currently running HassIO on HassOS with an external DB, so I’m not limited by SD card speed/durability, and am currently running no HassIO addons.

While I like how easy with HassIO to run updates, etc. I do find some of the limitations a little annoying sometimes, I need more software than what is avaliable in HassIO addons, so I’m going to try Rasbian on another SD card

If I want the best performance from HA, is VENV considered the fastest? I know Docker is supposed to add some overhead but I’m not sure how much. I quite like the idea of easy updates with Docker containers, and if the overhead isn’t noticable I’ll probably go the Docker route.

However if there is 10% or more speed gain by running VENV then I’ll go with that, and deal with the extra housework when doing updates? I’m running around 1000+ entities in HA, 100+ automations, and it does take a while to check config and reload automations while testing. Other than that currently my setup seems fast enough.

Finally will OS choice make much speed difference? I know Raspbian will have a few things running in the background, but HassOS also has the supervisor and now a DNS server running in the background, but then it is a dedicated OS designed to run the Docker containers.

Anyone else tried different options here and share their experience? OR are there any benchmarks out there? Currently I’m leaning towards the Raspbian + Docker option. Finally for those on Raspbian are there any recommended settings or services to change or disable from stock Raspbian?

Yes, there will be probably be some performance increase running in a venv, because you don’t have Docker. Certainly based off of previous reports from a range of people, it’s (historically) been just enough to be noticed. Nobody’s benchmarked it though. You’ll get a bigger performance boost from moving to a Pi4 :wink:

SD card speed will play a role, and if you’re going with Raspbian I’d recommend configuring it to boot from USB and use a USB connected SSD.

As for Raspbian, my personal experience is that there’s little/no need to disable anything, not that if you do a basic (Raspbian lite) install there’s much to disable that won’t break your system. Mind you, if you go Raspbain + Docker there’s no chance it’ll perform better than Hass.io on HassOS.

1 Like

Great info, thanks. :slight_smile:

Nobody’s benchmarked it though. You’ll get a bigger performance boost from moving to a Pi4

Yep a Pi 4 is on my shopping list, even if I did have one right now it would be tough not to keep tinkering with it, as opposed to putting HA on it and leaving it alone! :smiley:

I did find something about benchmarking in the docs:

https://www.home-assistant.io/docs/tools/benchmark/

However I can’t see a way to do this in hassIO, so I may just see how long it takes to do things like checking my config, reloading automations, loading history etc. mainly the stuff where you have to wait while making changes in HassIO vs VENV.

SD card speed will play a role, and if you’re going with Raspbian I’d recommend configuring it to boot from USB and use a USB connected SSD.

I’m using a NAS to host the HA database, so it may not make much difference - It can’t hurt to try USB boot however. I have some spare 32GB USB drives, I’ll try it out.

As for Raspbian, my personal experience is that there’s little/no need to disable anything, not that if you do a basic (Raspbian lite) install there’s much to disable that won’t break your system.

Ok, I think I’ll go for the VENV on Raspbian route with a fresh card, and keep my HassIO SD card handy just in case anything goes wrong.

The performance boost is negligible to barely noticeable if at all. One of the features of docker is it introduces little to no overhead. And HassOS uses ResinOS which is meant to run docker containers on embedded systems. If you need extra software you can add portainer and load up any docker container on hub.docker.com as well.

The supervisor for HassOS and dns is doing almost nothing on my system right now. less than 1% of my cpu combined.

Go HassOS and you won’t regret it. Plus the additional features you get you will be glad to have. Addon’s web interfaces integrate into HassOS interface and you can access them outside your network and easy setup of ssl/dynamic dns. So if one of your automations in NodeRed isn’t working and is causing havoc you can get on HassOS and fix it or just disable it until you have time later.

It would be easier to go HassOS first and find out if you like it or not than put so many hourse getting a venv setup working only to find it lacking and then feel stuck in a sunk cost fallacy.

Just my 2 cents

1 Like

And HassOS uses ResinOS which is meant to run docker containers on embedded systems.

HassOS replaced ResinOS last year: New Hass.io images, based on HassOS - Home Assistant

1 Like

Looking at the github it looks like HassOS is built on ResinOS, just noticing lots of references to Yocto which is what ResinOS uses as well. Maybe coincidence or just inspiration. Don’t know, don’t really care. Point being for the reference above, both are designed for being as absolutely small and powerful as possible on a variety of hardware and create the smallest amount of overhead possible as to not get in the way of it’s actual purpose, running Hass.

Cheers

Buildroot actually

Hi, up until yesterday I was in fact running the latest HassOS which is buildroot based. I’ve been running HassOS for around a year, when I started out using HassOS I used a lot of the HassIO addons, but I’ve needed the addons less and less as I’ve found I can run the same software natively on my Synology or another Raspberry Pi running raspbian.

I’ve now gone over to VENV install and so far so good, as in it all works. 90% of the time the speed feels the same, viewing history graphs is the same speed for me on VENV vs HassIO for me.

Checking configs is quicker on VENV, and on HassIO is used to take between 50-55 seconds to check config, while on VENV it’s around 35-40 seconds. My configs are identical before and after, I’m pulling them from the same BitBucket Repo.

I have been having the HassIO DNS issues however which may be the reason check config is taking so long, but as VENV seems to be working I’m going to stick with it unless I have issues.

I still have my HassIO SD card handy and if I can figure out how to hass --script benchmark async_million_events under HassIO I can run benchmarks to compare, I imagine for networking speeds would be close, I imagine most of the docker overhead is filesystem access.