4 ms·
"Instead of finding and optimizing tasks, we just turned systemd off". Okay. The folks at Bootlin have way more interesting approaches and techniques to review
by joezydeco 2y ago
"Instead of finding and optimizing tasks, we just turned systemd off". Okay.
The folks at Bootlin have way more interesting approaches and techniques to review. I'd look to them.
https://bootlin.com/blog/tag/boot-time/ https://bootlin.com/blog/tag/boot-time/
- moffkalast 2y agoI mean systemd-analyze blame usually shows only a few services taking up 90% of the boot time (looking at you snap daemon and cloud init taking a whole 20 seconds lmao) so turning off those yields most of the gain without any real usability hit for general use. But in practical terms if you really need boot speed, you need a Pi 5 that only takes a few seconds at worst, not a Pi 4 which uses its slow ass GPU to run the boot process for absolute maximum sluggishness possible.
- arghwhat 2y agos/boot process/initial boot phase/ A few seconds is still very long - in automotive you’re dealing with a few hundred milliseconds from power is applied till the system is presenting an interactive GUI.
- joezydeco 2y agoAutomotive HMIs with Linux tend to boot long, then hibernate while the car is off. The only thing that needs to come up quickly (at least in the US) is the backup camera and there tends to be hardware to inject that video quicker than the HMI can.
- notpushkin 2y agoThis just prompted me to finally look into boot time on my Asahi Linux setup. Turns out Docker was eating 5 seconds (about half of the boot time!) for some reason, so I disabled it (and enabled docker.socket instead, so that it starts up automatically when I need it).
- yjftsjthsd-h 2y agoIs there a way to start a service but not block on it? I want to start docker with the system, but nothing should wait on it
- ta988 2y agocreate a .timer file in your service directory with [Timer] OnBootSec=2min https://wiki.archlinux.org/title/Systemd/Timers https://wiki.archlinux.org/title/Systemd/Timers
- notpushkin 2y agoI’ll give it a try too, thanks. Edit: set delay to one minure, working just fine!
- astrobe_ 2y ago"The new average is 107 ms smaller, which you are likely to consider as a worthy reduction, if you have experience with boot time reduction projects." Not really. The result is kind of a letdown and that was too be expected, going after a single memcpy is low ROI because memcpy performance is probably what processor and library makers look at first. What wins big is to remove useless stuff entirely. The demo boards I have seen often come with a standard Debian with all the services one might want for a workstation. The kernel is usually the same, with drivers such as PS/2 mouse enabled - thankfully just as a module, but disabling the useless drivers wins big in kernel compilation time. Which makes optimizing the rest a bit more comfortable (some options such as hardening and debugging can nearly full recompilation). While there, one can also build the drivers one always want inside the kernel (not as module). A module inside a compressed kernel is loaded faster than from somewhere in a filesystem. That said, Bootlin has indeed a lot of good stuff. As for turning off systemd, it is not a bad idea if one replaces it with an init system that can start stuff in parallel (to mask the waiting times). I get that desktop users and admins like it a lot, but for an embedded system with a specific mission and a static configuration, it can overkill. There are a bit more caveats than what they say, though.
- rollcat 2y ago> What wins big is to remove useless stuff entirely. This. And there's even a project (targeting mainly RasPi) that does just that: https://gokrazy.org https://gokrazy.org (And yes, you can also deploy code that wasn't written in Go, although it's quite clunky.)
- ryandrake 2y agoMost of the "make RPi Linux boot fast" guides out there use the same approach: Start with a tiny Debian and remove stuff until it's faster. There's not a lot of good information about attacking it from the other way: Start with a bootloader, firmware, and a kernel, and add only the stuff that you need. I mean, it's probably out there on the web somewhere, but I've found it tough to find among all the "just strip down Debian" blog posts. If anyone has experience doing this and could point me to a few resources, I'd be grateful!