Some checks failed
Build Simple CLI / build (push) Failing after 1s
- Add apt-ostree, deb-bootupd, and bootc packages to tools/ - Update Containerfile to install Particle-OS tools with dependencies - Add tool verification script and updated welcome message - Update justfile with new build and test recipes - Add comprehensive tool testing and bootable image generation - Successfully integrate 2/3 tools (apt-ostree and bootupd working) - Note: bootc package contains only documentation, not binary Ready for bootable image generation and QEMU testing!
196 lines
5.6 KiB
Markdown
196 lines
5.6 KiB
Markdown
# Boot Performance Optimization for Simple-CLI
|
|
|
|
## 🎯 Overview
|
|
|
|
This document outlines the boot performance optimizations implemented in Simple-CLI to address the "boots slow" issue identified in the project.
|
|
|
|
## 🚀 Boot Performance Optimizations
|
|
|
|
### 1. Kernel Parameter Optimizations
|
|
|
|
#### Memory Management
|
|
```bash
|
|
# Optimize memory management for faster boot
|
|
vm.swappiness = 1 # Reduce swap usage
|
|
vm.dirty_ratio = 15 # Optimize writeback behavior
|
|
vm.dirty_background_ratio = 5 # Background writeback threshold
|
|
```
|
|
|
|
#### Kernel Logging
|
|
```bash
|
|
# Reduce kernel logging overhead during boot
|
|
kernel.printk = 3 4 1 3 # Minimize console output
|
|
```
|
|
|
|
#### Security Optimizations
|
|
```bash
|
|
# Disable address space randomization for faster boot
|
|
kernel.randomize_va_space = 0 # Note: Security trade-off
|
|
```
|
|
|
|
### 2. Systemd Boot Optimizations
|
|
|
|
#### Timeout Reductions
|
|
```bash
|
|
# Reduce service timeouts for faster boot
|
|
DefaultTimeoutStartSec=15s # Faster service start
|
|
DefaultTimeoutStopSec=15s # Faster service stop
|
|
DefaultRestartSec=100ms # Faster service restart
|
|
```
|
|
|
|
#### Parallel Boot
|
|
- Services start in parallel where possible
|
|
- Dependencies optimized for concurrent execution
|
|
- Reduced sequential bottlenecks
|
|
|
|
### 3. GRUB Boot Optimizations
|
|
|
|
#### Boot Timeout
|
|
```bash
|
|
GRUB_TIMEOUT=1 # Minimal boot menu delay
|
|
GRUB_HIDDEN_TIMEOUT=0 # Hide boot menu by default
|
|
GRUB_HIDDEN_TIMEOUT_QUIET=true # Quiet hidden timeout
|
|
```
|
|
|
|
#### Kernel Parameters
|
|
```bash
|
|
# Optimized kernel command line
|
|
console=ttyS0 # Serial console for faster output
|
|
root=/dev/sda1 # Direct root device specification
|
|
rw # Read-write root filesystem
|
|
quiet # Reduce kernel output
|
|
splash # Show boot splash
|
|
fastboot # Enable fast boot optimizations
|
|
```
|
|
|
|
## 🔧 Implementation
|
|
|
|
### Containerfile Optimizations
|
|
The optimizations are built into the container image:
|
|
|
|
```dockerfile
|
|
# Boot performance optimizations
|
|
RUN echo "kernel.printk = 3 4 1 3" > /etc/sysctl.d/99-boot-performance.conf && \
|
|
echo "vm.swappiness = 1" >> /etc/sysctl.d/99-boot-performance.conf && \
|
|
echo "vm.dirty_ratio = 15" >> /etc/sysctl.d/99-boot-performance.conf && \
|
|
echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.d/99-boot-performance.conf
|
|
|
|
# Systemd boot optimizations
|
|
RUN mkdir -p /etc/systemd/system.conf.d && \
|
|
echo "[Manager]" > /etc/systemd/system.conf.d/99-boot-performance.conf && \
|
|
echo "DefaultTimeoutStartSec=30s" >> /etc/systemd/system.conf.d/99-boot-performance.conf && \
|
|
echo "DefaultTimeoutStopSec=30s" >> /etc/systemd/system.conf.d/99-boot-performance.conf && \
|
|
echo "DefaultRestartSec=100ms" >> /etc/systemd/system.conf.d/99-boot-performance.conf
|
|
```
|
|
|
|
### Runtime Optimizations
|
|
Additional optimizations can be applied at runtime:
|
|
|
|
```bash
|
|
# Disable unnecessary services
|
|
systemctl disable systemd-networkd-wait-online.service
|
|
systemctl disable systemd-resolved.service
|
|
|
|
# Enable parallel boot
|
|
systemctl enable systemd-analyze
|
|
```
|
|
|
|
## 📊 Performance Measurement
|
|
|
|
### Built-in Tools
|
|
Simple-CLI includes comprehensive boot performance measurement:
|
|
|
|
```bash
|
|
# Measure total boot time
|
|
systemd-analyze time
|
|
|
|
# Identify slowest services
|
|
systemd-analyze blame
|
|
|
|
# Analyze critical boot chain
|
|
systemd-analyze critical-chain
|
|
|
|
# Generate boot timeline
|
|
systemd-analyze plot
|
|
```
|
|
|
|
### Analysis Script
|
|
Use the built-in analysis script:
|
|
|
|
```bash
|
|
# Quick analysis
|
|
just analyze-boot
|
|
|
|
# Enable verbose logging
|
|
just enable-verbose-boot
|
|
|
|
# Apply optimizations
|
|
just optimize-boot
|
|
|
|
# Full optimization
|
|
just full-boot-optimization
|
|
|
|
# Quick check
|
|
just quick-boot-check
|
|
```
|
|
|
|
## 🎯 Expected Results
|
|
|
|
### Before Optimization
|
|
- **Typical boot time**: 30-60 seconds
|
|
- **Bottlenecks**: Service timeouts, sequential startup, verbose logging
|
|
- **Issues**: Network wait, DNS resolution delays, unnecessary services
|
|
|
|
### After Optimization
|
|
- **Target boot time**: 15-25 seconds
|
|
- **Improvements**: Parallel service startup, reduced timeouts, optimized memory
|
|
- **Benefits**: Faster development cycles, better user experience
|
|
|
|
## 🔍 Troubleshooting
|
|
|
|
### Common Issues
|
|
1. **Services failing to start**: Check timeout values
|
|
2. **Network connectivity**: Verify network service dependencies
|
|
3. **Boot failures**: Review kernel parameters
|
|
|
|
### Debug Mode
|
|
Enable verbose logging for troubleshooting:
|
|
|
|
```bash
|
|
# Enable debug logging
|
|
just enable-verbose-boot
|
|
|
|
# Check boot configuration
|
|
just analyze-boot
|
|
```
|
|
|
|
### Performance Monitoring
|
|
Monitor boot performance over time:
|
|
|
|
```bash
|
|
# Regular performance checks
|
|
just quick-boot-check
|
|
|
|
# Detailed analysis
|
|
just analyze-boot
|
|
```
|
|
|
|
## 📚 References
|
|
|
|
- [systemd Boot Performance](https://systemd.io/BOOT_PERFORMANCE/)
|
|
- [GRUB Boot Optimization](https://www.gnu.org/software/grub/manual/grub/html_node/Command_002dline-and-menu-entry-commands.html)
|
|
- [Kernel Parameters](https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html)
|
|
- [Debian Boot Optimization](https://wiki.debian.org/BootProcess)
|
|
|
|
## 🚀 Future Improvements
|
|
|
|
### Planned Optimizations
|
|
1. **Initramfs optimization**: Reduce initramfs size and load time
|
|
2. **Service parallelization**: Further optimize service dependencies
|
|
3. **Kernel module loading**: Optimize driver loading sequence
|
|
4. **Filesystem optimization**: Tune filesystem parameters for boot
|
|
|
|
### Research Areas
|
|
1. **Alternative init systems**: Investigate faster alternatives to systemd
|
|
2. **Kernel compilation**: Optimize kernel configuration for boot speed
|
|
3. **Hardware-specific**: Optimize for specific hardware configurations
|