On Mon, Nov 30, 2020 at 09:43:04PM +0100, Jose M. Guisado wrote: > On 23/11/20 0:56, Phil Sutter wrote: > > Hi, > > > > On Sat, Nov 21, 2020 at 01:17:24PM +0100, Pablo Neira Ayuso wrote: > > > On Fri, Nov 20, 2020 at 08:16:40PM +0100, Phil Sutter wrote: > > > > Derek Dai reports: > > > > "If there are a lot of command in JSON node, seqnum_to_json() will slow > > > > down application (eg: firewalld) dramatically since it iterate whole > > > > command list every time." > > > > > > > > He sent a patch implementing a lookup table, but we can do better: Speed > > > > this up by introducing a hash table to store the struct json_cmd_assoc > > > > objects in, taking their netlink sequence number as key. > > > > > > > > Quickly tested restoring a ruleset containing about 19k rules: > > > > > > > > | # time ./before/nft -jeaf large_ruleset.json >/dev/null > > > > | 4.85user 0.47system 0:05.48elapsed 97%CPU (0avgtext+0avgdata 69732maxresident)k > > > > | 0inputs+0outputs (15major+16937minor)pagefaults 0swaps > > > > > > > > | # time ./after/nft -jeaf large_ruleset.json >/dev/null > > > > | 0.18user 0.44system 0:00.70elapsed 89%CPU (0avgtext+0avgdata 68484maxresident)k > > > > | 0inputs+0outputs (15major+16645minor)pagefaults 0swaps > > > > > > LGTM. > > > > > > BTW, Jose (he's on Cc) should rewrite his patch to exercise the > > > monitor path when --echo and --json are combined _and_ input is _not_ > > > json. > > IIRC v4 of the patch already takes into account this situation. Specifically > this piece of code inside netlink_echo_callback. Returning the > json_events_cb (the path leading to the seqnum_to_json call) when input is > json. OK, I have pushed out this patch. Thanks for clarifying.