staging.inyokaproject.org

Schnelleres Kopieren mittels tmpfs

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

thometal

Anmeldungsdatum:
27. Oktober 2007

Beiträge: Zähle...

Hi,

ich habe ein kleines Raid5 System und wenn ich innerhalb des Raid daten kopiere oder verschiebe dann habe ich ca. 50-70mb/s. Das gleiche Raidsystem hatte ich auch unter Opensolaris mit ZFS am laufen jedoch hatte ich da Datenraten von bis zu 350mb/s.

Warum?

Weil ZFS zuerst den ZFS-Cache(RAM) voll schreibt und dann vollständig leert und ggf. wieder von vorne. Ich hatte ca. 6gb Cache. Bei dem gewöhnlichen kopieren wird jedoch nur eine viel kleinere Menge an Daten zwischen gespeichert und der Festplattenkopf wechselt viel öfters die Lese-Schreibposition. Was zu einer deutlich schlechteren Performance führt.

Ich habe bei an meinem NB mal folgendes getestet.

1. Kopieren von Daten auf eine Ramdisk. 2. Wenn alle Daten angekommen zum Ziel Ordner verschieben. Alles hat 40 Sekunden gedauert.

Normales kopieren hat 54 Sekunden gedauert.

Als Dateisystem habe ich ext4 benutzt. Man sieht also das trotz der "delayed write features" und dem Linux Cache noch mit der oben genannter Methode noch 20% oder mehr an Performance herauszukitzeln ist. Außerdem funktioniert es mit jedem Dateisystem.

Leider funktioniert mein kleines Beispiel nur wenn die zukopierende Menge an Daten kleiner als der Cache ist. Aber vielleicht kann man das ja noch erweitern wenn Interesse da ist.

Hier erstmal der die Befehle die ich benutzt habe.

fürs erstellen

1
2
sudo mount -t tmpfs -o size=3G tmpfs ramdisk/
sudo chown $USER:$USER ramdisk/

fürs kopieren

1
2
cp $1 ramdisk/
mv ramdisk/ $2

und fürs verschieben einfach ans kopieren

1
rm $1 -r

dranhängen

fürs ramdisk löschen einfach

1
sudo umount ramdisk/

Außerdem wären vielleicht einige Benchmarks hilfreich. Jedoch sollte der Recher zwischen dem kopieren neugestartet werden um ausschließen zukönnen das die Zeiten durch Linux-Caching verfälscht werden.

LG TT

thometal

(Themenstarter)

Anmeldungsdatum:
27. Oktober 2007

Beiträge: 48

Habe mal noch etwas geschraubt.

Habe dazu jene Scripte fertig gestellt. Cache ist jetzt 3G lässt sich aber einfach umstellen.

Für Kopieren und fürs Verschieben.

Benutzen auf eigene Gefahr. Sollte aber nichts passieren.

Nächste Schritt wird sein Kopiermengen zu unterstüzen die größer sind als der Cache.

Wäre schön wenn ich ein paar Benchmarks bekommen würde, besonders hilfreich wären einpaar mit verschlüsselung und oder raid, lvm. Beim kopieren von 1500 jpgs hat war mein Script ca. 25% schneller von 3:50 → 2:50.

ttcp.sh (249 Bytes)
Download ttcp.sh
ttmv.sh (260 Bytes)
Download ttmv.sh

PhotonX

Avatar von PhotonX

Anmeldungsdatum:
3. Juni 2007

Beiträge: 4471

Sind die Skripte nur für Raid-Verbunde oder nutzen sie auch bei Einzelplatten ohne Raid was?

thometal

(Themenstarter)

Anmeldungsdatum:
27. Oktober 2007

Beiträge: 48

Das nützt auch was bei einzel Festplatten nicht nur bei Raid.

eventuell vorher ins Script schauen und Cachegröße verändern.

JaVaEs

Anmeldungsdatum:
1. Januar 2009

Beiträge: Zähle...

ich werde das script in den nächsten tagen mal testen und die performance überprüfen, bin gespannt ob ich einen geschwindigkeitszuwachs spüre und messen kann.

thometal

(Themenstarter)

Anmeldungsdatum:
27. Oktober 2007

Beiträge: 48

JaVaEs schrieb:

ich werde das script in den nächsten tagen mal testen und die performance überprüfen, bin gespannt ob ich einen geschwindigkeitszuwachs spüre und messen kann.

Bestimmt, am deutlichsten ist es wenn du viele kleine Dateien kopierst. Vielleicht mal noch zu Rechner, Datenmenge und Dateisystem angeben.

nox24

Avatar von nox24

Anmeldungsdatum:
8. Februar 2008

Beiträge: 1260

thometal schrieb:

ich habe ein kleines Raid5 System und wenn ich innerhalb des Raid daten kopiere oder verschiebe dann habe ich ca. 50-70mb/s. Das gleiche Raidsystem hatte ich auch unter Opensolaris mit ZFS am laufen jedoch hatte ich da Datenraten von bis zu 350mb/s.

Warum?

Weil ZFS zuerst den ZFS-Cache(RAM) voll schreibt und dann vollständig leert und ggf. wieder von vorne. Ich hatte ca. 6gb Cache. Bei dem gewöhnlichen kopieren wird jedoch nur eine viel kleinere Menge an Daten zwischen gespeichert und der Festplattenkopf wechselt viel öfters die Lese-Schreibposition. Was zu einer deutlich schlechteren Performance führt.

Hallo,

aber lag die überaus stolze Geschwindigkeit von 350mb/s nur an dem ZFS Dateisystem? ZFS on FUSE wird nicht das gleiche erreichen oder?

Hast du jetzt RAID5 mit mehreren Festplatten oder nur eine mit Partitionen? Software-RAID?

Danke für die Infos schon mal!

Gruß Benjamin

thometal

(Themenstarter)

Anmeldungsdatum:
27. Oktober 2007

Beiträge: 48

nox24 schrieb:

thometal schrieb:

ich habe ein kleines Raid5 System und wenn ich innerhalb des Raid daten kopiere oder verschiebe dann habe ich ca. 50-70mb/s. Das gleiche Raidsystem hatte ich auch unter Opensolaris mit ZFS am laufen jedoch hatte ich da Datenraten von bis zu 350mb/s.

Warum?

Weil ZFS zuerst den ZFS-Cache(RAM) voll schreibt und dann vollständig leert und ggf. wieder von vorne. Ich hatte ca. 6gb Cache. Bei dem gewöhnlichen kopieren wird jedoch nur eine viel kleinere Menge an Daten zwischen gespeichert und der Festplattenkopf wechselt viel öfters die Lese-Schreibposition. Was zu einer deutlich schlechteren Performance führt.

Hallo,

aber lag die überaus stolze Geschwindigkeit von 350mb/s nur an dem ZFS Dateisystem? ZFS on FUSE wird nicht das gleiche erreichen oder?

Hast du jetzt RAID5 mit mehreren Festplatten oder nur eine mit Partitionen? Software-RAID?

Danke für die Infos schon mal!

Gruß Benjamin

Hi,

1. also der Hardware aufbau ist der gleiche da habe ich nicht verändert. 6 Hdds an Southbridge ICH9/10 R. Gleiches Mainboard, gleicher CPU, gleicher RAM etc.

2. Und auch das kopieren war gleich beides mal halt quelle und ziel auf dem Raidarray.

3. FUSE wird nicht das gleicher erreichen da ZFS ja dann ZFS nicht im Kernel steckt und deshalb nie so schnell sein wird als wenns im Kernel steckt.

4. mdadm und das ZFS raid sind beides Software Raids auf dem oben gennaten Aufbau.

5. Der Beispieltest mit den 54 zu 40 Sekunden war auf meinen Notebook gemacht wurden, aber es sollte ja auch prinzipell auf Raids gehen. Habe ich aber noch nicht getestet.

Red_Radish

Anmeldungsdatum:
7. September 2007

Beiträge: 770

Hast du mal daran gedacht, ein anderes Programm zum kopieren zu nehmen als cp?

Wie wäre es z.B. mit

1
star -copy -p -no-fsync -sparse -xdot bs=1m fs=128m ...

Details in der Manpage zu star.

nox24

Avatar von nox24

Anmeldungsdatum:
8. Februar 2008

Beiträge: 1260

Hallo Red Radish,

ist den star schneller?

PS: Danke thometal für die Infos. 👍

Red_Radish

Anmeldungsdatum:
7. September 2007

Beiträge: 770

nox24 schrieb:

ist den star schneller?

Was schneller ist, ist abhängig von unzähligen Faktoren ( welches Dateisystem?, welches Medium (Flash, ..)?, wohin wird kopiert (gleiches Medium vs. anderes),...) Aber häufig ist star schneller. Probiere es einfach aus.

Antworten |