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.
102 lines
3.1 KiB
Markdown
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.
|