On 1/12/24 01:27, Ilya Maximets wrote:
> On 1/10/24 20:29, Frode Nordahl wrote:
>> During testing of the implementation of cooperative multitasking
>> in the ovsdb-server we noticed that the very first yield being
>> called in the jsonrpc-server always fired.
>>
>> This indicates that the operations being after/before storage run
>> is taking too long as it currently is.
>>
>> Moving the storage run section to the top of the main loop lead
>> to successful results using less yield calls as documented in the
>> commit message of the next commit in this series.
> 
> I don't really understand what exactly is taking so much time and
> why moving this part of the code helps.  Could you elaborate?

I think, I got it.  In the current version of a patch set we have:

main():
0.    open_db()
          raft_alloc()  <-- register callback
          read_db()     <-- takes a lot of time
      main_loop()
1.        run jsonrpc   <-- yields and warns because read_db
                            already took a lot of time.
              yield()
                  raft_run()  <-- updates the callback
2.        storage_run() 
              raft_run()      <-- updates the callback

The solution proposed in this patch is to swap 1 and 2,
so we call raft_run() directly before we yield for the
first time.

I suppose, my seggestion to not have _register() function would
solve that problem, because the callback will not be registered
until the first call to raft_run().

Is that correct?

> 
> Best regards, Ilya Maximets.

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to