为什么我的 Ubuntu 系统上所有硬盘都很慢?

为什么我的 Ubuntu 系统上所有硬盘都很慢?

在我的计算机上,双启动 Ubuntu 12.04 LTS(内核 3.5)和 Windows 7,硬盘速度在 Windows 上非常快,但在 Ubuntu 上非常慢。当我使用 Ubuntu Live CD 启动 13.04(内核 3.8)和预发布版 13.10(内核 3.11)时,速度仍然很慢。但是,当我使用 Knoppix(内核 3.9)启动时,速度缓慢的情况消失了!

有人知道原因吗?或者如何在 Ubuntu 中修复这个问题?

以下是使用完全相同硬件的速度:

  • Ubuntu 12.04 LTS、13.04、13.10:大约 1 MB/秒,使用 /bin/du 复制文件时估算。
  • Windows 7:Windows 报告为 168 MB/秒
  • Knoppix:与 Windows 差不多,肯定超过 100MB/秒

内部和外部驱动器都出现了速度缓慢的情况:内部 SSD RAID(3ware 9750-4i 卡)、内部 Western Digital Red(不在 RAID 卡上)以及使用 USB 3.0、Firewire 和 eSATA 的外部驱动器。

这台计算机本身有一个非常速度快的 6 核 CPU 和 32 GB RAM,因此计算机性能不是问题。这是一台全新的计算机,因此可能存在配置错误。

琐事:最初,我以为问题仅限于 USB 3.0,而我的供应商(endpcnoise.com)猜测我的计算机上的 ASmedia 芯片组是罪魁祸首,因为 Ubuntu 对它的支持“充其量只是基本的”。

一些时间信息:将 20 MB 文件复制到系统中的任何磁盘或从系统中的任何磁盘复制 20 MB 文件需要 15 秒。以下是 Ubuntu 13.04 Live CD 上的 SSD RAID:

$ time cp bigfile bigfile2

real    0m14.866s
user    0m0.000s
sys     0m0.056s

当我启动 Knoppix 时,问题完全消失:

$ time cp bigfile bigfile2
real    0m0.034s
user    0m0.000s
sys     0m0.013s

当我在这样的复制之前和之后运行 dmesg /var/log/syslog 时,没有写入任何额外的消息。(查看完整的 dmesg 输出)但我确实看到了一些与正在测试的 SSD 相关的消息:

...
[    0.882760] LSI 3ware SAS/SATA-RAID Controller device driver for
Linux v3.26.02.000.
[    0.883566] ahci 0000:00:1f.2: version 3.0
[    0.883643] ahci 0000:00:1f.2: irq 80 for MSI/MSI-X
[    0.889807] e1000e: Intel(R) PRO/1000 Network Driver - 2.0.0-k
[    0.889809] e1000e: Copyright(c) 1999 - 2012 Intel Corporation.
[    0.891377] xor: automatically using best checksumming function:
[    0.899068] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 6 Gbps
0x31 impl SATA mode
[    0.899071] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio
slum part ems apst
[    0.899074] ahci 0000:00:1f.2: setting latency timer to 64
...
[    1.234773] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    1.234785] ata7: SATA link down (SStatus 0 SControl 300)
[    1.234802] ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[    1.234820] ata5: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
...
[    1.990817] sd 0:0:0:0: Attached scsi generic sg3 type 0
[    1.990833] sd 0:0:0:0: [sdb] 1874978816 512-byte logical blocks: (959 GB/894 GiB)
[    1.993034] sd 0:0:0:0: [sdb] Write Protect is off
[    1.993036] sd 0:0:0:0: [sdb] Mode Sense: 23 00 10 00
[    1.993158] sd 0:0:0:0: [sdb] Write cache: enabled, read cache: enabled, supports DPO and FUA
[    1.995812]  sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 >
[    2.000255] sd 0:0:0:0: [sdb] Attached SCSI disk
[    2.292132] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: (null)
...
[    9.428287] 3w-sas: scsi0: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.

最后一行解释这里

这是否指出了根本原因?

hdparm 在 Ubuntu 12.04 和 Knoppix 上报告的结果相同,除了 -Q(queue_depth),但在 Ubuntu 上更改它没有明显的效果:

$ sudo hdparm -acdgkmurABCMNQW /dev/sda

/dev/sda:
 multcount     = 16 (on)
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 364801/255/63, sectors = 5860533168, start = 0
 look-ahead    =  1 (on)
 APM_level      = not supported
 drive state is:  active/idle
 acoustic      = not supported
 max sectors   = 5860533168/5860533168, HPA is disabled
 queue_depth   = 31  (Knoppix had value = 1, but changing on Ubuntu didn't help)
 write-caching =  1 (on)

这是 lshw:

$ sudo lshw -c bus
  *-core
       description: Motherboard
       product: P9X79
       vendor: ASUSTeK COMPUTER INC.
       physical id: 0
       version: Rev 1.xx
       serial: 130410781200420
       slot: To be filled by O.E.M.
  *-usb:0
       description: USB controller
       product: X79 series chipset USB2 Enhanced Host Controller #2
       vendor: Intel Corporation
       physical id: 1a
       bus info: pci@0000:00:1a.0
       version: 06
       width: 32 bits
       clock: 33MHz
       capabilities: pm debug ehci bus_master cap_list
       configuration: driver=ehci_hcd latency=0
       resources: irq:23 memory:fb627000-fb6273ff
  *-usb
       description: USB controller
       product: ASM1042 SuperSpeed USB Host Controller
       vendor: ASMedia Technology Inc.
       physical id: 0
       bus info: pci@0000:06:00.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: msi msix pm pciexpress xhci bus_master cap_list
       configuration: driver=xhci_hcd latency=0
       resources: irq:17 memory:fb400000-fb407fff
  *-usb
       description: USB controller
       product: ASM1042 SuperSpeed USB Host Controller
       vendor: ASMedia Technology Inc.
       physical id: 0
       bus info: pci@0000:07:00.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: msi msix pm pciexpress xhci bus_master cap_list
       configuration: driver=xhci_hcd latency=0
       resources: irq:19 memory:fb300000-fb307fff
  *-firewire
       description: FireWire (IEEE 1394)
       product: VT6315 Series Firewire Controller
       vendor: VIA Technologies, Inc.
       physical id: 0
       bus info: pci@0000:09:00.0
       version: 01
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress ohci bus_master cap_list
       configuration: driver=firewire_ohci latency=0
       resources: irq:17 memory:fb100000-fb1007ff ioport:b000(size=256)
  *-usb:1
       description: USB controller
       product: X79 series chipset USB2 Enhanced Host Controller #1
       vendor: Intel Corporation
       physical id: 1d
       bus info: pci@0000:00:1d.0
       version: 06
       width: 32 bits
       clock: 33MHz
       capabilities: pm debug ehci bus_master cap_list
       configuration: driver=ehci_hcd latency=0
       resources: irq:23 memory:fb626000-fb6263ff
  *-serial UNCLAIMED
       description: SMBus
       product: X79 series chipset SMBus Host Controller
       vendor: Intel Corporation
       physical id: 1f.3
       bus info: pci@0000:00:1f.3
       version: 06
       width: 64 bits
       clock: 33MHz
       configuration: latency=0
       resources: memory:fb624000-fb6240ff ioport:f000(size=32)

答案1

我从当前的内核 32 位 PAE 切换到 64 位内核。磁盘写入现在很快。这是使用 Ubuntu 13.04 时的情况。

这个故事的寓意是:如果你有超过 4GB 的 RAM,请使用 64 位 Linux。尽管 PAE 内核可以工作,但也可能存在这样的问题。

相关内容