Wie optimiere ich die eSATA-Leistung unter Linux?

Wie optimiere ich die eSATA-Leistung unter Linux?

Ich erlebe eine sehr langsame eSATA-Leistung. Etwa 5 MBit/s auf einer Festplatte, die problemlos 150-200 MBit/s schafft. Muss ich eine Einstellung oder ein Modul aktivieren, um es zu beschleunigen? Die Festplatte hat 4 TB und der Computer ist ein HP MicroServer. Der Kernel ist 3.2.0-4-amd64.

Aktualisieren:

Die Distribution ist Debian Lenny.

Ich habe mit dd if=/dev/zero of=/mnt/foo und if=/mnt/somebigfile.tar.gz of=/dev/null gemessen. Ich habe verschiedene Blockgrößen für dd sowie oflag=direct und iflag=direct ausprobiert.

Sowohl das Lesen als auch das Schreiben sind langsam. Am meisten Sorgen mache ich mir jedoch um das Schreiben, da diese Festplatte eigentlich für Backups verwendet werden sollte ...

Aktualisieren:

Ich habe noch einige Leistungstests mit dd durchgeführt. Hier sind die Ergebnisse:

(root@corvina) (14-08-17 22:40:29) (P:0 L:2) [0]
~ # alias drop-all-caches                         [R0 J0 L:0.70 1.13 1.35 U:3+11:29 pts/4 2122H]
drop-all-caches='sync ; echo 3 > /proc/sys/vm/drop_caches'
(root@corvina) (14-08-17 22:40:39) (P:0 L:2) [0]
~ # hdparm -Tt /dev/sda                           [R0 J0 L:0.60 1.10 1.33 U:3+11:29 pts/4 2123H]

/dev/sda:
 Timing cached reads:   2970 MB in  2.00 seconds = 1484.76 MB/sec
 Timing buffered disk reads: 528 MB in  3.01 seconds = 175.37 MB/sec
(root@corvina) (14-08-17 22:40:59) (P:0 L:2) [0]
~ # drop-all-caches; time dd if=/dev/zero of=/mnt/zero.dat bs=8k count=100k; time sync
102400+0 records in
102400+0 records out
838860800 bytes (839 MB) copied, 1,35067 s, 621 MB/s
dd if=/dev/zero of=/mnt/zero.dat bs=8k count=100k  0,03s user 1,32s system 91% cpu 1,485 total
sync  0,00s user 0,01s system 0% cpu 8,002 total
(root@corvina) (14-08-17 22:41:57) (P:0 L:2) [0]
~ # rm -vf /mnt/zero.dat                          [R0 J0 L:0.57 0.93 1.25 U:3+11:30 pts/4 2125H]
removed `/mnt/zero.dat'
(root@corvina) (14-08-17 22:42:28) (P:0 L:2) [0]
~ # drop-all-caches; time dd if=/dev/zero of=/mnt/zero.dat bs=8k count=1000k; time sync
1024000+0 records in
1024000+0 records out
8388608000 bytes (8,4 GB) copied, 68,5064 s, 122 MB/s
dd if=/dev/zero of=/mnt/zero.dat bs=8k count=1000k  0,41s user 22,31s system 33% cpu 1:08,58 total
sync  0,00s user 0,01s system 0% cpu 14,465 total
(root@corvina) (14-08-17 22:43:52) (P:0 L:2) [0]
~ # drop-all-caches; time dd if=/dev/zero of=/mnt/zero.dat bs=8k count=1000k oflag=direct; time sync
1024000+0 records in
1024000+0 records out
8388608000 bytes (8,4 GB) copied, 184,3 s, 45,5 MB/s
dd if=/dev/zero of=/mnt/zero.dat bs=8k count=1000k oflag=direct  0,79s user 109,24s system 59% cpu 3:04,62 total
sync  0,00s user 0,01s system 2% cpu 0,289 total
(root@corvina) (14-08-17 22:47:59) (P:0 L:2) [0]
~ # drop-all-caches; time dd of=/dev/null if=/mnt/zero.dat                                       16384000+0 records in
16384000+0 records out
8388608000 bytes (8,4 GB) copied, 82,3752 s, 102 MB/s
dd of=/dev/null if=/mnt/zero.dat  8,13s user 33,21s system 50% cpu 1:22,44 total
(root@corvina) (14-08-17 22:49:58) (P:0 L:2) [0]
~ # drop-all-caches; time dd of=/dev/null if=/mnt/zero.dat bs=8k
1024000+0 records in
1024000+0 records out
8388608000 bytes (8,4 GB) copied, 82,0298 s, 102 MB/s
dd of=/dev/null if=/mnt/zero.dat bs=8k  0,76s user 19,02s system 24% cpu 1:22,18 total
(root@corvina) (14-08-17 22:51:31) (P:0 L:2) [0]
~ # drop-all-caches; time dd of=/dev/null if=/mnt/zero.dat bs=8k iflag=direct
1024000+0 records in
1024000+0 records out
8388608000 bytes (8,4 GB) copied, 157,355 s, 53,3 MB/s
dd of=/dev/null if=/mnt/zero.dat bs=8k iflag=direct  0,88s user 85,48s system 54% cpu 2:37,42 total

Diese Zahlen sehen überhaupt nicht so aus wie die, die ich vorhin bekommen habe. Es ist ziemlich spät hier, also muss ich schlafen gehen. Ich hoffe, dass ich das am Dienstag genauer untersuchen kann.

Antwort1

Testen Sie zunächst Ihren Durchsatz

  • Im Terminal können Sie Folgendes verwenden: sudo hdparm -Tt /dev/sda(wobei /dev/sda Ihre Festplatte ist)
  • So führen Sie einen Schreibtest durch: dd if=/dev/zero of=/mnt/yourdisk/output.tmp bs=8k count=100k(mounten Sie Ihre Festplatte unter /mnt/Ihre Festplatte)
  • Und ein Lesetest: dd if=/mnt/yourdisk/output.tmp of=/dev/null bs=8k(erstellen Sie zuerst die Datei mit dem Schreibtest und mounten Sie die Platte)
  • Wenn Sie die GUI verwenden möchten und über Gnome verfügen, können Sie außerdem gnome-disks(Weitere Informationen zu diesem Projekt)

Finden Sie das schwächste Glied

Ich bevorzugeoben aufum zu analysieren, was auf Ihrem System vor sich geht, und um Engpässe zu identifizieren. Lesen/schreiben Sie auf das eSATA-Laufwerk (siehe oben) und behalten Sie gleichzeitig atop im Auge (drücken Sie, dwährend atop ausgeführt wird, um die Informationen zum Datenträger anzuzeigen). Was ist da los? Können Sie einen Screenshot bereitstellen?

Verbessern Sie die eSATA-Leistung

Hier sind einige allgemeine Tipps (mit den von Ihnen bereitgestellten Informationen kann ich nicht spezifischer werden. Bitte geben Sie uns weitere Informationen zu Ihrer Hardwarekette, wenn Sie spezifischere Tipps wünschen):

  • So erhalten Sie die richtigen Treiber für Ihre (e)SATA-Hardware
  • Einige Linux-Distributionen bieten scsitools(Projektseite), was auch sehr nützlich sein kann.
  • Verfügt Ihr BIOS über Optionen für Ihren eSATA-Anschluss, wie z. B.IDE- oder AHCI-Modus.

verwandte Informationen