2016-05-09 9 views
6

Ich versuche, die Gesamtleistung des Systems der laufenden Docker mit der Phoronix Test Suite 6.4.0 Milestone 2 läuft in einem Filzhut zum Benchmark: 23 Bild basierten Container.Die Beseitigung der Auswirkungen von unionfs auf Ergebnisse, wenn innerhalb Docker Benchmarking

Eine Sache, die in Betracht gezogen werden muss, ist, dass Docker eine proprietäre unionfs zum Speichern von Daten verwendet. Wenn jedoch eine reale Anwendung (wie Apache) in Docker ausgeführt wird, werden die persistenten Daten normalerweise in einem dedizierten Ordner auf dem Host gespeichert, der auf einem Standard-Linux-Dateisystem wie ext4 oder in meinem Fall btrfs läuft.

Die Lösung, die ich vorschlage, ist die „docker volume“ zu verwenden, um ein Host-Verzeichnis in Docker zu montieren. Die Sache ist, ich weiß nicht, welche Verzeichnisse in den Benchmarks verwendet werden sollen und müssen innerhalb des Docker-Containers eingehängt werden.

Der Test Suite pts/disk zum Beispiel auf jeden Fall Docker Volumina statt unionfs verwenden sollten. Es enthält diese Tests.

pts/compress-gzip 
pts/sqlite 
pts/apache 
pts/pgbench 
pts/compilebench 
pts/iozone 
pts/dbench 
pts/fs-mark 
pts/fio 
pts/tiobench 
pts/postmark 
pts/aio-stress 
pts/unpack-linux 

Welche Verzeichnisse im Docker Behälter von Host montiert werden soll (Docker Bände gemacht)? Ist es sogar eine gute Idee, die Andockvolumes zu verwenden? Gibt es noch andere Vorbehalte beim Benchmarking von Docker?

Antwort

0

Wie in "Mount a shared-storage volume as a data volume" erwähnt

Neben einem Host-Verzeichnis in Ihrem Container zu Montage, einige Docker volume plugins ermöglichen es Ihnen, Bereitstellung und gemeinsam genutzten Speicher montieren, wie iSCSI, NFS oder FC.

Seit Docker 1,9, dies mit docker volume create getan wird (und dann montieren Sie diese Datenträger in ihren erwarteten Pfade in dem Behälter)

das Ihnen erlaubt:

Welche Verzeichnisse im Docker Behälter sollte vom Host

Jeder Ordner, umfassen persistenten Daten und/oder hat ein hohes Volumen an IO-Operationen montiert werden.

+0

Just zu beachten, ist die Antwort auf die Frage „warum ein Datenvolumen Plugin wie Flimmern verwenden“ statt nur „Docker Datenvolumen“ ist „Im Gegensatz zu einem Volumen Docker Daten, die auf einem einzigen Server verbunden ist, ein Flocker Datenvolumen Dataset genannt, ist portabel und kann mit jedem Container in Ihrem Cluster verwendet werden. " Afaik, wenn ich Portierbarkeit opfern, Docker Datenvolumen ist funktionell äquivalent und wahrscheinlich sogar schneller als jedes Docker Volume-Plugin, oder? – Slazer

+0

@Slazer Ich stimme zu. Ich bevorzuge nur Docker Volume erstellen seit Docker 1.9 als, Plugin oder nicht, es hält Volumes mehr sichtbar, anstatt ausgeblendet zu werden, ein Container, der nur zum Starten (nie ausgeführt) und von anderen Containern bereitgestellt wird. – VonC

+0

Könnten Sie mich bitte beraten, wenn ich mir die Tests ansehe, die ich ausführen werde (in der Regel Festplatten-I/O-intensive Aufgaben mit realen Anwendungen), welche Ordner sind die besten Kandidaten für die Bereitstellung vom Host (als Andock- oder Docker-Volume) Plugin)? Ich habe den Test nicht programmiert, daher sehe ich keine einfache Möglichkeit zu erraten, welche Ordner verwendet werden. Die Tests werden als Root in einem Docker-Container ausgeführt. – Slazer