NFS Testergebnisse

  • Hallo,
    ich hatte eigentlich nur das script kopiert und meine Werte eingetragen.
    Hier sind meine Einstellungen:


    #!/bin/sh
    # IP of your NFS server
    serverip=192.168.14.33
    # exported directory on your NFS server
    exportdir=/volume1/Dreambox
    # mount point on dbox
    dboxmountpoint="/media/net/DS212"
    # filesize to transfer in MBytes.
    # At least 8 MByte. Good values are 32 or 64 MByte.
    # Try 128 to be more accurate (takes much longer!)
    filesize=64
    # block sizes to test in KBytes, possible values are 1 2 4 8 16 32.
    # values have to be separated with spaces. See examples below.
    # blocksizelist="4 8 32"
    # blocksizelist="16"
    blocksizelist="4 8 16 32"
    # wether to enable synchronous reading, writing. Possible values are "yes"
    # or no. Normally synchronous reading or writing should be slower than
    # asynchronous, so to save some time most people would say "no" here.
    enablesynctests="no"



    ##################################################################
    ######## don't edit below this line ########
    ##################################################################


    bs=8192
    count=`expr $filesize \\* 1048576 / $bs`
    wlist=""
    rlist=""
    synctests="async"
    if [ $enablesynctests = "yes" ]; then
    synctests="sync "$synctests
    fi


    echo
    echo "Measuring NFS throughput..."
    for factor in $blocksizelist
    do
    for protocol in udp tcp
    do
    for synchronized in $synctests
    do
    size=`expr $factor \\* 1024`
    bitcount=`expr $bs \\* $count \\* 8`
    umount $dboxmountpoint 2>/dev/null
    mount -t nfs -o rw,soft,$protocol,nolock,$synchronized,rsize=$size,wsize=$size $serverip:$exportdir $dboxmountpoint
    echo "Mount options: "$protocol", "$synchronized", wsize="$size
    echo "writing "$filesize" MBytes..."
    a=`date +%s`
    dd if=/dev/zero of=$dboxmountpoint/test bs=$bs count=$count 2>/dev/null;
    if [ $? = "0" ]
    then
    z=`date +%s`
    duration=`expr $z - $a`
    throughput=`expr $bitcount / $duration`
    echo "Success after "$duration" seconds"
    else
    throughput="Failure"
    echo "Failure"
    fi
    wlist=$wlist$throughput" with "$protocol","$synchronized",wsize="$size"\\n"

    echo "Mount options: "$protocol", "$synchronized", rsize="$size
    echo "reading "$filesize" MBytes..."
    a=`date +%s`
    dd of=/dev/null if=$dboxmountpoint/test bs=$bs count=$count 2>/dev/null;
    if [ $? = "0" ]
    then
    z=`date +%s`
    duration=`expr $z - $a`
    throughput=`expr $bitcount / $duration`
    echo "Success after "$duration" seconds"
    else
    throughput="Failure"
    echo "Failure"
    fi
    rlist=$rlist$throughput" with "$protocol","$synchronized",rsize="$size"\\n"
    echo
    done
    done
    done


    echo "Results for write throughput:"
    echo -e $wlist | sort -nr | sed 's/^\\([0-9]*\\)\\([0-9]\\{3\\}\\)\\([0-9]\\{3\\}\\(.*\\)\\)/\\1.\\2 Mbit\\/s\\4/g'


    echo "Results for read throughput:"
    echo -e $rlist | sort -nr | sed 's/^\\([0-9]*\\)\\([0-9]\\{3\\}\\)\\([0-9]\\{3\\}\\(.*\\)\\)/\\1.\\2 Mbit\\/s\\4/g'



    Danke

  • Hallo,
    hat keiner eine Idee? Ich krieg es nicht hin. Ich bin der Meinung das alles richtig eingegebne ist. Wenn den / vor volume1 weg mach dann kommt folgende Meldung:


    root@dm800:/usr/script# ./Speed.sh


    Measuring NFS throughput...
    mount: 192.168.14.33:volume1/Dreambox failed, reason given by server: Permission denied
    Mount options: udp, async, wsize=4096
    writing 64 MBytes...
    Success after 30 seconds
    Mount options: udp, async, rsize=4096
    reading 64 MBytes...
    Success after 1 seconds


    mount: 192.168.14.33:volume1/Dreambox failed, reason given by server: Permission denied
    Mount options: tcp, async, wsize=4096
    writing 64 MBytes...
    Success after 29 seconds
    Mount options: tcp, async, rsize=4096
    reading 64 MBytes...
    Success after 1 seconds


    mount: 192.168.14.33:volume1/Dreambox failed, reason given by server: Permission denied
    Mount options: udp, async, wsize=8192
    writing 64 MBytes...
    Success after 29 seconds
    Mount options: udp, async, rsize=8192
    reading 64 MBytes...
    Success after 1 seconds


    mount: 192.168.14.33:volume1/Dreambox failed, reason given by server: Permission denied
    Mount options: tcp, async, wsize=8192
    writing 64 MBytes...
    Success after 29 seconds
    Mount options: tcp, async, rsize=8192
    reading 64 MBytes...
    Success after 1 seconds


    mount: 192.168.14.33:volume1/Dreambox failed, reason given by server: Permission denied
    Mount options: udp, async, wsize=16384
    writing 64 MBytes...
    Success after 29 seconds
    Mount options: udp, async, rsize=16384
    reading 64 MBytes...
    expr: division by zero
    Success after 0 seconds


    mount: 192.168.14.33:volume1/Dreambox failed, reason given by server: Permission denied
    Mount options: tcp, async, wsize=16384
    writing 64 MBytes...
    Success after 30 seconds
    Mount options: tcp, async, rsize=16384
    reading 64 MBytes...
    Success after 1 seconds


    mount: 192.168.14.33:volume1/Dreambox failed, reason given by server: Permission denied
    Mount options: udp, async, wsize=32768
    writing 64 MBytes...
    Success after 29 seconds
    Mount options: udp, async, rsize=32768
    reading 64 MBytes...
    Success after 1 seconds


    mount: 192.168.14.33:volume1/Dreambox failed, reason given by server: Permission denied
    Mount options: tcp, async, wsize=32768
    writing 64 MBytes...
    Success after 29 seconds
    Mount options: tcp, async, rsize=32768
    reading 64 MBytes...
    Success after 1 seconds


    Results for write throughput:
    sed: bad option in substitution expression
    Results for read throughput:
    sed: bad option in substitution expression


    und danach muss ich die Box neu starten weil der mount weg ist. Am mount sollte alles richtig sein, weil ich aufnehmen und wiedergeben kann. Es ruckelt nur bei Timeshift und da wollte ich mal meine Werte wissen.



    Ich bitte um Unterstützung.


    Danke

  • Der / ist schon ok, sonst klappt das mounten nicht,
    siehst du ja an der Ausgabe.


    Und wenn du nochmals das Script testen willst, dann erstelle in
    /media einen Ordner z.B. test und mounte dahin und nicht
    in das Verzeichnis vom automounter.

  • Quote

    Originally posted by crun


    Results for write throughput:
    sed: bad option in substitution expression
    Results for read throughput:
    sed: bad option in substitution expression


    Code
    echo -e $wlist | sort -nr | sed 's/^\\([0-9]*\\)\\([0-9]\\{3\\}\\)\\([0-9]\\{3\\}\\(.*\\\\)/\\1.\\2 Mbit\\/s\\4/g'


    Fehlermeldungen lesen ;)


    Mich deucht, da sind ein paar Backslashes zu viel escaped worden. Die stehen schon zwischen Hochkommas, werden also nicht mehr von der Shell verhunzt.


    Code
    root@dm7020hd:~# sed 's/^\\([0-9]*\\)\\([0-9]\\{3\\}\\)\\([0-9]\\{3\\}\\(.*\\)\\)/\\1.\\2 Mbit\\/s\\4/g'
    sed: bad option in substitution expression
    root@dm7020hd:~#
    root@dm7020hd:~# sed 's/^\([0-9]*\)\([0-9]\{3\}\)\([0-9]\{3\}\(.*\)\)/\1.\2 Mbit\/s\4/g'
    ^D
    root@dm7020hd:~#


    HTH,
    Andre.

  • Hey Danke, Genial,
    die vielen Backslashes waren es. Ich frag mich wie die da hin gekommen sind. Ich hatte das Script aus dem ersten Beitrag in eine txt Datei kopiert und umbenannt. Komisch. Hier mal meine Werte. Jetzt frag ich mich natürlich warum das ruckelt bei Timeshift von HD Sendern?


    Results for write throughput:
    53.687 Mbit/s with udp,async,wsize=4096
    53.687 Mbit/s with udp,async,wsize=32768
    53.687 Mbit/s with udp,async,wsize=16384
    53.687 Mbit/s with tcp,async,wsize=8192
    53.687 Mbit/s with tcp,async,wsize=4096
    53.687 Mbit/s with tcp,async,wsize=32768
    53.687 Mbit/s with tcp,async,wsize=16384
    48.806 Mbit/s with udp,async,wsize=8192


    Results for read throughput:
    59.652 Mbit/s with udp,async,rsize=4096
    59.652 Mbit/s with udp,async,rsize=32768
    59.652 Mbit/s with tcp,async,rsize=4096
    59.652 Mbit/s with tcp,async,rsize=32768
    59.652 Mbit/s with tcp,async,rsize=16384
    53.687 Mbit/s with udp,async,rsize=8192
    53.687 Mbit/s with udp,async,rsize=16384
    53.687 Mbit/s with tcp,async,rsize=8192


    Nochmals Großen Dank!

  • Quote

    Originally posted by crun
    Hey Danke, Genial,
    die vielen Backslashes waren es. Ich frag mich wie die da hin gekommen sind. Ich hatte das Script aus dem ersten Beitrag in eine txt Datei kopiert und umbenannt. Komisch.


    Ja, das ist schon ein sehr spezifischer semantischer Eingriff. LF vs. CRLF kann ich ja noch nachvollziehen, aber hier ist wohl ein Editor etwas sehr forsch rangegangen. Bei mir ist auch eine ')' auf mystische Weise verloren gegangen, was bei einem Cut&Paste innerhalb ein und desselben Browsers schon verwirrend ist. Oder war's die nachträgliche Applikation von "Insert CODE"?



    Wundert sich eigentlich niemand über die erstaunliche Gleichschaltung der Resultate bei unterschiedlichen Messungen? Das ist statistisch unwahrscheinlicher als ein 6er im Lotto.


    Hier liegt es daran, dass das Script nur mit integralen Sekunden misst, d.h. bei den beobachteten bescheidenen Durchsätzen von ca 6MB/s und 64MiB Testfilegröße haben wir einen Messfehler von 10%. Dazu kommt der Einfluss des Read Caches, den man in einigen Postings hier im Thread an fantastischen Durchsätzen erkennt, die Faktor 6 über den Möglichkeiten einer 100Base-Schnittstelle liegen...


    IMO wird der Test erst einigermaßen rund, wenn man 512MiB als filesize ansetzt. Das reduziert den Einfluss des Buffer Caches selbst auf 256MiB-Boxen halbwegs und nivelliert den Sekunden-Rundungsfehler auf weniger als 2%. Dauert natürlich länger, aber das haben richtige Benchmarks so an sich. 1024MiB wäre noch besser. Ein Test gegen einen kraftvollen Rechner, der eine RAM-Disk exportiert, wäre auch mal interessant, um die Fähigkeiten der Dreambox weitgehend vom Einfluss des unberechenbaren rotierenden Rosts entkoppelt zu sehen.


    Quote

    Jetzt frag ich mich natürlich warum das ruckelt bei Timeshift von HD Sendern?


    Der Test gestattet keinerlei Aussage über das Verhalten bei Timeshift. Schließlich misst er Schreiben und Lesen sequenziell nacheinander, nicht gleichzeitig. Klar, prinzipiell ist geswitchtes Ethernet heutzutage praktisch immer Full Duplex, aber die Platten im NAS sind es nicht - Timeshift führt dort zu Head Banging und die theoretische isolierte lineare Lese- bzw. Schreibrate geht flöten. Wenn das desktruktiv mit dem eher bescheidenen Sicherheitsabstand im real beobachteten Netzwerkdurchsatz interferiert, ist es vorbei mit ruckelfreiem Timeshift. Zumal dort auch Latenzen eine Rolle spielen, die hier ebenfalls nicht gemessen werden. Weiterhin arbeitet das Script am Durchsatzanschlag, d.h. drückt unerschöpflich neue Daten durch und misst dann irgendwann die benötigte Zeit. Komplexe Systeme verhalten sich u.U. vollkommen anders, wenn die Daten nicht so schnell kommen. Wenn ich Dein NAS mit 25Mbit/s feede, heißt das nicht, dass es noch 50% Reserven hat (das ist eine Annahme des gesunden Menschenverstands, aber die geht von einem nicht bewiesenen linearen Verhalten des Testaufbaus aus).


    Kurz gesagt: Würde man sich einen weitgehend realistischen Timeshift-Benchmark basteln, würde der auch Aussagen liefern, die auf Timeshift anwendbar wären ;)


    Auch wenn's nicht hilft,
    Andre.

  • Vielen Dank für deine Aufschlussreiche Erklärung. So tief steck ich natürlich nicht in der Materie. Klingt wenn man es so erklärt bekommt ziemlich logisch. Weißt du ob es einen Benchmark in der Art gibt wie du ihn beschrieben hast? Ich hab das Problem vorerst mit einer 2,5Zoll 80gb Festplatte gelöst die ich noch hatte und jetzt intern verbaut habe. Das hatte ich eigentlich nicht so geplant, wegen der Wärme in dem kleinen Gerät.


    Grüße
    Crun

  • Mene Zeiten von der 7020 sind sch*


    und dann ist das Script hängen geblieben.....


    Seitdem eich mein NAS umgestellt habe.
    Die Freigabe ist seit einiger zeit auf einem RAID-5.
    Das sollte aber eigentlich keine Auswirkungen haben.
    Denn bei der 7025 sind die Zeiten gut.

    Currald


    DM7020HD - Experimental 2017-02-16

    Edited 2 times, last by Currald ().

  • Hi,
    ich würde den Test ja auch gerne machen, aber bei mit kommt immer eine Fehlermeldung:

    Code
    Measuring NFS throughput...
    Mount options: udp, async, wsize=4096
    writing 64 MBytes...
    Failure
    Mount options: udp, async, rsize=4096
    reading 64 MBytes...
    Failure


    Meine Configuration:

    Code
    # exported directory on your NFS server
    exportdir=Filme
    # mount point on dbox
    dboxmountpoint="/media/net/DEPENDERNFS"


    ich glaube das die NFS Freigabe eigentlich in Ordnung sein müsste, weil nach Aufruf des Tests jetzt keine Fehlermeldung dazu kam.


    Warum kann er wo nicht schreiben?

    Xtrend et9000 mit OpenPLI 4
    SEDUlight
    FreeNAS 9

  • Kurze Frage.


    Wie lange läuft der Test?


    Hab das Image über DCC angestossen und nach 15min drehender Kreis abgebrochen?


    Würde mich Interressieren was meine DM<->NAs bringt.

  • DM8000 -> QNAP TS-569Pro (Anbindung über WiFi-n-Bridge):



    Auf der QNAP sieht es so aus:

    Files

    Grüße
    ...jp


    DM900 / OE2.5 Experimental ... und sehr glücklich damit :)

  • Irgendwie mag die Dreambox mich nicht.
    Hab mit DCC-E2 v1.50 über telnet versucht,
    aber Zugriff wird verweigert?


    root@dm800:/tmp# ./nfstest.sh
    -sh: ./nfstest.sh: Permission denied


    root@dm800:/usr/script# ./ nfstest
    -sh: ./: Permission denied
    root@dm800:/usr/script# ./ nfstest.sh
    -sh: ./: Permission denied


    Wo liegt der Fehler?

  • steht in der Fehlermeldung - das Script hat keine Ausführberechtigung.


    mit


    chmod u+x /tmp/nfstest.sh


    oder
    chmod 755 /tmp/nfstest.sh


    wird das Script für root ausführbar. Bin mir aber nicht ganz sicher, ob das Script unter OE2.0 noch Sinn macht, weil nur noch Blockrößen bis 8192 zugelassen werden. d.h. mit r/wzise 32768, 16384 und 8192 müsste immer das gleiche Ergebnis rauskommen ...


    Die Lese/Schreibperformance des aktuellen nfs mounts kann man auch mit einem "einfachen" Konsolenbefehl testen

    Gruß Fred


    Die Dreambox ist tot, es lebe die Dreambox

  • Anscheinend bin ich echt zu doof.


    Habe den Befehl aufgeführt.
    Nun:


    root@dm800:~# chmod 755 /tmp/nfstest.sh
    root@dm800:~# cd /tmp
    root@dm800:/tmp# ./nfstest
    -sh: ./nfstest: not found
    root@dm800:/tmp# ./nfstest.sh
    -sh: ./nfstest.sh: not found
    root@dm800:/tmp#


    WIe lautet den der einfache Konsolenbefehl?