On 3/31/23 14:35, Gabriel Krisman Bertazi wrote:
> Pavel,
>
> Pavel Begunkov <asml.silence@gmail.com> writes:
>> Updating registered files and buffers is a very slow operation, which
>> makes it not feasible for workloads with medium update frequencies.
>> Rework the underlying rsrc infra for greater performance and lesser
>> memory footprint.
>>
>> The improvement is ~11x for a benchmark updating files in a loop
>> (1040K -> 11468K updates / sec).
>
> Nice. That's a really impressive improvement.
>
> I've been adding io_uring test cases for automated performance
> regression testing with mmtests (open source). I'd love to take a look
> at this test case and adapt it to mmtests, so we can pick it up and run
> it frequently.
>
> is it something you can share?
I'll post it later.
The test is quite stupid and with the patches less than 10% of CPU
cycles go to the update machinery (against 90+ w/o), the rest is spend
for syscalling, submitting update requests, etc., so it almost hits the
limit.
Another test we can do is to measure latency b/w the point we asked a
rsrc to be removed and when it actually got destroyed/freed, e.g. tags
will help with that. It should've been improved nicely as well as it
removes the RCU grace period and other bouncing.
--
Pavel Begunkov