Hochladen aus dem Speicher auf S3 und Benchmarking

Hochladen aus dem Speicher auf S3 und Benchmarking

Ich führe einige sehr einfache Zeitbefehle auf einem S3-Lese-/Schreibserver aus. Das Problem ist, dass ich nicht möchte, dass es durch System-E/A beeinflusst wird, und es aus dem Speicher herausholen möchte. Ein Freund hat vorgeschlagen, /dev/null als Pipe zu verwenden, aber ich habe einen Ordner mit 1000 Dateien, der etwa 1 GB groß ist.

Mein Bash-Befehl sieht derzeit so aus:

time aws s3 cp folder s3://mybucket/folder

Was schlagen Sie vor, damit nur das Schreiben aus dem Speicher zeitlich festgelegt wird?

Vielen Dank

Antwort1

Kopieren Sie das Verzeichnis auf eine Ramdisk und laden Sie es von dort hoch (und testen Sie es).

Welche Ramdisk? Es gibt einige Möglichkeiten:

  1. Vielleicht ist in Ihrem Betriebssystem bereits eines vorhanden und groß genug. Überprüfen Sie die Ausgabe von df(bequemer: df -h, falls unterstützt) auf Dateisysteme des Typs tmpfs. Es könnte sein /dev/shm. Ich gehe davon aus, /dev/shmdass es allgemein beschreibbar ist, also wenn es eine Ramdisk ist und sie nicht zu klein ist, können Sie sie verwenden.

  2. Möglicherweise gibt es eine separate Ramdisk nur für Ihren Benutzer. SieheWas ist dieser Ordner /run/user/1000?In meinem Debian oder Kubuntu df -h "$XDG_RUNTIME_DIR"kann ich dessen tmpfs bestätigen und dessen Größe und Einhängepunkt erfahren.

  3. Diese Antwortgibt ein Beispiel, wie man tmpfs bei Bedarf erstellt (mit der Größe 16 GiB, passen Sie es an Ihre Bedürfnisse und Ressourcen an):

    mount -o size=16G -t tmpfs none /mnt/tmpfs
    

    Sie benötigen hierfür Root-Zugriff.

Es gibt diese Frage:Wodurch wird die Größe des tmpfs bestimmt? Was passiert, wenn es voll ist?Vielleicht finden Sie es interessant.


Alternativ können Sie verwendenvmtouchum alle Dateien in Ihrem Verzeichnis zu lesen und in den virtuellen Speicher abzubilden. Ich an Ihrer Stelle würde eine Ramdisk bevorzugen. Wenn Sie aus irgendeinem Grund keine Ramdisk verwenden können, ist es dennoch gut zu wissen, was Sie vmtouchtun können.

Als normaler Benutzer können Sie Folgendes verwenden vmtouch -t:

-t
Virtuelle Speicherseiten berühren. Liest ein Byte von jeder Seite der Datei. Wenn die Seite nicht im Speicher vorhanden ist, wird ein Seitenfehler generiert und die Seite wird von der Festplatte in den Speichercache des Dateisystems gelesen.

-treicht möglicherweise nicht aus:

Hinweis: Obwohl garantiert ist, dass jede Seite in den Speicher geladen wurde, ist es möglich, dass die Seite bis zum vmtouchAbschluss des Befehls bereits aus dem Speicher gelöscht wurde.

Als Root können Sie Folgendes verwenden vmtouch -l:

-l
Seiten im physischen Speicher sperren. Diese Option funktioniert genauso wie die vorherige, -taußer dass sie mlock(2)alle Speicherzuordnungen aufruft und die Deskriptoren nach Abschluss nicht schließt. Wenn der Crawl erfolgreich ist, wird vmtouch am Ende auf unbestimmte Zeit blockiert. Die Dateien werden im physischen Speicher gesperrt, bis der vmtouchProzess beendet wird.

verwandte Informationen