Hi, > The reason to use O_DIRECT is to avoid impact on the performance of > other processes in the system, rather than to improve speed.
The odd point is that mmap() versus calloc() influences SG_IO write speed. The read performance from disk was sufficient in all the tests. (fifo well filled, drive buffer oscillating between 0 % to 90 %.) growisofs uses SG_IO flag SG_FLAG_DIRECT_IO but disabling it did not influence its writing speed on my USB bus. To disable O_DIRECT on reading showed minimal but reproducible slowdown. To replace mmap() by calloc() reduced growisofs to the speed of xorriso-0.4.4. That's 10x rather than 11x. cdrskin-0.7.2 used a fifo which involved a pipe(2). Very bad for SG_IO throughput. 7x DVD speed only. The pipe itself delivers 200x (two hundred). With 64 kB write chunks the pipe does not do much harm any more. I gave it up, nevertheless. With 64 kB chunks, mmap() and no pipe xorriso achieves 15x meanwhile. But my drive could 16x. Grrrr. My USB bus is in some way hampered with SG_IO. The handling of input influences this quite surprisingly. xorriso is reproducibly faster than cdrskin although both use the same fifo object now, and the same burn thread. The only difference is the application thread which runs a lazy wait loop that only watches the other two threads. This all happens while the CPU is idle enough to slow down to 1000 MHz. It could do 3000 if only there was work for it. Others have similar odd behavior. In one case changing the cable connection from eSATA to USB slowed down the same drive at the same computer from 20x DVD to 14x. But there are also weak SATA drives. No clear pattern to recognize. Have a nice day :) Thomas -- To UNSUBSCRIBE, email to cdwrite-requ...@other.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@other.debian.org