我最近在这个问题上停滞不前:
“2顺序写入(直接io 4KB alignemnt块)在不同的文件上,就像随机写入一样,在10K RPM SAS磁盘中产生差的写入性能”。
最让我困惑的是:我有一批服务器,都配备了相同类型的磁盘(raid 1配有2个300GB 10K RPM磁盘),但响应不同。
- 有几种服务器可以接受这种写模式,磁盘快乐接受高达50 + MB / s; (相同的内核版本,相同的文件系统,具有不同的lib(libc 2.4))
- 其他不是那么多,100 op / s接缝达到底层磁盘的限制,这确认了磁盘的随机写入性能; ((相同的内核版本,相同的文件系统,具有不同的lib(libc 2.12)))
[注意:我检查了不同libc的“pwrite”代码,除了简单的“系统调用”之外什么都没有说明]
我设法排除了可能: 1.我自己的程序中的软件错误; 通过一个简单的deamon(没有动态链接编译),sequcetial direct io write; 2.磁盘问题; 在一台测试机上切换2个不同版本的linux系统,这对我的直接io写模式表现不错,并且在切换到旧的lib版本后的几天,坏随机写;
我尝试比较:
- / sys / block / sda / queue / *,这两种方式可能不同;
- filefrag只显示两个不同的文件交错顺序增长物理块ID;
醇>
必须有某种写策略导致这个问题,但我不知道从哪里开始:
- 不同的内核设置?,可能与ext3如何分配磁盘块有关?
- raid缓存(写回)或磁盘缓存写策略?
- 或将逻辑块映射到真实物理块的底层磁盘策略?
醇>
真的很感激
答案 0 :(得分:0)
ANS是: 它是因为/ sys / block / sda / queue / schedule设置:
- 机器A:显示时间表:cfq,但是未完成,它的截止日期;
- 机器B:时间表与cfq一致; // => 由于我的服务器是db svr,截止日期是我最好的选择;
醇>