You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

3.1 KiB

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

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)

docker-compose up

Mit Standard Lua 5.4

USE_LUAJIT=false docker-compose up

Direkte Docker-Nutzung

# 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.