Docker fixes filesystem I/O performance on Mac and Windows

Cei care ati folosit Docker pe Mac, probabil, v-ati lovit de problema performantei cand ati vrut sa folositi optiunea de shared volumes. Performanta era de cel putin vreo 10 ori mai slaba ca pe linux, inclusiv pe Windows fiind mai buna.
Pe repo-ul lor de GitHub sunt in continuare numeroase issues deschise legate de aceasta problema (#1, #2, #3 …)

Cu versiunea 2.3.1.0 de pe Mac sau Windows aceste probleme par a fi rezolvate.

Pe versiunea pentru Mac au folosit un tool numit mutagen.io care face la inceput un upfront sync, copiind toate fisierele de pe host, in container, dupa care watch-ul se face in interiorul container-ului, respectiv host filesystem-ul (osfx) nu mai este solicitat pentru fiecare read/write.

Au adus imbuntatiri inclusiv si pe Windows, chiar daca acolo situatia nu era asa critica, facand uz de mult-laudatul new feature pe Windows, numit WSL 2, care exact asta are ca scop, sa imbuntatea file system performance-ul cand vine vorba de sync-ul dintre un windows host machine si un linux VM.

Aici este prezentarea video de pe canalul oficial:

Download: Mac / Windows

6 Likes

Take the news with a grain of salt :slight_smile: Noi nu am observat nici o crestere in performanta si avem ceva servicii pe care le rulam cu shared volumes local, care includ vreo 2 frontenduri care folosesc watchuri la greu :man_shrugging:

Asta ar fi benchmark-ul facut de ei.
Imgur

Asta ar fi un alt benchmark facut de un un user random, pe acel thread:

Tested a symfony app

Before Edge:

with no vendor and var overlay volume
~ 2.8s
with overlays:
~ 2.1s

Edge with caching activated for project folder:

with no vendor and var overlay volume
~ 1.8s
with overlays:
~ 1.7s

Eu am probleme cu nodemon -L in docker, care trebuie sa facă poll la fisiere cu find ca sa repornească instanța de node dacă s-a schimbat un fișier. Foloseste 4 core-uri la 100% pe Core i9 pe mac…

O să fac un update să văd dacă merge nodemon fără -L sau dacă s-a redus utilizarea procesorului.

Au mai zis acum câțiva ani, când au introdus cached volumes că au rezolvat problema :smiley: Chiar dacă nici acum nu au rezolvat-o complet, măcar au mai îmbunătățit lucrurile, așa că tot mă declar mulțumit.

Am testat pe windows cu WSL2. Dupa 1minut mi-a urcat ramul la 99% (din 16gb ce e drept), tot ce aveam deschis era un php-fpm si un mysql (fara baze de date) si un proiect nou generat in symfony pe care testam syncul. Cu 99% ram dar isi facea treaba syncul. Presupun ca o sa urmeze un fix pe consumul aiurea de resurse (pe linux abia daca imi folosea 2gb de ram pe astea). Cat despre procesor nu prea a avut load pe el, maxim 5% (amd 2700x)

Se pare ca abia acum a venit marele improvement pe Mac.
De la versiunea 4.6, a aparut un experimental feature numit VirtioFS.

Alt articol relevant:
https://www.jeffgeerling.com/blog/2022/new-docker-mac-virtiofs-file-sync-4x-faster

2 Likes