![如何在 Linux 中优化 eSATA 性能?](https://linux22.com/image/1419399/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E4%BC%98%E5%8C%96%20eSATA%20%E6%80%A7%E8%83%BD%EF%BC%9F.png)
我发现 eSATA 性能非常慢。磁盘上的速度大约为 5 mb/s,而磁盘可以轻松处理 150-200 mb/s。我需要启用某些设置或模块来加快速度吗?磁盘是 4 TB,计算机是 HP MicroServer。内核是 3.2.0-4-amd64。
更新:
发行版是 Debian Lenny。
我使用 dd if=/dev/zero of=/mnt/foo 和 if=/mnt/somebigfile.tar.gz of=/dev/null 进行了测量。我尝试了 dd 的各种块大小以及 oflag=direct 和 iflag=direct。
读取和写入都很慢。但是,我最担心的是写入,因为这个磁盘本来应该用于备份...
更新:
我用 dd 做了一些性能测试。结果如下:
(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
这些数字看起来和我之前得到的数字完全不一样。现在这里已经很晚了,所以我得睡觉了。我希望周二能进一步调查此事。
答案1
首先测试吞吐量
- 使用终端,您可以使用:(
sudo hdparm -Tt /dev/sda
其中 /dev/sda 是您的磁盘) - 进行写入测试:(
dd if=/dev/zero of=/mnt/yourdisk/output.tmp bs=8k count=100k
将 yourdisk 挂载到 /mnt/yourdisk) - 并进行读取测试:(
dd if=/mnt/yourdisk/output.tmp of=/dev/null bs=8k
首先使用写入测试创建文件并安装磁盘) - 此外,如果您想使用 GUI,并且您有 Gnome,您可以使用
gnome-disks
(有关该项目的更多信息)
找到最薄弱的环节
我更喜欢使用在顶上分析系统上正在发生的事情并找出瓶颈。读取/写入 eSATA 驱动器(见上文),同时查看顶部(d
在运行顶部时按下以查看磁盘相关信息)。那里发生了什么?你能提供屏幕截图吗?
提高 eSATA 性能
以下是一些一般性提示(根据您提供的信息,我无法更具体。如果您需要更具体的提示,请向我们提供有关您的硬件链的更多信息):
- 为您的 (e)SATA 硬件获取正确的驱动程序
- 一些 Linux 发行版提供
scsitools
(项目现场),这也非常有用。 - 您的 BIOS 是否有针对 eSATA 端口的选项,例如IDE 或 AHCI 模式。