Re: CLOSE SESSION failed with SK=5h/INVALID FIELD IN CDB: not harmless?
> 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
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.
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 :)