Ich habe eine E/A-intensive Java-Tomcat-Anwendung, wo ich htmlunit-Tests in einer moderneren Clusterumgebung ausführen möchte. Ich habe deshalb auch Docker berücksichtigt, der coole Features bieten kann, indem er Schwarm und so weiter anwendet.I/O intensive Java-Anwendung beschleunigt auf Docker auf begrenzten Ressourcen
Der Test wird für eine Oracle-Datenbank ausgeführt und erstellt Datenverkehr auch auf der lokalen E/A. Ich bin nur neugierig auf eine Frage:
Wenn ich die Tests mit einer einfachen Installation des Produkts mit begrenzten Ressourcen (load15 Faktor erhöht über 2 auf einem 1 CPU-System) läuft die Testlaufzeit ist ~ 35% langsamer als auf derselben Umgebung (begrenzte Ressourcen) unter Verwendung eines dockerisierten Ansatzes der Testausführung. Wenn genügend Ressourcen vorhanden sind, um den Ladefaktor unter 1 zu halten (auf einem 1-CPU-System), sind die Laufzeiten zwischen einfacher Installation und dockerisierter Installation nahezu identisch.
Ich bin auf der Suche nach Möglichkeiten, dies zu erklären. Geht es um Caching-Mechanismen eines Overlay-Dateisystems? Wohin, wenn man das untersucht?
Die genaue Antwort würde eine vollständige Analyse des Systems erfordern, aber ein Beispiel, wie dies geschehen kann, ist, wenn Sie eine Menge von E/A-Arbeit parallel erstellen. Wenn Sie auf CPU-Limits stoßen, wird Ihre E/A mehr serialisiert und daher schneller. Oder allgemeiner ausgedrückt: Profile zur Leistungsminderung variieren je nachdem, welcher Engpass getroffen wird. – biziclop