Azure VM Swapspace
« | 21 Mar 2021 | »Für ein Jahr MSDN Abo bekommt man “aus Gottes Gnaden” dann ganze 45 Dollar Azure Guthaben. WOW, echt großzügig für 1000 Euro Schmiergeld!
Und die 45 Dollar reichen gerade um die billigste 1-Kern VM für etwa ein Jahr laufen zu lassen.
Doch leider crashen dort Compiler und andere Tools…
- 1 CPU Kern,
- 512 MB RAM
- 30 GB Festplatte
- Ubuntu Linux 18.04
Ein Azure VM mit diesen Eigenschaften ist aktuell das billigste Angebot. Aber bevor ich ein ganzes Jahr lang einen Raspberry PI zu Hause am Laufen halten muss, ist dieses Angebot genug, um hin und wieder mal einen Build dort laufen zu lassen.
Gesagt, getan … portal.azure.com, einloggen,
Ressourcen anlegen, starten, IP ablesen, Putty starten,
apt install build-essentials
usw. und am Ende make
.
Killed
nach ein paar Minuten.
Na toll! Wozu hat man eine VM in der Cloud, wenn der Regen dort auf den Compiler niederprasselt?
Nun, nachdem kleinere Kompilate durchgehen und ich im GATE Projekt stets am SQLITE Projekt hängen bleibe, drängt sich der Verdacht auf:
Dem Compiler geht der RAM aus.
Aber dann sollte eigentlich die SWAP Partition
aushelfen. Ist zwar langsamer, aber immerhin kommt man so über die Runden.
Doch offenbar sind keine SWAP-Partitionen in Linux Azure VMs vorkonfiguriert.
Aber nach einer kurzen Suche im Web war die Lösung schnell gefunden:
Microsoft hat seinen eigenen Azure-Dienst in den Cloud Distributionen
namens “Microsoft Azure Linux Agent” (waagent)
und dieser wird über /etc/waagent.conf
konfiguriert.
Wenn man dort folgende Zeilen einträgt (bzw. aktiviert):
bindet die VM einen Swap-Bereich auf einem temporären Storage ein. Dieser wird mit dem Beenden der VM ebenfalls freigegeben (bzw. gelöscht), also wird bei jedem Reboot dieser Bereich neu angelegt und formatiert.
Im Beispiel werden 4 GB (4096) für Auslagerungsdateien eingesetzt.
Fazit
Mit diesem kleinen Konfigurationsupdate läuft nun der GATE Build in Azure durch und bestätigt damit wieder einmal, dass ohne RAM bzw. virtuellen Speicher nichts mehr läuft.
Vorbei sind die Zeiten, wo man mit 64 MB RAM nicht wusste, wie man sie voll kriegen soll.
Naja … zumindest habe ich etwas über Azure gelernt … nämlich dass es für Buildvorgänge unverschämt teuer ist. Für Builds bleibe ich bei BitBucket. Aber wenn ich mal schnell eine Linux Konsole brauche, habe ich die Azure-VM nun griffbereit (samt SWAP).