network-scripts-openvswitch2.16-2.16.0-8.el8s >  H aw@ !F^(*v2y.@`Sbw5F~7r%="sQB2ᝎ -b٩ܥDL{GI`Mp0NgdRѴ=9@OƗ!Rwǀ7K&ֆ'ZK5?- /.#6 J:4`>]0;20m*roPhG#|7m]q.9,\CJ}jdzd'^W3c53688d1b69ea0d24913848300e11a7c17fb1ba06a3751528127effa71787f55259c920a620bc050393e4f25947de6ad8f10d89?Paw@ !F^(*vjppnBW,f~L*HJyDm;Z]A4pT*Bԋ'B&E=,/*![4k88?3*Zƅo18>ąPh%[۽Ǚu##ܢ0&J:3GDcm;mX.3jAg &ŽF\ WZv~ZV!)27 MkA_d x%DG=xOK1dZj[$sЇ3m#~;w+/@>p?0?0d") 0 \ 4PV`h l p x  @H%(C8L9l:G-H.I.X. Y.\.0].8^.Lb.ld/e/f/l/t/u/v/w0$x0,y040<0@0f0h0l0r0Cnetwork-scripts-openvswitch2.162.16.08.el8sOpen vSwitch legacy network service supportThis provides the ifup and ifdown scripts for use with the legacy network service.aocody-n11.rdu2.centos.org-CentOSCentOSASL 2.0CBS System Environment/Daemons daemon/database/utilitieshttp://www.openvswitch.org/linuxx86_64% a.a.da063d0a7951fc6df40f70483a91f8f34d68ce7a601984822cda995dfbac9d077b339bcc7187423a5a7ee4904481b652843934bfe5faa2a735f60a3de9981218rootrootrootrootopenvswitch2.16-2.16.0-8.el8s.src.rpmnetwork-scripts-openvswitch2.16network-scripts-openvswitch2.16(x86-64)@    /bin/bashnetwork-scriptsrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3aC1a8a.a.a.a.a@a@Open vSwitch CI - 2.16.0-8Open vSwitch CI - 2.16.0-7Ilya Maximets - 2.16.0-6Ilya Maximets - 2.16.0-5Ilya Maximets - 2.16.0-4Ilya Maximets - 2.16.0-3Open vSwitch CI - 2.16.0-2Flavio Leitner - 2.16.0-1- Merging upstream branch-2.16 [RH git: 7332b410fc] Commit list: facaf5bc71 netdev-linux: Fix a null pointer dereference in netdev_linux_notify_sock(). 6e203d4873 pcap-file: Fix memory leak in ovs_pcap_open(). f50da0b267 odp-util: Fix a null pointer dereference in odp_flow_format(). 7da752e43f odp-util: Fix a null pointer dereference in odp_nsh_key_from_attr__(). bc22b01459 netdev-dpdk: Fix RSS configuration for virtio. 81706c5d43 ipf: Fix only nat the first fragment in the reass process.- Merging upstream branch-2.16 [RH git: e71f31dfd6] Commit list: 242c280f0e dpif-netdev: Fix crash when PACKET_OUT is metered.- ovsdb: monitor: Store serialized json in a json cache. [RH git: bc20330c85] (#1996152) commit 43e66fc27659af2a5c976bdd27fe747b442b5554 Author: Ilya Maximets Date: Tue Aug 24 21:00:39 2021 +0200 Same json from a json cache is typically sent to all the clients, e.g., in case of OVN deployment with ovn-monitor-all=true. There could be hundreds or thousands connected clients and ovsdb will serialize the same json object for each of them before sending. Serializing it once before storing into json cache to speed up processing. This change allows to save a lot of CPU cycles and a bit of memory since we need to store in memory only a string and not the full json object. Testing with ovn-heater on 120 nodes using density-heavy scenario shows reduction of the total CPU time used by Southbound DB processes from 256 minutes to 147. Duration of unreasonably long poll intervals also reduced dramatically from 7 to 2 seconds: Count Min Max Median Mean 95 percentile ------------------------------------------------------------- Before 1934 1012 7480 4302.5 4875.3 7034.3 After 1909 1004 2730 1453.0 1532.5 2053.6 Acked-by: Dumitru Ceara Acked-by: Han Zhou Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1996152 Signed-off-by: Ilya Maximets - raft: Don't keep full json objects in memory if no longer needed. [RH git: 4606423e8b] (#1990058) commit 0de882954032aa37dc943bafd72c33324aa0c95a Author: Ilya Maximets Date: Tue Aug 24 21:00:38 2021 +0200 raft: Don't keep full json objects in memory if no longer needed. Raft log entries (and raft database snapshot) contains json objects of the data. Follower receives append requests with data that gets parsed and added to the raft log. Leader receives execution requests, parses data out of them and adds to the log. In both cases, later ovsdb-server reads the log with ovsdb_storage_read(), constructs transaction and updates the database. On followers these json objects in common case are never used again. Leader may use them to send append requests or snapshot installation requests to followers. However, all these operations (except for ovsdb_storage_read()) are just serializing the json in order to send it over the network. Json objects are significantly larger than their serialized string representation. For example, the snapshot of the database from one of the ovn-heater scale tests takes 270 MB as a string, but 1.6 GB as a json object from the total 3.8 GB consumed by ovsdb-server process. ovsdb_storage_read() for a given raft entry happens only once in a lifetime, so after this call, we can serialize the json object, store the string representation and free the actual json object that ovsdb will never need again. This can save a lot of memory and can also save serialization time, because each raft entry for append requests and snapshot installation requests serialized only once instead of doing that every time such request needs to be sent. JSON_SERIALIZED_OBJECT can be used in order to seamlessly integrate pre-serialized data into raft_header and similar json objects. One major special case is creation of a database snapshot. Snapshot installation request received over the network will be parsed and read by ovsdb-server just like any other raft log entry. However, snapshots created locally with raft_store_snapshot() will never be read back, because they reflect the current state of the database, hence already applied. For this case we can free the json object right after writing snapshot on disk. Tests performed with ovn-heater on 60 node density-light scenario, where on-disk database goes up to 97 MB, shows average memory consumption of ovsdb-server Southbound DB processes decreased by 58% (from 602 MB to 256 MB per process) and peak memory consumption decreased by 40% (from 1288 MB to 771 MB). Test with 120 nodes on density-heavy scenario with 270 MB on-disk database shows 1.5 GB memory consumption decrease as expected. Also, total CPU time consumed by the Southbound DB process reduced from 296 to 256 minutes. Number of unreasonably long poll intervals reduced from 2896 down to 1934. Deserialization is also implemented just in case. I didn't see this function being invoked in practice. Acked-by: Dumitru Ceara Acked-by: Han Zhou Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1990058 Signed-off-by: Ilya Maximets - json: Add support for partially serialized json objects. [RH git: 885e5ce1b5] (#1990058) commit b0bca6f27aae845c3ca8b48d66a7dbd3d978162a Author: Ilya Maximets Date: Tue Aug 24 21:00:37 2021 +0200 json: Add support for partially serialized json objects. Introducing a new json type JSON_SERIALIZED_OBJECT. It's not an actual type that can be seen in a json message on a wire, but internal type that is intended to hold a serialized version of some other json object. For this reason it's defined after the JSON_N_TYPES to not confuse parsers and other parts of the code that relies on compliance with RFC 4627. With this JSON type internal users may construct large JSON objects, parts of which are already serialized. This way, while serializing the larger object, data from JSON_SERIALIZED_OBJECT can be added directly to the result, without additional processing. This will be used by next commits to add pre-serialized JSON data to the raft_header structure, that can be converted to a JSON before writing the file transaction on disk or sending to other servers. Same technique can also be used to pre-serialize json_cache for ovsdb monitors, this should allow to not perform serialization for every client and will save some more memory. Since serialized JSON is just a string, reusing the 'json->string' pointer for it. Acked-by: Dumitru Ceara Acked-by: Han Zhou Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1990058 Signed-off-by: Ilya Maximets - json: Optimize string serialization. [RH git: bb1654da63] (#1990069) commit 748010ff304b7cd2c43f4eb98a554433f0df07f9 Author: Ilya Maximets Date: Tue Aug 24 23:07:22 2021 +0200 json: Optimize string serialization. Current string serialization code puts all characters one by one. This is slow because dynamic string needs to perform length checks on every ds_put_char() and it's also doesn't allow compiler to use better memory copy operations, i.e. doesn't allow copying few bytes at once. Special symbols are rare in a typical database. Quotes are frequent, but not too frequent. In databases created by ovn-kubernetes, for example, usually there are at least 10 to 50 chars between quotes. So, it's better to count characters that doesn't require escaping and use fast data copy for the whole sequential block. Testing with a synthetic benchmark (included) on my laptop shows following performance improvement: Size Q S Before After Diff ----------------------------------------------------- 100000 0 0 : 0.227 ms 0.142 ms -37.4 % 100000 2 1 : 0.277 ms 0.186 ms -32.8 % 100000 10 1 : 0.361 ms 0.309 ms -14.4 % 10000000 0 0 : 22.720 ms 12.160 ms -46.4 % 10000000 2 1 : 27.470 ms 19.300 ms -29.7 % 10000000 10 1 : 37.950 ms 31.250 ms -17.6 % 100000000 0 0 : 239.600 ms 126.700 ms -47.1 % 100000000 2 1 : 292.400 ms 188.600 ms -35.4 % 100000000 10 1 : 387.700 ms 321.200 ms -17.1 % Here Q - probability (%) for a character to be a '\"' and S - probability (%) to be a special character ( < 32). Testing with a closer to real world scenario shows overall decrease of the time needed for database compaction by ~5-10 %. And this change also decreases CPU consumption in general, because string serialization is used in many different places including ovsdb monitors and raft. Signed-off-by: Ilya Maximets Acked-by: Numan Siddique Acked-by: Dumitru Ceara Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1990069 Signed-off-by: Ilya Maximets - Merging upstream branch-2.16 [RH git: 7d7567e339] Commit list: 0991ea8d19 Prepare for 2.16.1.- redhat: First 2.16.0 release. [RH git: 0a1c4276cc]2.16.0-8.el8s2.16.0-8.el8sifdown-ovsifup-ovs/etc/sysconfig/network-scripts/-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protectioncpioxz2x86_64-redhat-linux-gnuBourne-Again shell script, ASCII text executableRR(openvswitch2.16 and network-scripts)utf-855302706d1c83def48148291b3c3a3741638aebff67f5449e64210162c212bbf?7zXZ !#,/? .] b2u y-iSqiѩUi+bͳI}-$`0 }},Q6N{PKr'a66*vAVS'8ndó߀T$le%R1hHNU } &#^QcŪ&y"n)ǡ6}r=pV5+dzW ^MsV1+T^#D(Y1^q!,҄uБ?]ҵșwq"R |]-7w@q4[_;TpYYފ~4 (t ѭ{ְk`METN'z6]ʖX~y㭭w%o ޾*\ڮZ bDM7;( 7BdN!7v:Db L$ Rͭ-(WT# ˣ;pvZ , |$'$y)pȵ6\ץ@ ^ũAiH=Q&QΎ&3F"C% gQț;TeV# pX]־@.3?ScZdP"?WyD?U .w(k#3qr-^[A m,b3Bap:$bHeͫ48kNgQ!Q#cOE}B]axɂS?@H7=xBIZLG #vՓ֢ce8r `{0A2OHɪC'ŕTE& dj1#[1 EcHrpz,veǁAS"!EׅاJt7hNNWs81/N`̲NqkZGPuX~ac,l_*}D5O5^ jfVv)!1Fқ9WH~W88OM۾aC$vK`]A[Ռ|x\B5u񰹯/bSQumOsbg'b~?}!`m{ۻW5jn%X~BCgE^%= )-WpH^$S9*7}I fsh]aS-ҏ̼ pW詞_6yt"z+T) _F y8!sjn 49aQ|aRowH&06S(T@hζ sEP@b1Vǁ߉ KJW鷌R_Z;+ZJjp62i8+/B(Z4k4D9 G(v_5C3Y~c(|_6;X2a1ϛ:.w@f Lb5>,cC"UDB5Dò ,n.</@Cu`w-+xQE)A펳W= x·ѱK݊z9-4nX53\)˭@ Nv/ݻ)J_n70uD7z#SҽR~-V8ZHJڨuY4jrcmi >ߏ? 9;-Gpk-/Ӝ0(S M`,lj 5E%_Z S~I 8E |28^%>AHLD^sLv{^NCi:L m׺DdtrVFrn[0gwCh)$TVn'~?#j(sճ_6e""Ήg}8Yu!g\ng y?>`|Cj\q6.qppIx(zI€ۥLFY5VpY UC*ED@yWL饾xw  eaw#p_8v1-`7n*D +)on`Q0?LV:H3B ,a4^ r4ѓ/Zا}%¸Pev$"^(mJ\0ʰp dy1(hzWh&x[m(b-́y-wP0'lyR:~|Y\5Y)&3bX&:|DPvt7ZЬ8ZEQ#`GFﻞ:)8" Y\R:ݩWxX~f&ZՔ#Ҋgfrosu 188jѧɱMj'uVmC!lr*=l)\w 3yZ#;5A#҅!6֭ȴɱ`Gy!qD5[N; 'ԋsxI9Eg.F6j!Zw6zWs9Pju>^tq|RucobpkBw{6fKJ>xje7 S+E\߶^ YZ