Re: [Qemu-block] RFC iscsi: set FUA and DPO if !bs-enable_write_cache

2015-04-14 Thread Stefan Hajnoczi
On Tue, Apr 14, 2015 at 7:49 AM, Peter Lieven p...@kamp.de wrote:
 Ronnie came up with an idea to reduce latency if !bs-enable_write_cache for
 an iSCSI device.

 If !bs-enable_write_cache Qemu sends a flush after every single write. What
 could be done is
 the following:

 if (!bs-enable_write_cache)
  set FUA (force unit access) and DPO (disable page out) bits in every write
 cmd
  make iscsi_co_flush a NOOP in this case.

 Your thoughts?

Do other commands besides writes rely on iscsi_co_flush()?

Paolo: I checked NBD and noticed there is an inconsistency there.
nbd_co_writev_1() uses FUA when bs-enable_write_cache == true but it
also sends flushes.  Does that mean it's doing unnecessary work?

Stefan



Re: [Qemu-block] RFC iscsi: set FUA and DPO if !bs-enable_write_cache

2015-04-14 Thread Paolo Bonzini


On 14/04/2015 08:49, Peter Lieven wrote:
 Hi,
 
 Ronnie came up with an idea to reduce latency if !bs-enable_write_cache
 for an iSCSI device.
 
 If !bs-enable_write_cache Qemu sends a flush after every single write.
 What could be done is
 the following:
 
 if (!bs-enable_write_cache)
  set FUA (force unit access) and DPO (disable page out) bits in every
 write cmd
  make iscsi_co_flush a NOOP in this case.
 
 Your thoughts?

Yes, that would work.  In fact I'm not even sure you need DPO.

speed of cache=writethrough in general doesn't matter much, except if
whoever runs the guest knows that the host has battery-backed cache.  In
that case this trick would improve latency.  You could get the same with
-drive file.cache.no-flush=on but this would just work.

Paolo



Re: [Qemu-block] RFC iscsi: set FUA and DPO if !bs-enable_write_cache

2015-04-14 Thread Paolo Bonzini


On 14/04/2015 11:04, Stefan Hajnoczi wrote:
 Do other commands besides writes rely on iscsi_co_flush()?
 
 Paolo: I checked NBD and noticed there is an inconsistency there.
 nbd_co_writev_1() uses FUA when bs-enable_write_cache == true but it
 also sends flushes.  Does that mean it's doing unnecessary work?

Yes, it is.

Paolo



Re: [Qemu-block] RFC iscsi: set FUA and DPO if !bs-enable_write_cache

2015-04-14 Thread Peter Lieven

Am 14.04.2015 um 11:04 schrieb Stefan Hajnoczi:

On Tue, Apr 14, 2015 at 7:49 AM, Peter Lieven p...@kamp.de wrote:

Ronnie came up with an idea to reduce latency if !bs-enable_write_cache for
an iSCSI device.

If !bs-enable_write_cache Qemu sends a flush after every single write. What
could be done is
the following:

if (!bs-enable_write_cache)
  set FUA (force unit access) and DPO (disable page out) bits in every write
cmd
  make iscsi_co_flush a NOOP in this case.

Your thoughts?

Do other commands besides writes rely on iscsi_co_flush()?


That I was asking myself to. I cannot think of any currently. WRITESAME, of 
course, but
I would consider this as write.

Peter