原帖由 wxp19831104 于 2007-2-8 17:57 发表
我没有什么调度算法了,都是操作系统调度的。
就是我的这个程序跑完一趟要写差不多160G的内容要硬盘上,而且是写到128个文件里,这么多的内容肯定得分次写,我的缓冲区一个文件是1M,也就是1次写1M到一个文件里。 ...
原帖由 石油工人干IT 于 2007-2-8 18:33 发表
虽然多进程共享硬盘会导致物理I/O繁忙,但write函数将在数据拷贝到内核缓存后就返回,而不会等到数据实际写入到硬盘中。因此,速度下降可能由
1)内核缓存不足,导致write阻塞。不知道内核缓存是否可以tun ...
原帖由 Alligator27 于 2007-2-8 21:45 发表
因为瓶颈在硬盘IO, 建议你的程序用独立的硬盘.
另外, CPU 100% 忙吗? USR/SYS/IDL/WA 是怎么分的?
原帖由 wxp19831104 于 2007-2-8 21:12 发表
谢谢您的回复,我的应用级的缓冲已经很大了,我用的二级缓冲,第一级是线程之间交换的,开了10000个4K的,实际上我最多只需要128个,一个文件用一个。第二级是IO线程写到硬盘的缓冲,我一个文件开的1M,第一 ...
原帖由 石油工人干IT 于 2007-2-9 10:58 发表
看起来你用到的缓冲设计很复杂,并且以文件为中心。可否考虑以线程为中心进行缓冲,这样就是典型的生产者-消费者问题。
另外,fwrite是库函数,具体实现我不清楚,如果它有自己的缓存,是在应用空间。关于 ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |