On Thu, Jul 18, 2002 at 11:31:21PM +0200, Peter Osterlund wrote:
On Wed, 17 Jul 2002, Sergiy Kudryk wrote:
Is it possible to exclude mixed write/read operations with pktcdvd ?
For example when i move multiple small files from CDRW disk to harddrive mixed read /write transactions occurs. This degrades overall performance and potentially can destroy laser head of CDRW drive.
Can be in pktcdvd code implemented mechanism similar to semaphore: stop write transactions when we have read one and contra ?
This is what I wrote in an earlier mail:
I think the speed issue is caused by two things:
The udf filesystem seems to be inefficient at handling many small files. I don't know if that's caused by the current implementation or by something in the udf specification that requires such behavior.
The pktcdvd module is bypassing the the I/O elevator when creating write requests for the CDRW drive. This can make performance really suffer when there is a mixed read/write load. The 2.5 version of pktcdvd has fixed this problem, but a backport is not easy because it relies heavily on the new bio infrastructure in 2.5.
I still think that's true, but I have some more information on the udf filesystem behavior. If I create a new udf filesystem and start adding lots of small files to it, at first (before dirty data writeback starts) the speed at which files are added is limited by how fast data can be *read* from the CD. I haven't looked at the udf code yet, but I would guess the udf filesystem reads a disk block for each file being added.
yup, yup, yup. adding data to a file causes a read of the inode, even for new files.. bah, I guess I should fix that =] Ben