Fragen zu Swap beim Kompilieren großer Pakete... und DigitalOcean

SolarCatcher

Well-Known Member
Ich habe bei DigitalOcean einen Buildserver für HardenedBSD-Pakete laufen. Das läuft im Normalfall auf dem kleinstmöglichen VPS ("Droplet"): 1vCPU, 2 GB RAM, 50 GB SSD (das ist nicht wirklich das kleinste Droplet... aber mit Poudriere braucht man mehr als die 25GB Festplattenplatz, die das mitbringt).

Das funktioniert für die überschaubare Anzahl Pakete, die ich benötige sehr gut. Aber immer wenn Schwergewichte (v.a. LLVM) gebaut werden müssen, bricht Poudriere ab wg. mangels an Swap-Space. Dann muss ich temoprär auf einen größeren VPS skalieren (solange der Festplattenplatz nicht vergrößert wird, ist das reversibel). Ich würde aber gerne eine Lösung finden, wo es auch ohne dieses händische Hoch- und Runterskalieren geht.

DO hat das System mit 2GB Swap-Space konfiguriert. Ich habe gestern mal versucht, nach Handbook eine größere Swap-Datei einzubinden (6GB). Dann bekam ich in /var/messages folgende Meldungen:

Code:
Apr  1 09:49:13 hbsd-12-build-server kernel: [1122692] warning: total configured swap (2097152 pages) exceeds maximum recommended amount (2003784 pages).
Apr  1 09:49:13 hbsd-12-build-server kernel: [1122692] warning: increase kern.maxswzone or reduce amount of swap.
Apr  1 10:28:41 hbsd-12-build-server kernel: [1125060] pid 94337 (llvm-tblgen), jid 53, uid 0, was killed: out of swap space

Ich habe etwas nach kern.maxswzone gegoogelt, bin aber nicht so recht schlau geworden. Weiß jemand, wie man hier vorgehen könnte?
 
Ganz einfach: Die Verwaltung von Swap benötigt RAM. Je mehr Swap man hat, umso mehr RAM verliert man für die Verwaltung der Swap. Der Speicherbereich, den der Kernel zur Verwaltung der Swap reserviert ist die "Swap Zone". Wenn du nun mehr als Swap willst, als in die Swap Zone passt, bekommst du die Meldung. Mit dem Tuneable kern.maxswzone kannst du die Swap Zone vergrößern, das System kann man mehr Swap verwalten. Ich würde es für den Anfang mal verdoppeln. Ich meine, es muss in der loader.conf gesetzt werden.
 
Danke für die sehr einleuchtende Erklärung.

Verdoppeln funktioniert aber nicht wirklich: Ich habe eben auf verschiedenen Servern und Laptops mit Free- und HardenedBSD nachgeschaut kern.maxswzone hat überall denselben Wert: 0.
 
loader(8) sagt:
Code:
     kern.maxswzone
           Limits the amount of    KVM to be used to hold swap metadata,
           which directly governs the maximum amount of    swap the sys-
           tem can support, at the rate    of approximately 200 MB    of
           swap    space per 1 MB of metadata.  This value    is specified
           in bytes of KVA space.  If no value is provided, the    system
           allocates enough memory to handle an    amount of swap that
           corresponds to eight    times the amount of physical memory
           present in the system.
          
           (...)

Das macht für mich keinen Sinn: Wenn der Wert auf 0 steht, müssten also 8 x 2 GB Swap nutzbar sein. Es sei denn, der RAM-Wert wird wegen der Virtualisierung nicht korrekt gelesen.
 
Zurück
Oben