2

最近在学习如何写一个高性能的web服务器。RedHat有个实验说epoll比aio快。有人说是因为 Linux 内核中的 aio 是用 pthread 实现的。我很难找到最新的信息来证明这一点。另外我不知道现在Linux上的epoll是否仍然比aio好?所以我想知道我在哪里可以获得有关Linux 2.6.x上的aio的最新信息。多谢!

4

1 回答 1

1

我正在研究同一领域。

你甚至可以让 Linux 上的 aio 工作吗?我用 aio_write() 写入 300M 并将它们视为缓存中的脏页。这意味着它们不会直接进入 IO 调度程序,而是进入 VM 和后来的 pdflush/flush。这意味着 aio 与缓冲 io 一样好/坏。

我在构建机器上的 2.6.16.46 和目标上的 2.6.27.19。这并不是最新的 Linux 内核/库,所以这可能是个问题。

另一个方面是您使用的 IO 调度程序。CFQ 支持同步 IO,但可能会针对异步进行调整。它还支持 IO 优先级。

对于初学者,我建议在执行 IO 时注意几个地方:

  1. /proc/meminfo - 查看脏页趋势
  2. echo 1 > /proc/sys/vm/block_dump 并观察 syslog,你会看到谁在写,什么时候写
  3. sar -dp 1 - 查看您的设备是否被 100% 使用
  4. 光盘 /proc; 猫 */状态 | grep State - 查看谁在磁盘上被阻止
  5. /sys/block//queue/iosched - io 调度程序可调参数
于 2010-08-20T17:13:26.037 回答