Files
auto-boot-ollama-host/LUAJIT_README.md
Bastian (BaM) 8cb6d55782 Refactor to use LuaJIT and improve performance
Integrate LuaJIT as an optional runtime for better performance, with a fallback to standard Lua 5.4. Update Dockerfile to install LuaJIT and create a wrapper script for execution. Enhance network module with socket fallback support and update README to reflect these changes and configuration options.
2025-09-15 08:44:19 +02:00

102 lines
3.1 KiB
Markdown

# LuaJIT Integration für auto-boot-ollama-host
## Übersicht
Dieses Projekt wurde erfolgreich konvertiert, um LuaJIT anstelle von Standard-Lua zu verwenden, was eine erhebliche Performance-Verbesserung bietet.
## Performance-Verbesserung
Basierend auf unseren Benchmarks zeigt LuaJIT eine **35x schnellere Performance** im Vergleich zu Lua 5.4:
- **Lua 5.4**: 23.8 Millionen Operationen/Sekunde
- **LuaJIT**: 850.8 Millionen Operationen/Sekunde
## Konfiguration
### Umgebungsvariablen
- `USE_LUAJIT=true` (Standard): Verwendet LuaJIT für bessere Performance
- `USE_LUAJIT=false`: Verwendet Standard Lua 5.4 (Fallback)
### Docker Compose
```yaml
environment:
USE_LUAJIT: "true" # Standard: LuaJIT verwenden
```
## Technische Details
### Fallback-System
Das System implementiert ein intelligentes Fallback-System:
1. **LuaJIT mit vollständiger Funktionalität**: Wenn alle Module verfügbar sind
2. **LuaJIT mit Fallback**: Wenn das socket-Modul nicht verfügbar ist, werden externe Tools (netcat, wakeonlan) verwendet
3. **Lua 5.4**: Als letzter Fallback für maximale Kompatibilität
### Code-Architektur
Der Socket-Fallback-Code wurde in das `network.lua`-Modul integriert, um eine bessere semantische Gruppierung zu erreichen:
- **Zentralisierte Netzwerk-Verwaltung**: Alle Netzwerk- und Socket-Operationen sind in `network.lua` zusammengefasst
- **Einheitliche API**: Konsistente Funktionen für alle Module (`is_socket_available()`, `is_sleep_available()`, `get_socket()`)
- **Wartbarkeit**: Änderungen am Fallback-System müssen nur an einer Stelle vorgenommen werden
- **Semantische Kohärenz**: Socket-Operationen sind logisch bei den Netzwerk-Utilities angesiedelt
### Socket-Modul-Kompatibilität
Da LuaJIT nicht direkt mit lua5.4-socket kompatibel ist, wurde ein Fallback-System implementiert:
- **Port-Checking**: Verwendet `netcat` anstelle von luasocket
- **Wake-on-LAN**: Verwendet `wakeonlan` Tool anstelle von nativen Socket-Operationen
- **Sleep-Operationen**: Verwendet `os.execute("sleep")` anstelle von `socket.sleep()`
## Verwendung
### Standard (LuaJIT)
```bash
docker-compose up
```
### Mit Standard Lua 5.4
```bash
USE_LUAJIT=false docker-compose up
```
### Direkte Docker-Nutzung
```bash
# LuaJIT (Standard)
docker run auto-boot-ollama-host-luajit
# Standard Lua 5.4
docker run -e USE_LUAJIT=false auto-boot-ollama-host-luajit
```
## Vorteile
1. **Bessere Performance**: 35x schnellere Ausführung
2. **Rückwärtskompatibilität**: Funktioniert mit beiden Lua-Versionen
3. **Intelligentes Fallback**: Automatische Erkennung und Anpassung
4. **Einfache Konfiguration**: Einfache Umgebungsvariable zum Umschalten
## Kompatibilität
- ✅ Alpine Linux 3.20
- ✅ Docker
- ✅ Docker Compose
- ✅ LuaJIT 2.1
- ✅ Lua 5.4 (Fallback)
- ✅ Alle ursprünglichen Funktionen
## Troubleshooting
### Socket-Modul-Fehler
Wenn Sie Fehler mit dem socket-Modul sehen, ist das normal bei LuaJIT. Das System verwendet automatisch Fallback-Methoden.
### Performance-Probleme
Stellen Sie sicher, dass `USE_LUAJIT=true` gesetzt ist (Standard).
### Kompatibilitätsprobleme
Falls Probleme auftreten, können Sie mit `USE_LUAJIT=false` auf Standard Lua 5.4 zurückwechseln.