2017-08-17 3 views
2

Ich portiere ein vorhandenes Projekt mit Grunt-Datei-Uhren zu einem Docker-Entwicklungscontainer. Die Quelldateien sind an den Container gebunden, und Grunt beobachtet die Dateien auf Änderungen (dies kann wahrscheinlich optimiert werden, aber mein aktuelles Anliegen ist: einfach das aktuelle Setup innerhalb von Docker arbeiten lassen).Docker Volume mit Grunt-Datei watch

Auf dem Mac habe ich enorme CPU-Auslastung, daher lese ich die performance tuning guide für Osxfs. Die Anleitung erwähnt die Lautstärkemodi cached und delegated.

Die Beschreibung für delegated sagt:

:

nach Ansicht des Behälters (Genehmigung Verzögerungen, bevor Updates auf dem Behälter in dem Host erscheinen)

Für cached maßgebend ist [...] bietet alle Garantien der delegierten Konfiguration und einige zusätzliche Garantien rund um den vi Schreibvorgänge, die von Containern ausgeführt werden. Daher verbessert Cached im Allgemeinen die Leistung von rechenintensiven Arbeitsauslastungen auf Kosten einer temporären Inkonsistenz zwischen dem Host und dem Container.

Im Vergleich zu die Einstellung hat cached Leistung verbessern? Werden "read-heavy workloads" aus der Containerperspektive gesehen?

Um es kurz zu machen: Was ist die optimale Einstellung, um die CPU-Auslastung für eine Entwicklungsumgebung zu reduzieren, die Dateiwatches verwendet? cached oder delegated?

Antwort

1

Ok, also habe ich ein paar Tests gemacht und hier sind meine Ergebnisse. Setup:

  • MacBook Air 11" , Anfang 2014
  • macOS 10.12.6
  • Docker 17.06.0-ce-MAC19 (18663)
  • Uhr Aufgabe Polling für ~ 1.000 Dateien

Die Tauschprozesse, die CPU-Zyklen im Host auffressen, sind hyperkit und com.docker.osxfs Die folgenden Prozentwerte sind die durchschnittliche CPU-Auslastung, die für fünf Stichproben verwendet wurde:

  • delegated: 18,7% 0,0% + hyperkit com.docker.osxfs = 18,7%
  • cached: 24,3% 0,1% + hyperkit com.docker.osxfs = 24,4%
  • default aka. consistent: 152,0% hyperkit + 68,9% com.docker.osxfs = 220,9%

Funktionalität weise habe ich keinen Unterschied bemerken (!). Beim Ändern einer Datei außerhalb des Containers wurden die Änderungen in jedem der drei Fälle praktisch sofort von der Uhr übernommen.Also werde ich jetzt den delegated Modus verwenden.

+0

Gut zu lesen, da ich genau das gleiche Setup habe, aber absolut nicht in der Lage, Grunt zu sehen, um eine Änderung zu sehen:/Ich bin seit etwa 5 Stunden auf ... – MrUpsidown

+1

@MrUpsidown Auf dem Mac funktionierte das out-of-the -Box afair (egal, welche der drei Einstellungen ich nahm .. das war nur über CPU-Auslastung Optimierung). Meine Windows-Kollegen müssen ein Tool mit dem Namen "docker-volume-watcher" ausführen, ansonsten werden in der Docker-Umgebung keine Änderungen vorgenommen. – qqilihq

+0

Ich hatte Probleme mit meiner Grunt-Installation. Habe dies jetzt behoben und benutze auch den delegierten Modus (um meinen eigenen Design-Ordner für ein Magento 2-Setup zu mounten), da es definitiv die schnellste Methode ist. – MrUpsidown