同步写入非常慢。Ubuntu 10.10,32 位,ext4

Ike*_*nez 8 linux performance ext4 hard-disk

我在运行 Ubuntu 10.10、32 位和 ext4 分区的 Macbook Pro 上运行 ActiveMQ。

Linux iker-laptop 2.6.35-23-generic-pae #40-Ubuntu SMP Wed Nov 17 22:32:51 UTC 2010 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

如果我在 ActiveMQ 中启用持久性,性能会急剧下降。我在其他机器上测试过同样的东西,差异是 2 个数量级。

有一个带有activeMQ的工具可以测试HD,结果如下:

iker@iker-laptop:~/apps/apache-activemq-5.4.1$ java -classpath lib/kahadb-5.4.1.jar org.apache.kahadb.util.DiskBenchmark 

Benchmarking: /home/iker/apps/apache-activemq-5.4.1/disk-benchmark.dat
Writes: 
  146171 writes of size 4096 written in 11.074 seconds.
  13199.477 writes/second.
  51.560455 megs/second.

Sync Writes: 
  197 writes of size 4096 written in 10.006 seconds.
  19.688187 writes/second.
  0.07690698 megs/second.

Reads: 
  5589861 reads of size 4096 read in 10.001 seconds.
  558930.2 writes/second.
  2183.321 megs/second.
Run Code Online (Sandbox Code Playgroud)

同步写入的性能是 s**t。一定有什么配置错误,但这是我注意到高清性能问题的唯一应用程序。

hdparm 抛出预期值:

iker@iker-laptop:~$ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   6282 MB in  2.00 seconds = 3141.73 MB/sec
 Timing buffered disk reads:  240 MB in  3.00 seconds =  79.88 MB/sec
Run Code Online (Sandbox Code Playgroud)

Kje*_*sen 7

同步 IO 的主要限制因素不是硬盘的吞吐量,而是从发出写入到提交到磁盘所需的时间。在这方面,硬盘驱动器最相关的性能指标是硬盘驱动器的寻道时间,而不是理想情况下的吞吐量。

除了对您不利的硬件之外,内核也是如此,我猜您可能会看到一个小的改进(尽管,如果您可以将基准测试(应用程序)离子化到在实时IO调度类下运行。默认情况下,应用程序将被安排在尽力而为类别下,这可能也会增加您的写入等待时间。使用实时调度类需要您自担风险,因为它会在访问磁盘时对其他应用程序的性能产生不利影响。

一般来说,我真的不认为你看到的同步写入性能有什么可怕的问题。与异步 IO 相比,同步 IO 的性能通常会很糟糕。

作为旁注,activemq 和同步 io 的快速谷歌给出了以下内容

出于性能原因,即使您使用的是持久消息,您也可能希望尽可能快地将消息流式传输到代理