|
From: | John Snow |
Subject: | Re: [Qemu-devel] [PATCH v2 4/4] libqos/ahci: Swap memread/write with bufread/write |
Date: | Fri, 01 May 2015 20:13:38 -0400 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 |
On 05/01/2015 04:48 PM, Paolo Bonzini wrote:
On 01/05/2015 21:55, John Snow wrote:Where it makes sense, use the new faster primitives. For generally small reads/writes such as for the PRDT and FIS packets, stick with the more wasteful but easier to debug memread/memwrite. For ahci-test; With this patch: real 0m4.802s user 0m3.506s sys 0m2.393s Without this series: real 0m14.171s user 0m12.072s sys 0m12.527sThe overhead of memread is 2, the overhead of base64 is 1.33, also base64 should have a larger cost of computing each byte. It doesn't add up. Could it be simply that calling qtest_send (and hence vsnprintf+qemu_chr_fe_write_all, neither of which are speed demons) once per byte is hideously inefficient? :) Paolo
I wrote a loop to batch the ascii-hex conversion instead of letting printf do it; then ran some more very, very scientific tests:
memset alone: real 0m10.888s user 0m9.303s sys 0m9.146s send-batching: real 0m6.541s user 0m5.027s sys 0m4.941s memset+batching+b64: real 0m3.675s user 0m2.582s sys 0m1.718sSo it still seems as if the b64 batching is a strict improvement speed-wise. I'll send the non-b64 batching patch separately later, unless you have thoughts otherwise.
--js
[Prev in Thread] | Current Thread | [Next in Thread] |