From f7b14f39ed9d4d2475b7f2c495535396846d1984 Mon Sep 17 00:00:00 2001 From: Annika Wierichs Date: Mon, 19 Feb 2018 10:39:43 +0100 Subject: [PATCH] Fixed event channel bug, added pingpong (RC) with user params working, added final bm results and plots. --- kernel/ibv.c | 16 +- tools/uhyve-ibv.c | 4 +- usr/benchmarks/ib/evaluation/config.py | 4 +- .../ib/evaluation/final2/ib_read_bw-avg.pdf | Bin 18021 -> 17890 bytes .../final2/ib_read_lat-t_typical.pdf | Bin 20462 -> 20385 bytes .../ib/evaluation/final2/ib_write_bw-avg.pdf | Bin 18005 -> 17871 bytes .../final2/ib_write_lat-t_typical.pdf | Bin 20408 -> 20412 bytes .../final2/others/ib_read_bw-msg_rate.pdf | Bin 16811 -> 16700 bytes .../final2/others/ib_read_bw-peak.pdf | Bin 18321 -> 18190 bytes .../others/ib_read_lat-percentile_99.pdf | Bin 20304 -> 20235 bytes .../others/ib_read_lat-percentile_99_9.pdf | Bin 20471 -> 20276 bytes .../final2/others/ib_read_lat-s_stddev.pdf | Bin 20342 -> 20090 bytes .../final2/others/ib_read_lat-t_avg.pdf | Bin 19932 -> 19849 bytes .../final2/others/ib_read_lat-t_max.pdf | Bin 20198 -> 20003 bytes .../final2/others/ib_read_lat-t_min.pdf | Bin 19967 -> 19648 bytes .../final2/others/ib_write_bw-msg_rate.pdf | Bin 16712 -> 16606 bytes .../final2/others/ib_write_bw-peak.pdf | Bin 18318 -> 18193 bytes .../others/ib_write_lat-percentile_99.pdf | Bin 20266 -> 20258 bytes .../others/ib_write_lat-percentile_99_9.pdf | Bin 20464 -> 20278 bytes .../final2/others/ib_write_lat-s_stddev.pdf | Bin 20224 -> 19897 bytes .../final2/others/ib_write_lat-t_avg.pdf | Bin 19904 -> 19900 bytes .../final2/others/ib_write_lat-t_max.pdf | Bin 20192 -> 20006 bytes .../final2/others/ib_write_lat-t_min.pdf | Bin 19925 -> 19674 bytes .../evaluation/final2/plot_ib_read_bw-avg.pdf | Bin 0 -> 17936 bytes .../final2/plot_ib_read_bw-msg_rate.pdf | Bin 0 -> 16723 bytes .../final2/plot_ib_read_bw-peak.pdf | Bin 0 -> 18244 bytes .../final2/plot_ib_read_lat-percentile_99.pdf | Bin 0 -> 20342 bytes .../plot_ib_read_lat-percentile_99_9.pdf | Bin 0 -> 20374 bytes .../final2/plot_ib_read_lat-s_stddev.pdf | Bin 0 -> 20256 bytes .../final2/plot_ib_read_lat-t_avg.pdf | Bin 0 -> 19957 bytes .../final2/plot_ib_read_lat-t_max.pdf | Bin 0 -> 20100 bytes .../final2/plot_ib_read_lat-t_min.pdf | Bin 0 -> 19760 bytes .../final2/plot_ib_read_lat-t_typical.pdf | Bin 0 -> 20493 bytes .../final2/plot_ib_write_bw-avg-MULTI.pdf | Bin 0 -> 22768 bytes .../final2/plot_ib_write_bw-avg.pdf | Bin 0 -> 17920 bytes .../plot_ib_write_bw-msg_rate-MULTI.pdf | Bin 0 -> 21022 bytes .../final2/plot_ib_write_bw-msg_rate.pdf | Bin 0 -> 16627 bytes .../final2/plot_ib_write_bw-peak-MULTI.pdf | Bin 0 -> 22086 bytes .../final2/plot_ib_write_bw-peak.pdf | Bin 0 -> 18240 bytes .../plot_ib_write_lat-percentile_99.pdf | Bin 0 -> 20365 bytes .../plot_ib_write_lat-percentile_99_9.pdf | Bin 0 -> 20377 bytes .../final2/plot_ib_write_lat-s_stddev.pdf | Bin 0 -> 20122 bytes .../final2/plot_ib_write_lat-t_avg.pdf | Bin 0 -> 19994 bytes .../final2/plot_ib_write_lat-t_max.pdf | Bin 0 -> 20102 bytes .../final2/plot_ib_write_lat-t_min.pdf | Bin 0 -> 19782 bytes .../final2/plot_ib_write_lat-t_typical.pdf | Bin 0 -> 20525 bytes usr/benchmarks/ib/evaluation/parse_results.py | 20 +- usr/tests/CMakeLists.txt | 4 +- usr/tests/ib-test.c | 64 - usr/tests/ib/pingpong-ud.c | 885 -------------- usr/tests/ib/pingpong.c | 61 +- usr/tests/ib/pingpong.h | 18 +- usr/tests/ib/rc_pingpong.c | 1051 +++++++++++++++++ 53 files changed, 1127 insertions(+), 1000 deletions(-) create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-avg.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-msg_rate.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-peak.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-percentile_99.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-percentile_99_9.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-s_stddev.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-t_avg.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-t_max.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-t_min.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-t_typical.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-avg-MULTI.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-avg.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-msg_rate-MULTI.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-msg_rate.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-peak-MULTI.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-peak.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-percentile_99.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-percentile_99_9.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-s_stddev.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-t_avg.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-t_max.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-t_min.pdf create mode 100644 usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-t_typical.pdf delete mode 100644 usr/tests/ib-test.c delete mode 100644 usr/tests/ib/pingpong-ud.c create mode 100644 usr/tests/ib/rc_pingpong.c diff --git a/kernel/ibv.c b/kernel/ibv.c index 1ee41d3a7..7f4698131 100644 --- a/kernel/ibv.c +++ b/kernel/ibv.c @@ -987,7 +987,7 @@ typedef struct { void ibv_free_device_list(struct ibv_device ** list) { uhyve_ibv_free_device_list_t uhyve_args; - // TODO: Take care of ** parameter. + uhyve_args.list = list; uhyve_send(UHYVE_PORT_IBV_FREE_DEVICE_LIST, (unsigned) virt_to_phys((size_t) &uhyve_args)); } @@ -1560,10 +1560,10 @@ typedef struct { struct ibv_cq * ibv_create_cq(struct ibv_context * context, int cqe, void * cq_context, struct ibv_comp_channel * channel, int comp_vector) { uhyve_ibv_create_cq_t uhyve_args; - uhyve_args.context = context; - uhyve_args.cqe = cqe; - uhyve_args.cq_context = cq_context; - uhyve_args.channel = channel; + uhyve_args.context = context; + uhyve_args.cqe = cqe; + uhyve_args.cq_context = cq_context; + uhyve_args.channel = channel; uhyve_args.comp_vector = comp_vector; uhyve_send(UHYVE_PORT_IBV_CREATE_CQ, (unsigned) virt_to_phys((size_t) &uhyve_args)); @@ -1654,9 +1654,9 @@ typedef struct { int ibv_get_cq_event(struct ibv_comp_channel * channel, struct ibv_cq ** cq, void ** cq_context) { uhyve_ibv_get_cq_event_t uhyve_args; - uhyve_args.channel = channel; - // TODO: Take care of ** parameter. - // TODO: Take care of ** parameter. + uhyve_args.channel = channel; + uhyve_args.cq = (struct ibv_cq **) guest_to_host((size_t) cq); // created in user space + uhyve_args.cq_context = (void **) guest_to_host((size_t) cq_context); // created in user space uhyve_send(UHYVE_PORT_IBV_GET_CQ_EVENT, (unsigned) virt_to_phys((size_t) &uhyve_args)); diff --git a/tools/uhyve-ibv.c b/tools/uhyve-ibv.c index e829165df..5c91fd741 100644 --- a/tools/uhyve-ibv.c +++ b/tools/uhyve-ibv.c @@ -879,7 +879,7 @@ void call_ibv_destroy_cq(struct kvm_run * run, uint8_t * guest_mem) { */ void call_ibv_get_cq_event(struct kvm_run * run, uint8_t * guest_mem) { - printf("LOG: UHYVE - call_ibv_get_cq_event\n"); + printf("get_cq_event "); unsigned data = *((unsigned*) ((size_t) run + run->io.data_offset)); uhyve_ibv_get_cq_event_t * args = (uhyve_ibv_get_cq_event_t *) (guest_mem + data); @@ -925,7 +925,7 @@ void call_ibv_poll_cq(struct kvm_run * run, uint8_t * guest_mem) { */ void call_ibv_req_notify_cq(struct kvm_run * run, uint8_t * guest_mem) { - printf("LOG: UHYVE - call_ibv_req_notify_cq\n"); + printf("req_notify_cq "); unsigned data = *((unsigned*) ((size_t) run + run->io.data_offset)); uhyve_ibv_req_notify_cq_t * args = (uhyve_ibv_req_notify_cq_t *) (guest_mem + data); diff --git a/usr/benchmarks/ib/evaluation/config.py b/usr/benchmarks/ib/evaluation/config.py index bd29b1ccb..629ad7902 100644 --- a/usr/benchmarks/ib/evaluation/config.py +++ b/usr/benchmarks/ib/evaluation/config.py @@ -4,16 +4,16 @@ BENCHMARKS = ['ib_write_bw', 'ib_write_lat', 'ib_read_bw', 'ib_read_lat'] +OPTIONS = ['-a --post_list 1'] # BENCHMARKS = ['ib_write_lat', # 'ib_read_bw', # 'ib_read_lat'] -OPTIONS = ['-a --post_list 1'] -# BENCHMARKS = ['ib_write_bw'] # OPTIONS = ['-a --post_list 4', # '-a --post_list 16'] +# BENCHMARKS = ['ib_write_bw'] # OPTIONS = ['-a --post_list 1', # '-a --post_list 4', # '-a --post_list 16'] diff --git a/usr/benchmarks/ib/evaluation/final2/ib_read_bw-avg.pdf b/usr/benchmarks/ib/evaluation/final2/ib_read_bw-avg.pdf index 2f38962b903d2ac176267d6e31394b98585eed5b..edb49ebfe3020307faa1cc8294b83c14b113ecd8 100644 GIT binary patch delta 3470 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 delta 3593 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 diff --git a/usr/benchmarks/ib/evaluation/final2/ib_read_lat-t_typical.pdf b/usr/benchmarks/ib/evaluation/final2/ib_read_lat-t_typical.pdf index 9d0e942d46c353a370d632e430ccc8d465447240..962d69dd9d0441380610d63b1b6db87b33b980cb 100644 GIT binary patch delta 4975 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 Kj*g|1750D7d{Y$w delta 5036 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 T&2q+qbdW^Cs;KCjGqC>wZK%3z diff --git a/usr/benchmarks/ib/evaluation/final2/ib_write_bw-avg.pdf b/usr/benchmarks/ib/evaluation/final2/ib_write_bw-avg.pdf index d8bab41bcbb3870b8346ecb1977e9ba0024ab405..c7c62ccbfc2190b141a5841709687b7b311ed9f0 100644 GIT binary patch delta 3542 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 delta 3689 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 diff --git a/usr/benchmarks/ib/evaluation/final2/ib_write_lat-t_typical.pdf b/usr/benchmarks/ib/evaluation/final2/ib_write_lat-t_typical.pdf index 96e15e323b048dbbfe7e04a6b9533ddafd94744f..cb1f1db5087f90180fc3693de4ff083ccb64484a 100644 GIT binary patch delta 4911 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 delta 4942 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 Balrrp diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_read_bw-msg_rate.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_read_bw-msg_rate.pdf index 998ba52531ff77c6d6bac8493431d9684b9ee635..926f42ece8fc195c16e4bcf63dc02b2e6fd56d84 100644 GIT binary patch delta 3457 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 jeltTZStJri8F%Ujb{{P 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 X@dP3oHnXIN<4G7mOjDDx-$Lv^m8NQr delta 3651 zcmZXWc|4SB8^>*tL7B2AMlpoyd1jx|Sc;T=$x^bDrRG=)kw!=o!e~q*29d2SEtW{O zj4hh1QIa(~r9&j|)H&~a-ZOLmb$_nwy6@lb`d;_*`8@IQ+=;ijOBmdwS9Wbg+43D9 zI<0-C)D06~tswl#Gq^&Ebe4uD6q|^L1kuf449@ z?VW)O3%zkM%j|55bCgT#DIMNW>YsLMZ-$ck`R37E;}m#SNWJe)%!&v&Jrr

7HUi=j5PMMckc9r=nVP`Si_p;+vh5R=ahWj#l6j!eDbA`hlQKreK z3#7TX>I?H_>N}`u9wlk5tyT@I1TP9l5m|`iQqtC9WF@2~&N0I=7{m z>8y8cY_-!?r_RP-hkK6i;3I{Xc|kgLhxr^e!|cySXv56`M#shTp9W8E(0s@5<~580f& z!m3uO0-e}kujbr_(tYTWf!n>JshC(#mvl2+L!-@Pw9`J}yO^TF3qDpjXgw99>l`j0 zX*(ip&gK3v1$Xk5D3fbvJMR)f(vB~OKSbHXhVOa=&*Xfxr)hABf9LL%Fbn5)3|wOB zqHMYs%uDcOb6p-u!TpW)s*jvYmb7daUvx4x3o>V2Wj!lYxRc+}GpotcuZ$oFRS(cC zGyz4bOna5Zyo)0bOp_&NJ+Ffv4P7BR3FD?x^P*T9zi4FpW>&)sG)G7FWqPR5?ESHV3UVs!^=^s(AX6 zn~Y%FB4skFJOLs!jCkFl76I_xu;LK&q18bE1*xc&A?YuXNSB9I0xlSW1)z8qGn2HgL<3;Oxd2j8X zI5GC%b`(Q=_W{cr0?-b5e6MzUjm$X>#XH}t%WB2)7>D!+I&K`_`$y}n?MS-2S9-2m zDy6FFCqG%s4SP{9BuKO8%_Cx-X`oR{mLJ+Jzi;&{snkIR z`-|LFKQFBa*Esjd2jGT$%{qKgmt{R}?I7~sr^KHAXkTon7`rE3oqq>aV#=#KgkNZ^ zF#R!C6zNUwh4bB-IgfM4xXQ+1XM>ffN+Uh$%SI9!-D%_6!l1$yD@`x1RWlRg>jTsn z*UHq9vgkewCfe5A>=H!))Y}p+@65ZVffo;UQBB&f7c;oW-bA<0^@MJZtz4s&IDg=s zQtr?K%i*$tH_tZ=@_=0yiRWj`-%Bh7t3HPtsFDggzQCIDeBuv#!IpSU2x_xsmf2^f z_{xt}(_(5`!egF4(TG-1^(pVrJ+DPqri&9rh@{ff zuZquLAMC*+PWql{oXP)8Q_s&k)D|IipJ$~vUdFVCVq&b@PmLL;9%#4#EzZsIewGdlG`4*z)8d-AT9O!&q0n-}mWI}9zfb}o6vufc`lr&&IuaONZZVP#j> z{A4dwgPOY?&-rxJfBSI{ZS7~_OFkq&x@BVUlL7d633H_KNVAq*~@Q-o5L*fAZTgkI}eLzef}vTC}x)H`dn2 zGLS{NF;T)l!l=WB#?l=%DZ(MOB$tBYS^VOE67*sDZPMG714bTM*@r}k_o5IT^5b#OZatu z^w)Vyh0BU?-iy%U$vp4JV|l;P?Y(rqj3~0FSZ^!VcWj(OQr0wL**<5p5@eD>|2hF7dJ)Yhk5=1&no!a{y(Ek4(n9sa zKlWZ>-na zFOV{m87kvvKjYhbk@p>zW#Pux7-h7ezB^~QyxP*@y()n6s|OUjz65$VR%fn2?uCn$ z>Q-zkZI>cho}cq3>}Z6HPb63@oAWn}Co_7A!dH)7v5SNFLc2eoK-Y?1(RVV)p7CjW zt^InSW*UC2$a29^nLEfwXLagDOod^!SWvI8h@N-qwQ_yy@RYj|v}d6`MiBeVA>Qq3 zH!{9f+zSsF7y`r9Jm~FtXlSzQe);JIBFay!gfc)f_YrxKgGLA#h+-9* z!w7^Y>V(}q+z3_$?1`hMIgbDaz@tzoG`Uhcix-DRlB0Cs1RN3u{8}&~4Dx#eqA@rG zM+^&a)?pDSa=nfb36Eu2`}Z9fB!V-B#$h??05qCChQ{LX>@gI8}XC0!Fe$bSGEy~3gZ diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-percentile_99.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-percentile_99.pdf index 9f11e9c60edec8a9b58550d045e8a59580176743..c42fc7ffda38a2e06e191110939bd315eb5dd3da 100644 GIT binary patch delta 4939 zcmZuzc|276|8CT^Ovo15kB}oW=gdBtHX*X71(kiQnbFvZV@r{UQ)J0)QL39#V=Z)( zBqb_EgzUFHs!JQ+Gnsy`YyAA-^*PUZ-p}*i&gV7lMYuynxH2kk5#5MJLyd9iNZqb} zj#`y$+|8SwZusgY=jdwE2y--hdr-VWm?7|o8J8gTdb zkbo&Ntx!2mlc96qM&iH|(Ui<2wYB4IRk)PE>95sUKYDIAos@qjht#i&GY?EAW~}Sw zZU5Hup`evh@YjdxukuyZeZle@ejta<2Vy%s4&m|7e>$Xyr^?u|9^J|vXf(`HJsNU* zh&{!cV(yA9F%b`#%DOR;Ix|DH@K8VBF3b3_ude2s$K+V=yZ2*n-UWXTO_wj0+mlf^ zxV}!#^~`peI~Gk2;y8sFk(cFZ+=Wens>6#K=ocgvxnd>(zJ<1}{Tv00Q@0WkNp{78 zpb81k&uaQvM2EMvDFDTFfk&D6WAT#0^rmAGiAPO_MBQVyFgVQn4$kbArJoFa4Z3UU z3NP6YFAXkHm{iu)60IRMfPqJh&#Lu^rN>e1@wbCSVER!9 zc12n9hTuO9#SKcE+*3@%bb;U!q*ifQEx6HelR|gop>TUigUQB?WgAlxOvDnlc`|5e zy(7*0vr{hlR@Ug#(&93Q#3D`o-tGS9&FHGkhnl28&8Xvx@n;gmqNeYRE^bTwD4W8C z;=lAsS1q~y)Q&qfka?zPV)@HkrlOUuJXY{_=g}5Qg>IX&exCSPS?LR}j6!5XcDl2p za`H8`3l(X%*gHq}`j-!Ta8?_}NG2&nnNp8sUGQGCOytS-QCQOYFPeLgdMHyiA<1X? zR>!>LiO1s>BmN!l-H(4SUL!wd{PHFFZ|&}r1J1qADw*LM47}=sJ~ceKv$vz!>614* zfEP6U+_KO9K;;s&NKY?|vng>)Byzzpň>ytu~+DYr6o6l>NU30pk4yND&2DcX3 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 X8XnxxNG{6y2F7M_u^mA(69`45Xc`&He--eYe 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 OI3ik6@qnoT`u_mQ;?_0* diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-percentile_99_9.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-percentile_99_9.pdf index 99d7ef71f33dbfcb5fd7e796e5994d68141dcd32..18731fba70ebe10739886599eacdfe3372fab33d 100644 GIT binary patch delta 3949 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 At^fc4 delta 4165 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 diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-s_stddev.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-s_stddev.pdf index 1840416384a066da35ffb40cc6ae17bfbd264018..3106a042f2838793c42b4d45e05cc306d29cf71c 100644 GIT binary patch delta 3643 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 delta 3889 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 J(Kk5B{~x7!^3(tT diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-t_avg.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-t_avg.pdf index 682c4d4cba7ffa1b600cc4efbae2e4da236fbbf0..8b13b8b3c51de8428ef80cf93f4893c1d139c8fd 100644 GIT binary patch delta 4890 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 delta 4978 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 OhfP2#D;rrDBmWIzXrYh* diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-t_max.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-t_max.pdf index f7144a5a2c7ba34e0cf38bd57c829a0f3f0bd917..daa7ca1ca6fb6c42d4e56ea2109688dfedc9197b 100644 GIT binary patch delta 4014 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 F{{m74$M^sM diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-t_min.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_read_lat-t_min.pdf index 2cda134f1de611f28064dd317057edca959f44b2..bfcdd98d7f6d79c78283ef56aced87914ad30a5a 100644 GIT binary patch delta 3802 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 WJQg63PMa9PKoAF$mNqmug8c`&OPo^x diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_write_bw-msg_rate.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_write_bw-msg_rate.pdf index fd6560cac14908680606d68082ba912eb687b345..8f1bbba4ef80d05a80ec410fcb16a874681fabf7 100644 GIT binary patch delta 3378 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 KvBSb{AL75KSYqk` diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_write_bw-peak.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_write_bw-peak.pdf index 5af8be294f77fb9f04bcf43a1895ee059a89e6b0..2f30998402b52b45a1ab1cbbca6ca62a96dab4e7 100644 GIT binary patch delta 3633 zcmZuwc|4Ts7dJ_^7W*C}Lbl#_X5M#ZN)*{c_N8QRA>3RSS$dVFqC|r%k+Rh#Q)DaK z$P(H}gF?0u%D!A=`Au%Wdu!%Cf1S_se9t-G@AsT1<_0P*2KA^Bg;X9hydjR~tNLO+ zH6rm+I(pJ2{%as_O*BCi%`U_4lHWNvFMFl&1OsW%L_Q1w+rOJ8w zy-L^R>#mbYj#5*9)yW23to9eb=)FTcPXOO58oWdZF@5b*IQ>p{g!ZY|8?N^Bs*1R% zi#z|gOXQ8^ioTMhrWta{^o&P;qyGK)+gXjn5dd+C6msT+$eR~I3uhWHI8_&=dhcmC z^p$;Xgmp~=q@>*vcqY?nvKPjGnp}HY{c&~9xn)AK$Pp@SHb-y%veUm|^UWjT1zCKG zk?8Efn@`&6p3ta@BZtANk%O-lb6DkPtX?SiMFuHlcf35Upy0uQIP-1UN8x&&-(MTB zJCoNeCAE*uc6b|$JUNrMa3r_bZogbp?S9dRnQ96J@e4vB!s(<1*~~w*>(Y)6vC8C@ z69O$G%YJLq=gj9o*?hj)ZCFqo8->=*t$bgrS&-d#BEUsp=pwt|;V}WKLG)u+y#U zUYmENl=vy1xCEmn9v_UA)Y~NAa8`!@P*}04t$#6iJoNH}QlP5ozGWVl+sTfWySzeo zaPrh96%Oek(ESy);i4yD7OZ`treMlhD@Tr)JsP@_d2#LG_X^=_ekK_+8KKk{M)<173+{9l@R@Y8ZI!0# zk@{Mqwm-JM-&&GCl5|Y@<|ivQ`~ATftL4Jb zJ9f31wfp$K7tdD6qp^KIF_Gs2t17(Y_1$X65 z`8khr_Q-W2*bg=oPTE89B9(|iI|c9sXJWZ=lj(Spo`||jT*l%UPo3k3db5Y&l69N) z{{+vy*MCa>qTSVd<6WTvUTA3t_8Tfbv|*zE+QQVDi%w}d>f*#rP9xFz&%k=IXzq~DnJ2lZE$?)h2V}tZBS-VNpYA<0` zULD>yiJL@^kbJ?h17U(QMkd-US|dU2t67NhDPdYDm453`v)Tgcu$6?ULNya4RdvO$%@(fW zqY|b16}O`bno^>2kRr?#X+;jZUC_aZ8DS|wFE_=)=g~g_=Q*%bsqCws+0t)~*DM=Fw{s+yvrN;c}ptHCv8 zzbTE6PZd!Ol6j!R?dRpJhEMMURS=f6x)$PCNhB&p ze%*d;t6O4bg8y7sy)kM;_QY$`4%b(v?`%cuM0CgAqSMqIZe%8uE_dxdhC&#ghu@-A zvdN9D&8JwpB2Fw2Vh;R$w2zoDN6tEwK5o1QU@FKAj;%pT3(>iktxTT(15 z zH(FQp4B($j@aH@;EcVht(@K5Wdf&+c%1VOqs7qgH_e&^A15FN|yCMGSc-YclLtA5w z==Ed|0MRjDMnpQRQ_8o@e(Pw~MLfOf`Q&j!Db_EN*bc`FJ?2XzZ#d^i#FO|9q-@8# zdJ7*U#&)Q22uiJN?|$a;`22#;UyF;wJu$1n>+3s%Dp#SztwM$k3F!;TL736J^o7Um zkBZas<~?admSUQ*JhW5lt(wq4NSwVm=v`((+0)F6q=vWfC|xssPA#FyXyu!w8xiXd zw7oK1`8{ia%%4TFkS@4n7kp;3R_kKy^F;ky{Z=WNiN&7pjJDW6?4=m ziXo8M(*HQ#DC~6>)hlbyal$Faj#^@bCk7-0?oi7sj~94iwBt-pQKQmDVFyDDRq5{U zQYl_<{lO!e}aQk<6zu;~_2x$Zmqc-;4z z-|ndf$wtX7WSp*w$81oG==}BouDmyA&mjYtKCbyP=@7}%oYtWHgk6qhlO6cd9ix_= zookIfsq2r&Q$KxD@2Os0Nw2(6UU|N|Cr#*TW9jL^k455V)yqHZRZfU|v2JcXbXSQq z=OS01a$F+3{OXYv^)HJnc@Mv~1Z9v^F52QeS*{gCtoKDUMMlrbvCzodG6JHGsCm{~ zn2)JthZD_Y7PyVD{Z}|A57LlN!By)X{)g4IGUv@~R-dApR-cdY^XVj;&6zmBf7)lM z=D~dKTRDdYDJLVJBYt-zCp3`18gu!D$S}exHA%4{QLy|%AR0h>JG*mXuy_oYo0scG z43Ofs$rn+%`9TuT0a+9m>9d*~33otK8G{CK^aL~XULz0h zR1Zr8nCf9+;zlm=vv@3sqx<=5K^zfgyaO-6#j z3u6H$ARc5?4B$Wv6B!(YV{`$)!GAmalQ@7rcBXm|24S)lfFS0PK|~xAK^SBj698i| zOk`k)PGdvnKWhfS_#Z2U{JVPq9>g=w3BY5SS>xgFpW*xYw;-NKWU`uo1(*~QV9d|< z0~`Jmh|De!u>_`h691zykw9Qn2Lb^8mnL+kAb`U%5(EJ}24PeT0>r;J^Cxv6hy$2@ z76?O(y8vPUn28Jq3oyC`VsQWO0smtmh=G}005L=YQ)3uUfJo}P+T1V^i{;wATiZm3 F>wl$UsgeKy delta 3729 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 W5d@eu6hl!w01*&sYKG<%#Qy+l3%`~C diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_write_lat-percentile_99.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_write_lat-percentile_99.pdf index d9f0e3ea95c2db3eff4194409c2d29e87f290689..1441f80b9c278b23f651e5df178ccdcbf15e305b 100644 GIT binary patch delta 5001 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 Cg3Vk2 diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_write_lat-percentile_99_9.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_write_lat-percentile_99_9.pdf index 4c3bcea3dce1b42b717320036788d6896ea2f1d5..7128f407b6818cbf07a8f53a3958a5f150d68c25 100644 GIT binary patch delta 4025 zcmZuwc_5T)7jF=egpnf4NJNSEoqbf6Ynid72#vbgi4396xxDYk4}(-o0l_%xPrefP?8@PW^)$sP}l6sN0Cj|C0)2$jmEdu7H4 zuLV`DQT!HVlOf&6-AB-3G&_hUsX)^#CgsPBr#age=;!vjWK(+^lgO^xG0TnP4l6Dz z=(9mYkWV^T-$v{0hBsBB=g=+L*v4LsD>m9P>$L%XE33`H{>w~>2LmEOnf9V?2r(M= z9wI(8DdlT~j+o%X+c>le@)z-vlP7zOPiwS$%wqb!Y@B6javU^%?jejnv~hN({CiJN~Wr!44d z%4e82kSAXn5VCK`kTTEEj%P<|wdB?9x|8x^Msjahh}YJ(sCN-1&X*(WP8=7IT8whY zd+3Y?h{e$Qq1a~y2lsp>c{$z7qp?ff>sBH$?0mH4a?zgy-8uVKJ? z<2>rV?q9jr9nmvyPp?jlw@!RKK=^B+)rigmJST05d^=0130JpeLdR-`GrMi$u5=_< zQe1%QEtbzsw^PPMnmqb4j{Zh*KQobPH9*K1b+Rq-6@Kq~#8XkYWXG`T)ekd@#n$3* zxw0&&2%cARgN9@FqaVW_>(|GD`BWLxQ=j6SbH7nY<$W+83q{`Y!+SGx5;{oTvV~_9 z9yUrel%pvWjW)gyu@KHv0HIbJ+acvP#w+wDCOu=XC2_B)s)V?-)4*?I*mCOfRC&BQ zYpQd+bK+u>9DK}Hk%g~F@TrTE>SB}xlvZU#)ZM;MT9TaXMoeCeom0T+lQaz~{SsAs zVr>j6iH>CwH%ww#6w|PX=MsO&Ej<)4&u?3b5m2ND4|>Yqg&h4)#?Br4k`@<7iJg1c zxaX@i`|iL`JsztOSEsjA(L0m0^g1%bF`$!i%xH&ATo<{NxDv+ae`gM+eXwbpPwd=e zqO=34tPVF*ZB!c65}fuaGX0>`23q-q&3#&qT!*d-w#3`?X&xev8X>5T)~@Y{|B zn5`LwroLMM603QetLOnA5sc0eu1CLc>4FbaO@+){4wDFK@%GQ6BAVXP;C85rwLQep zA!N(=e3r!u|J2Kv+2_33;sx8OtFB{12vI{1r!Gb%D^Xd(`nTMsSJo|>CrX!9+-s

XH}w%`f1WuLW~`}z@ygWQ4vhHqZ0M60XYR|YU{zH!$qFHt)lfIj?TXib$Zfd zz6Ratr4M4w-%LLVr7yC0ztpc$v-Fse7upZaJ+b3QYF z{L^JEsf3rWyG5e&7QXY|r5E%{VX#l914kV9llNPjt!~sm zjy`A%J%Yx6{VwZr>-y}QE4?#Cjf*!@=>^_L5K6zhd@Gy^m#P@bU96h*H3>g=Z(2$B zR-f9hQGT8F*8*QyO6u%hN{fB<%{^ZW+*+=>wf)PXa5b?a;$?X6=HsPsS{<=dBC;7v$LtTxy}A=^K8=j zWVNJR%}(l!Qv)oeL^nmkO1ZdpqS_u3hS#dX+wZG~9~LWe&7zdrXZ-*Y^z1K&e4OH+ zS1#mDhmGI48L&6C9veA=>PM52Cw=b-^tXn!h&Xv>wC?x}?-i_KbE!ArA5%Nm3+WF! zx9h(k%jwI*CBt1jMXNN-wGRAMY1&0Jkn$|^KL$5rD8a4V0z`vM`F45RMn54fPML<8 zC6Pp?EnbR$_D~*G-md(y=L@1HvG3#4Yf|*j*gpm)+~&xaYa1gD`1S=TSLK}7Qt4hu zX`WT}NLEwL-_(`eX1b%rHkfb=svM6#;5ICk#)dLrLmB*ll6ah_TPqU$r)=9kgE6lW z#w=B$SHCtntFk>btETK|g!(O7igc6j%R%`RHH&hVme%9;b`AiN`HmLfdZx9p~ zd>8+ocZ(7jvpW)2sZ8B(C!HVgD;gzapC5x#p-az_-X%rYSPo&yCrQLe1NiRD=ZTrGn z39aQ={QSPA{Ol!cLflUIeXkltpKSD*;iprBXOxdl`R!*#8lLkgzS@6!<-Fai1q&)O z^6o2Qt1eyxb6RVg#?|tjk^y=3U+Nv_vnP*UPmoqiZ=KT8yi!m*WFJsvyK=sWx%q6X zwcKAaFprx zkvY^#Z#alz_8ev%5^*gQdZBC`ZBZEGUe#)B}Z@U zfvnl)ta%DCIB_w?rR8k%@YDB-*G!jlN~Mq#%eF29gim~h-M+H|WY@pz#M^|JSm)sf zF{>szlIb_JscK@6Le+5Z4^}Q=vO0xdKW5#UpMnMOn=T5wYyXpH{nx#nYF-j*5kjJ;V8V+G;Z!F1HUU(e_i`^R_B|hs>uF2c)DSbNT3Z zjZ@Y}@%XyC(WuEImQ!wup9~-GioVCV`MD{bbCbh{RIxbWSDOUu+zIe|sB z+SG7tQ5u3NXa*oa6jh0h+-f3>wd=8^B=ETpBTKgE*;ULEy&(ewK{| z30$(V7y^#776;%qYmM2A|GPG9YjHp8*^~p|@JOzPIKtnC|6Ge_WSYPsJO<5036IBf zE+aqyaGVYU1SB^)0gdLa#Q~g*KmbH;_G53r|KxxG63gi=$X;5`Nq_(W%jq`=BDr@N z{0Cr=fci=BCO&%wkVr1WK_nW*MFxpOat;PW5(u1w22p6PL4&A&5Q4S@u$%(~(P$i} jg&-P><^o0&xc)2D7%7PSQAp21AcnpH50Eq|dt@S*i zm51MS7ES9hQDL$54qv>72MFmWiq)!l?=aoqykRkyB65|i)2AACE%ww1#Zfm&?kNvD zyI!sX&(<|39?N;5)KOu(5Nz|zsoigwn$`5(*NVD33w1RQc}JxwwjSdrU2hvUSUP04 zg?(G_+FbM65)|01C1eV7Ohg|72`JV@7YPh&Irpfxh^XewpwiI}ePsgm@vY%U=?|1` z4R+I%_3w>6>*7RjH;ILG?t%{<6?06Hn`Wrgo2|lyyMF{<-CkK4UtQOm&rjLY4HFIQ zOJZ_nYIiC%9NjbY_7szDc18uSl#hDkhWP>Du2+=R*X9WLG0QhS($* z`SF;V{_!UfI*U9ZPA~Qd<@FtucRdPGFD~d}P3|kv8sDqfZME-(QSCVxCy_aPR3^PF z|OsnO+nx#2wB!3IOJZ8bW75*lE- ze9+-gh#*e)x6*!9`xvWM{|WG6s+1Q_@xzV2?8x#x`F+U3!B+oyJ0n*@OVlN%i-NE2 z8uRB;o3rf&tBl!M9`=`%znJ^TbBx@4{r;p)L8OIJ2*sv@tKnIr%5^_@;FqPl)b+%H z_^q~9O~X{}YTacOsPY$CR+U;mOkA?_hNsHedn(N{H^&xNxmk8rmha1h>>C4-lD|o; zmj!29=3RFQpL0Xbu%=VOzXTmnpcsnbJ)e4}QR95mr0%U~JT9BsBIi1AgbXTOfJRW7 znVB_AYmb#?T0C8R@P^5z_s`cb)4kWms})Lt{ZqkXy}Ug^;+JYKPjebCYwnxtTKyI- z)sv#ud*Fe^BTUa_8%5?1OW>aOXI9df^|ozRjHgoS^{j(?7t1M3P7)jGL2|2Q8n}Zm zx>6yj|Utz}G zX%W2uk>U_aF@Mu!!4)#Sa5{71x8!OJ-rOjuD25N`V;F(31r85ujkiSYOXo}}b&-i{ zd?%v!xLI;s$pBlQ1rk^@Y-(`5-IM40*q#JE% zY~)YNk7rf4r|u`4nNbbUBEd?F;dm+71E>nTK!I^wR$Z_ZvnC=vcxr*mCe0! z8f|zk+REMqP5fiei;kYv8go+98lhbgkxl-f-g&5&+HDa%azFN5OOsa|Wx>>sKr%JW zn9ShMQ4dyL^or!l5(4?=0v?N!5)s3{2PyJgAWHCwSsDS&#$5KBFysOuUH-!sA+Uvjz=K9gV9Kq9V*dY(+^A+7e;%(+WW=fq7%# zl27T%)~U+gW~SSe1*kuP1U37iV7y8G(7H@63O~4Imjw*NHdtwcQ=L*C(d%%&6E3-w$X@AJd=2 zVphlJO;TvYzPDk)tT6g$1;&-+7C?5TQq-0;wFAuf>%pNSp;wZvY)#K;k{$c+_*^PB z5PZ_y-C-6zF_X%`O^b%>Y-c@ZZLTXj_Ry$0Bd4(WZqCnKXwpc@^7{!_>T~twhrT=K zqC&hTpLj0M+sCE-C=JDzxlH~j?0>^Oal>z`a?HAh&`tnnLu2^F7L-%6B*jjf+1HEO zdF_g+nzprE6^1NtIXmrsVZDrYRk1PJoVGPL$y59GQegw|TGJ`mzmWH~R%cf<+Un3C zpG;+9_$;#Qcxhf|bYfUR0u3vx8g5h-jHI3X<7xNee`FwSK0Dg&>d{Wyp5&aj*oWqk z;QAE#{3nMcTLtm3IKUgr!-EmR)~;} z)x{P#w(CTk%O2Kgi;7(lboeU6#mo}X0mAei4Z&O6?b`=m%u0qAm@bY_1ekt7dh zdF)NJTjTQwd;c(gy$>o&)-NK-c%)72H#9gh$?f^FqeMe=S-`8pOA-L50uuS+Xif0maWcJc~2DR=cx*xH5oIZ_Jy6@0g$S!Gzv$Cryw zp8GiFy>|CJ>%Z0z;5W3BG&_4+aHw34x3^c|L7Mw3uIG8!<(+a(g8!Pf!!W7&Y2j!S zbV&UaEu8It{=}oI5V4&rZ2YDcoo9x#tF9fM9loLg5|{#8v3(Wydb3e1S{)7%$)lGeR*5J^#O1lqJcCNZ$+@#z#D31=hv^HaS^@#0Bk6^NtzRJnm zptu`37g5Urq?Kf|o|bn(BQ1?ums4^~cl=3iTV(&7T)kAL6j^X}NpfpODs?X1qw+mhYjRa+@Y)8b@^&X^ zd#in+9#kIHRSJ7sZ5FoCZcP@bKGTXE|{kO-gsWzoaCr2O#p zerLkudq*z!=)hH~4GnWyayrCBf_|SWW~Cz`@`!W7tV;0ER#k z1vQ^>B4GgfFN{D7qlhhinl!vI9d0j=YZ60|N0qy(nTy@#lL+U@`bjz`fx zV(#hRUGPW@4F2PTdB9kI9sn#FPpe9YVURR-It+`%GGgfea}SFr7M_uUV2FKZBtRsF zff0v-qv$K)07ga}1`DUZhs9wLbQm0kK;s!OIQnNU_%Eq&Bo;+q5ROK|=^KP2kvIma zG#BZK0W=Ovp9`Roz`rpXKO7EV0Tg{f8Zm<2J2)DJWxR*M(z^vm;}8srF>p9TE(QVO z0eWj_vt@7rgT>L-=$C=Ru?P%9E*6dcx4NGhI5@yi4+s2ZKOFpL)8IHHoq^dFDI({~8KkpO)`0FFY_Hwe(WrXLdk04RF%QdFZ zh*q+-42E^T6t=|@qY{I%WOdo$_xpXe=Ir_F`+2|b^S;mXyzlp%&c;<_;)?k=^ohG& z=vtcM)5-gTplRA@;0L<1{o9}XpqogkOf40UL*x}4dHkB{S)|>pT|LUh|v*P!m zds&txIVF0N(_dV49=&&}i(fIjPhiCj6B-ZimHy!*K;1odbo$CsN@>dz-Oj&Eo6VBOb~12X6Ziz_JJ3R^*WB%nv|!7 zNw9X*J(SRYrU2ZTs!U1SRH~#Qkj&eJP@$+HZg)#As6SMFw_^uqST^~4sJwIF$d6gi z6PY2B+ld`L)wL^}Dy|z9_YyCnD#q&^bz(XAfr>2n{Jb&Va8r?AB-8!R-L`$toP4Y% z-_JVuR}ODgYxd{(RA@vyZvR1LBzsLr+_@I5etZyn4C;tuwwSKgRa`D0?%QP0$`G9W z3EDkyG&9eA++uTd^|a!XTlG+0w25#-d$9gmN``g6Ma!iy#rmpCb1om;(9)jXnesci z$t|JsX2wL4(RCwejEA?(d_eqV)F*h>QyT#GUEhO@>OL@&GbT#_k zlVryu^O5u~nzI3s^F33nm>R=BR<2JnnI&3i`_JT$R500)e+>GYOBg$uAGYoS-@%;( zGb^V(kGS4&uqChZ;|)lnG$!g&nv*8+ki6UtY13?~?bkA>EcDCeq%vV8&09mK$h|vT z;ykb6tMuCC&ML>?e%BHnI?&42q`$7hpxylX0+mA=-aDCvko3tHRH67@@4>IdGCYSsVM zqHg)*?#uW}LuKQ^&(bfYT&k$&7t&oL+$fgP`dq(*8$+D0;I8U^89B%+YKkLxNC=ZX z@M5fzlZ6ITMQrR<)`04@M|-?s1{sM$tIR z9P_tv$_(j?Wu{6#_4x~|DrB0!N$}amvF?1cnSJclO5R~TpF%lCcKV~tJl|`oHW7=X zNaXn`7UVrtc!N*uHeI!>sGbp@Vx>;BKA zpA$NHB4`DML>@VK++`cyf)&egN2Cad}*`{{*_;?7u6om2qhe;y-ob$hxt3C|^0~Rt0W|oxrng^y8h<`|)PQJk zHL1&_-pV{==7(2NeI*5ief`>Zj1#hy`toJ)(~{0fB_GUc;=1b_t3hXl^=J1EHEKk^ zP{ipJlAqfYW;K@Zc2t@#v`bjHsVMvSiT zT1)0jxfPknr1M)QgnB;Oi9DkTrbUrOEZKzzr*;qumB3y>4Z@yx+FecGP+UH@=bkwpJ#NOCF+G=_2PZbII~!^_b_%D6s9449a{Jy<%%;-}U(?YkXH-XcXjd z`wrhvc~Bf(O>QiYj?tvNNpKuXN$@z8I-(}v;lEq?4xKwfO#H#%S7fepb;FF8a3xjW zJlw7IVSr&<`OUr)$D^)~Ynr3ShL!GisWs($%ussny<)DX&q^k1)OM24blk*=NslcX z)UV`72Di4=cU*SjkGi$SGJ1Mln1*2-qw9N(SNQY2g!NaMQ{;kceD8a^pA2m9LU{v5 z#clQFZzFT^lfvDavo3Q+J_-aoQO_Xrpvi&0tWWQU*soiT4F^Uh91BHbD|kJ9LLyw8~!3ov_m38e3Z`+JhvJB0@Nk zjO-~S5aDK7uj58rt4qq7nU%KMDC2POB9uEQr&g+9Ybz;32N4hg5Ux8j52e5i60rD@ zLP)Yp2apB;bZiU}krK-T5da&b{YxGL63Y`6q9Thi?#UepN=2~!=paoD1JVJyNTwJE z$WV6X^+Vr&HvDh=ZT6`)~krNRtYoHUgI zf30q5U^IY^jls}=>!JVb9zgpSb#&}L0(6jpAw#FoG3w|DjLoA#-;iGNp8>)c3mFiW zH3PxA#b8h|%L+g=am65jU`T@i141#0AO#V(9|W69!qvej+>J z*gCQ$LI@RQZ?zv=`HimgJEzQf|CsB!?)Q1`=f3annW`jCS_)@TGbi-;my<5iRlDoD z3a2yNMM!%s{iVJ7!|5a}Z2%_PFxz;i{Jd0&;FH_8#s_j<^s4&{5EQt|OLo|1C0;b2 zTW|gS(yx_Gi#AHxe~G1PJgb+XC!Bv)|JU(T_0*RR4h*Ee=EwmkP8ah>Jg9n%tco~74m{p` z4;Wu?=7BM^oPzJ=+iD;85;@$s^LlWC6;A=9BqGEp@Peoz0{7$|+`5@&(4nuXE}MBK z&mwOWpgPFeJN2*bT6@j=Xdv{IO(BPZ+rbaJ176@Cm&u8=Fw2h1iPV^%D&XY>8wFsR z+7|*ixoD#k{1&`w-cX=;=7QUw7Q81!?d)D1gM0V}bAXIDCd}|N@MnMR5sVR_#BPS|vpvxn@RXTnz7k}Rw zo-UY0zvP3of&xj-C|DTpu#i3ZRkuQUZ;x{K?Qw1VA4;kT?6}Kr^JM@ z zhd!n^c{4Y6>bIE>uijZcoyid;FL{XQtRgW5YrFcAaBe8?H_jMGCC>zB9Z#)#Rr`j( z@fXV@*j$HRV{Z>?f5=SP?;0r;$#mGWOwpf(XVeS^LMe<(Q@!r(E%N~(p6fGjrlOoj z2J@Jfc(s_x6I5uveCAH*`Q9!!Uma5jm-;TE_p?WxH!(A^~2DleUHgqcw1l1s|oAeD~%pY>z|}H9IDrf zNm74?joaj=5_Lm(*&Jmv>0xUHfpz#c}Y^A;2FI|d7TyuCa3Y{QEV%<~8 z&$@Lxc5F;_GfoeqcApaAyQZbqN$j=jBz9ZwBg%+*U~VmNY$8zU$wY|oRYdXnS;a>T zl>iketc7tUv4f$kdh+J9?IT#}4ccZy#%I1-gjhF%5TYU~jPAxVkj9>I+})3NUWd8= zG^!b0r_@nF4yq%<&Wc2%yFmup*n@T5()9B6Sm^lTN_?T`Sw(Fn7>W@iTpd#Y2)mY|ZOA=g3;YQ4EkM;3p~ zQ>zxdGb+(E<_}UP^TqFFX)U_md{3jS$(yqtKG5^B6IHwE4J9+P+me|~7OzIc2h@e6 zW`ny-r>?o~r^S+8`f6n3VLM&pK~{tkq=>>D*qK~2#LzNL=2Z@PR^Y8`M53a5L_}u~ zd`&s_JvnRj)Eij79xD^L42rig31JcZEv8^e1ZIWszvp=ODw>%mZQtrx$aM z$1Dk*bh^x`5bk?Nt{E*VZ2BC_FgDvt-K*62$c~DcA=coEa1r(1*iosbF>wrKQhd*r zCu4OoqC2#IIJc+e3q;D%DZdq%e3gxgw zy$X)G>^T(uFc}%AIqvpO-t8qRZ0|+7hSA;d-0-4DqdCy0wx7sKRMv0&Ylmx^_<(ZG zB_1V|%*XxRKkq+Xzx&?W^uyv%7P#M!5xsm%G+!`xMA?Aqu^3;BO?z$K>0dVN#%gqV zlBJ=VxOc0vveOvSQ_UBIa%E;rWDZFDvBfj`)W7T)PZ2il2I0;cJ_%KvYh}R5d!=mu zsWAJ_jz(AA_<*mT6}J8P2J?f3IP3a4Duk}B{_^?hqVHyNPIX&Ob&gMV$;R~5&6GSa zC+-js$#mR9uq(Sx==D_D*TrjysL*TQv*MYNRdt~~*=k5adMA{L>MPZ^Op?vA@ypyO zbx=A@dL)}~Vw-*8s`dQt(e}GtZ%KP(xyT$EoEQ4VIZ7vOXa}3gjs11w^01CGh3ot@ z%eye{)=C}$g%sFczEF;nw-|v1)HXeiBNiIFB=z+i)G*GgDG5dO&NWQO^hY*Ousf;G z+!Cw;i|<|7Utj<1lpeNEHi%+Uf9Y0In!<%abi{0m1Pc?oW` zT`ehc3~_FB$Qk{-V4T`;4

NSs6)QiBFVYt+afQzy)#K3iXnz-MG{@B^P_cDwBKT z$*k55^(UCNs`UHq85^4SUp{Pl4?a0qs*Q+Rv@TG;-Em5#eJJ12weIY=hp1*ZmXxAQ;&scJ+8lDfU9(> z`V%g5X&VsIZwa=lTdnROrv)dxMhTUZmM(p?qo((DIXqp*@d#`3jk!OJPF6`8pYQ7% z`MUIWviIqi;hIPYs-AG$T$ty6Gv{)Dr9Q93v^qfX?*B`|FKJ3b!>sO zcYjzDL_Ayl)xs!y!vQ8xfp>RT_!{S;_=n$$%p+yHhY2HvK`Txjj4HTL!Jk#vHWMP3 ztPHBU)Z1riOdCf;_NMpx$K`d(8H)P8EQ=308zC8t5nh24X`5RZ0N(qnYR1dwn5?sCzQAB90;N?rH~czTz% z0w+H`TU(L7pshu}ptJ87{1^oZN1|DsCae;GBT;{sC^!=QyF|m0n5~juL!&g5D8^YD zqQlQwnn-eo@n8W02!bfOxIXhT7KeocTLtx2&%Q;BiRy$9UY2jjTQbfcabXzhYR?vL#5svWq6Lr-cMi1W;_7 zY9xRK=%>lz(Dvy_Bnq=V3M3MX+nzTP`5%)|C^k1NI_!2gNEH76D|-GPi%2vI%{BxL z;RYXZg&Wx0W4jMB8FhI2oeCcZafZ+r8`h``SEy=|KLHAkuLxL0CHv3 AlK=n! diff --git a/usr/benchmarks/ib/evaluation/final2/others/ib_write_lat-t_avg.pdf b/usr/benchmarks/ib/evaluation/final2/others/ib_write_lat-t_avg.pdf index 99f487485e4ead876640685d95650d8589381285..b90ed1c5c973e37bf584737e87c7be9b8a1c872c 100644 GIT binary patch delta 4829 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�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 XAmT7YYK(yv6i>uMrKL3uwV?k3YpF@= delta 4114 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 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-avg.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-avg.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bb2fbd93decfabb134b3fbf076f403a3b3ab6b38 GIT binary patch literal 17936 zcmd^ncRbb6|9@q~waJROlo{^6T-kf?8Ip0WtgdU1L{j!{DJxWxRgyijQbIyzRz#A@ zh~oRcSM^ExeSRLl-=E*xqymt~`r*M4bvJ;l!q0ETpWo_WD=OJ0qNpyO*a84(o2`|4Y>E_A)XAS%C-mZDBzWZLGbsje>_Cz&e3E8i^K@fTH0j zFaiS=6GtM%Q3QVF-Q7L#UO*e5Y=HIh@W$Bz`XcBD5Pn;i1Qi0z0E`3Fy}%g4vp;l6 zxc|kwinA-AJTOGX70`eZ*3QEo=&6Nucf>n^VFW7?J9^=9SQ|HxUwVy&cKk4!v1YaC zZFe9WZCw<%>MH*dZz!uLT#is4d4_2T?)`SS6#kxq?<&eh_`4-V;j0|v3yQMjy5`4um$RX;sL1d&?e9VltPjUE zUCKDCoAGHYS?;#}%!dBN71OGDZd&U_ce=Xj!RVn@xS2rVYaI)v8`=1VZ<*%TT|LFX zpyA~H6>L9~i8o74;p`ngzb?d)1TV;@1|(fLpqY59ZQbyIUq!)k=&{}O^y(1 zJFSSUD7bK(zwC!`rg$LGtn8Y zemHC0=QiobOIn5un0)o+18-6ALE+fY21i2+b&gbcuojpRchNP&?MTAp0~(mY@nb{# zulBN;-le;EoG*2y`%Cbnvi*Vyb2Sh%6Pd}OhR@6{hgX18UFi-uoc#qDXjB7pkEhjNMg|0J_*Te`HvmdTk;?1+VKNWf>=!EhSRUw~- zR;bYAK9#(wpk8nG{$g5<1-;Q$Np~srg-3=6?_mbI7LR8V%||VjkG!0=GAGsVUmAZ< z^OCO4maE>jH&}SyuQ|Y~T|o9l-{%=iw#ZzW6Fv!tdkbS+;nD#Y9IYd7sb~wH88OF( z%ijn%>V47_wR#_Z>0!wo3da=v7f1N{luIx<23Pi~QprZA>)wMbnGM;0 zcNtQ&Dtfj8)tDESM%2_<&ywoxb6CIVHCS`AHR+?}{QeOXok)lo4fC9+jK$Iks9y$0 z4jHH95AGMo@$Na%Srj1>9@O!v$%Q`-Yzkx*rs%GI#fuc0rqiYPwcO}HF-BI^4{eNW zUOb@|(nqfQee%V|$g=L?S88X!w0?~EcBMjo?DFN9%WK^op$`21D_`%oJ$`ymvS8D% z442nM6(r3gaR3VHR~UnuhRe?6;YLZ$#at~eUe{AbkJr0)G}y0uKg~*bfX#9)erMBX zctnnl>7-qD@-j--ygaMXT}v4@Et~wiq4K zWFy1n;8Dz?;Y`Bsq+ajG>o=U?FwYpe9;>1}oEC+97@#FW>b*_pFR7CbrJ%XuDRytF@7qohz z-|_ZB4o25|pA~0f(#7Q`%R~3Z&8D0tTdK{Tit!xDEx@?2r+XraO36vM?HG*YJzJn- zpO_QNv1+TD75Z>k>{Pq{tJ5#K?*n?_ic8lpD5-5f!Oi;4X)>;MU_^*VwESZ~t`{yb z?$k-(Srx6(vF^X{t%uWXc#idi8{h3_Ow=RJN7OnJ*S`QtYfhwt7uQbS{hEsz^rOif zSQY_`t}2+~dXZ*c$a#Woat_^g2oB+Nt8$QS>TZc9X=cGwI+ws|(sI%oC{?{~&F!o7 zG4iuWTK<9_A`p3V>)^%jqf;NhWn zM*F)4(7IGZ(NtB54>M~kILwDUKF)WAtxweIVC!lWbg1T{k58rkSUGuA^bX_!s&C~+ zG=k7j!tjlUcp*?4cnH)b`=8XaPJeE?GL+0oC{6XQ+-S~V>1B;RhpiKYY;eF>sEjDI zaxBGYEt$2XKIT>X1^WdBt&W33YBt8?t4Fpv$>crdD|*{+MHs4W&D!f0Bg$7a$%0S$ zQ!2<@*SM@%rU`#KK6&?|JFPkI-Rc!#qpPt!shO$obnY1Ut(3WI4D-)LKbeVFJ9bJX zo(J=ChT%)4kV?C9*Q-9w98M|IPs|gkYsTcd`}$T^zTDEF$Y({ul_6cJ(Z`sBaOjv6OX`YW=XMFme%#EH& zl0!!9fe81j&ge6&BqcNVS3ne0UPr@nA5F)3$=6VF``(!j;y*NCZ0eaG&@6pigDm$0 zRcue!@uhmKsOvdeGHQ7S{!zaz_tYhb(&IKx57!RQO^t@(Hhw)8DW!FRz^# zy_4>pY|RdxrXnBgxI{NeXP0q{>Ag_?ON8b{bDaCbnCj2#72r=3b&Ivb!O~J*dT-&Y z)ti`>;`k~r9@uKlH6+ww%h)22~YYv|>klyAu{1(F;$ zHP*AA+)(c);ZJ61|CdwvpE&=&F(rZ6$<&JyntCV&Y5grBw*7YBpKd7K{qSRGUsMv( zQ(^t!5s_gdyFsLnp$rGAqv?Tk3aik&gE2=_vd(W(%w>rgF!QYGGQZelO?t9kI$OE_ zemHyKF02uD7<)p&P}C0Il;f%x0NxY>^G=iA$Vd*x-Tk!b7P|I7{g2# z$eQ=+h%}i^95# zPf>Ns6>3TP^i~6hKGG~Tdx;?Mh9If|liprUIUh6Mf}(Vehm#|03DVukvCnl8L30IX zJAB3qou94d(ZkZH%QGFu47tm13utZ?EycX#c8M}Pyo+uKd$+yl2Da1t5$K0{(9ots ziemc?ryTgO3t_^paxa7t2mfSPZ=ttApQcil4yI zS%wXe#l=)l@`bVwALLnJ><%2}v6oIwH56QRd2Bs@pQp#f=Hm5im1(UqHTCb@d`mBR z+aNlo_itZ$WuRqvphmRKN242(Ff&xl5cMO5%y%T5Efz^VkkekqcC}SHvB~NIs^_Zb$sw@yYNs-@1y9s$bi0n2xUmn{4ORTY|Qs$5+r(u zNu&)r3ONCj=rX&$-QU;mBh69$DsStI+5&Ind8hU~B^SxVR8>oM=UrNLTDb#1s*Hu# z#Vgy~Xeze}tT(lb9AEZ>Gaan;I@Nsda*;rrK#IJK$COVg>bP>=M}?A}k4y#e!V0$p zPqdXK`toR|P8q#_UK;oyeBgYAA!W8#`#FXho)rphJ#$Z&1YSsnlT;b+)Rmi%^1%cn z7r6foR~enP9})_w={E4%PhK_x{`RAvGi`A1+GGd62C&86_Na8&($|qKh|sL?54?Ou z#-Zuk(nUi$lERMtJO>5eoK$p?lzAP^YZx*qAv~qba1G&o*t$x%K|klt<@GRWs~O!z ziSW_zo`bO+3O2raf{I6AHxjCQ-De*KK~}B}Y>p^F9EQ6}9A!t&Y(^-(GS==EcRU`2 zL(8z2u29a6zpz1c_EmelcCv^WeyjB$we#)R)|VgOH%amw!dG@N5#eZNFD634cUTC4 zMw>$SDOhP9C9?w$4YwKaG$(Yl^)fzxJ{?B+&hwf@sPVKXyPWgYY|aPBedB^ORlAJ+ z=TXsri#Z61zm`b@`6N;vimI2#*Xm6u!)5~=&Uk#;n&&T>=~6z)L;3c4$Hl^O?hKQ8 zGsl6VI-KYiuMbBLO{bwmX>A|AU|R{9_PpWm`k*?)qj~lCV1#WN+%`SGWfi-`WsAK{ z>wc*;mR%;zrBa`A8W1WpTl%oJ%8vHdQm3-h1nH}=n}-v! zlI?3=lr5uY6B0KnikhoD7t^_4WxZs0RKcc1EBELKqc3B7oa3|1#kBFZp#zcR_~M6+ zm(mY72|PKFUq-9w5z*R^xw1cPQfPcqg)@N4@iuN=FyZkiD$wa#?jeTD*Ah=;Tn|_| zX>NocTP<^O4LQf4g6$bNa5Gi)0Wz{-z0qag_&&Gb3x8ymE2snv?yeo#Y!Wm=fystBt z`SriN04w|6yczaa;MI=XhA{wCIIk88dmEf>)Vb;A%B1SNrbtI87Is1PNON?iW>d2K zB|WVr@<(R9S%;MExE_wso>{zQfPIKEpla2a%d|tb$MmE-%4A~fHl15$Z{&;%N?i^| zpVdqrqH~gcH6F0R4ar z9jkGAC>qblU-}74CCzjs&VwV&hb2U1f$WQtat`ZfWM2aU4mv*&ViCR^_0sGOtLUU| zN^-7623-N_sz(hRFg#0@_@lPeSrIMF-y z*o;ddM1hG{R#4)JDUV&Y)luBR!6@p_GWs{r7Vj=3m5$}~eOENPhEKNCG(YP6aN=`C z2}CG{({U6lh-1eKO!b~rKGUg|`c?Fx^Ve#RjEUB)gk%fmKJUQii=gHtdLijE&mM94 zlj1&0UYzni$y6F{@w%B-a3T@<=k%m^3XxwI(jtK&#u6xH+0 zQu3Fy1L6%av0LZ7#qUX6$vQ({BWK>0@>ZZDw=a?VNQb6vd*A>p%+XKqJognmI2AFC zYJ7a>qLNs5h4r$nc8Rw}ubBYZHDNdz{e@33w zTOZXX*NtNU>55iB53Lz|>EL~HXsCbRnaJ6(W<-FYM_PHl+A7(q z=t=8(@5Z7K2BXW3+8W~?if2wdG=On?p6*J|pZ6Z6pwh~7C=Y+g_1s9U;B*ts5$E88 zX-_sp+Rl@ZnOc=G-6%dJ&L+R;hp$Enj(iu@faVxk}QI z>FTqKUiXS@VX&Q!s{InfSP!Nk>l!umBvq#O%FwzuwdrOyeAus(o1qG9f4Z+HI`l1> zuX@PleOTiS&~hw)c8^noSj}AnnL|8DoV@nNuPRX&jie44zLU&SBYU4vWIwLJ#pJMB zf6M$%Y%AJ=Yp{n3Bjd2}ZGYu83G!W7-!t$8_CkMxa_yIzj7?w)^0zhlZz<&b{4;b+ zS2l;jVAo@Vo_&WhmhKC)g8BaY)gx##(u4th3L3VniY9b9DYTzSgo!^UQwBF}4zONV*9Y_y z@LiIiE8`2Dyx7LO@BmKa&Q++eOv`|Qe- zqEmJtT8YAC+di{u<}cpiRH|#SH+`{Xi9v?g{A8O1HjwK8ov_`CI8)eDCfy3(sv8QA zX^t~(i8_DC~%MTuxPP{`cd;4~+vGDm%KN=SQ=D)dl z@UzVM&RwjuR}d(^bLWI0hVWvj;m;6`H2E3A4}i{_J+XwAa8h*CA83OkA1m3uKLAr= zxl9HZi==Y!qk~H zE>D~>ml6@@Ny%#qJE>qLaJRPRHI0CxnSbx`}#zx7F{n4P_I?N=sPc&loz8dqu z`l-$qy2QiirOh{|L%=b2f(7U8RY>xlC4Nu(-u2m?*7IxycSX-YcXa$nha`JqcdxU5 z*vKagmBT)tsU;5E1S&+G7HyN4Ib1UiAzz&kbQpHeO=T@Gp?`go%nh$Uw2PYdin|bh zVI64$b$8&9p=yTtyWIYT^0DOX{A*j*nnE|Z4ltJ68yI~)L@KmqpxUQWIcWir}V#7C#jOl=!~Q&DUemuJyvkzt$L2UN>(3zt0|pR za#Xj)9pWXy-Yu-I<0;M>CU6v!VvuPkvMne^f)2e`Vw>H~VK7 z#(dxVd7KwV)Qu+iPqv=MXFPxQ{rRHpBl4kFUK2q)sbcAp^Irq5DqgVb!&7H?kMzHU zgar6b|EquGUa=+|u@m@80}z80Mp3oFye@aIp2D>*-_Yy&_pQU@cc*&VGMg*Ps4pUe z{J}TdD1tVeX3f{wooU5M`W4(0;-FIDY4k<~xjZKQj?b^L`a6r=+LbuAJw^N z?sk+uy(^_0a-%dzrNi)M`TPlQxqinBwT}%W(hr`Eb5Vsp)kkUu4v@Y)usU~H@7NNT z{btsHX@`*Vr4h|{+FfK%?nLVcEDdQIcQ}ta1qkK7RZaf(q=+#tO>-&yaR}OV%Hjyj za=0&@>!G^N!+g>s+1dC(X-L0aNAex_SFBTwv%Xrf?|#U?+$su)?}vQKFizSvt~ACAJ?V?owDl= z_Pcxy(VK!y=s@Y5Xh-Yc_|YIP>;GWo@+^IJrsCavFg3#^{{&5Z+q}pH{x+rCbHdj^ z`m@q35D5VVjPg^^K%u_yeyN=BjfW4I!5sSJB5$bf*0!+ZKE`=23a6FD2w$K$)%AG_l$jzAnOr^q-a&mQ}WBLN7sED2N5SG9w$6Vz#+DPMaAYcb;)b$(8h*p1X6n#jo6qH*@7Y}hOBW%CiFNRkq+E%LF^F*^(e2PBz zv2VgwT7F-oV>s&r*c zCYRA9e)j2yqFArr=rSOM`G zhEcQU^UO%zvt*E9UANR;LQ%)2sGdmZEYcq@Qj}`24Hr88(xKt`un_;;CDH{KGFgwA zw`lGvg{f+Nuh0k3%(Ozdsq$M%?@Y3Ip##g`oDOPDqM~GuTzQ)?_uxa;YfY&{y3oUZT8;_VT%ea_`pKrO;u&DkCgXm)GgLuQ6#U=&0sUe7)07;hUH*K9MwLlNS51-Xush>S=_)_er)& zmJZZ`Pf+tqNOAshrBSEzS)wVEubt{a$9v8(+f!+f4XXvzIM4=oJ?{v<*4@Ql0vGBQAK=L zKlCN!Tzi)))>2RXXuvrB-P&nCkzb(^oJT?Rg65D!o|apO{D=UJ;IHqot^5P0wk1g&un@diCW!vlBN%3K=Xs z67i1~%cRF-88qg0(ZilM8_1n{kWSJhY&H~EF%e?W(BB1h{3aojrsGoI- zPJ&LVhSsdZ%G}|QRiphZiW0A6v?23lN)3M`g;Q2va->*LlkME|p&^$~ z4xx7*6beN#(qtSr{jN$P3!QRska-At{GO@$Ce2yT^SqRB4wa~&FKJ>jKR#XbU|RAg z8`<o8k@r=Y|=yZegHVY|bTw2!49NI=EDVbxxRTzf3Mo*F3wP1y{ULlS zs`K2AOf~M+H~EDj?Aae^dWRNSxcle1UAYt!cM*H9TL}bW=ZgU-gZ5Yw81+UKuzJ;3 zE(DYg^yh6Y8XP87lam)v*98s=Xdp19Qz^$o?ESf}vdDBu+gOZOX0_UwX65=pG$Y?# zWJfft^}P+eyRMY<+(-_28fT6npG0k1dcWn$V<+{!by@@bU7&STQ&^wVsKCa-{!QDY zIR9s`Bg4~oeFOI|uui1wGg*)?7@4vOZG?LzH4br@nt7hklc#dwP6>`ZG!c&wRv)JS z7>s4g`FMra@Yy6Yd*zX??mE82u}e1F~#D*ju7L+ty~ zz(&K$+vhheAHheKJ-0Dq1>%LA-}U+UXJ&hb?aW zFnt;LW0Pb$G$?)-yX4WFQf9A3z!P&s;L6Q3=_&J=0B3+(qWSZYKUY7>|F#@Klb1G&mbf zYIa)wo8`@j&%Vte!k8`;wY8b50vC@_*IFZYIJtIpRvEa=HjFCE2QufteYp0*t7<1> z=~Ee=qH4uYMCC0ql@3vM8=Vw7TJygqiH`e)fG`E*x0}s!;1Cw#d>JKB% zCS!Uz$d$(<-mo8geJ+K^!s=K}_!H8*gP&byRWVf_{8$%d-}vM2;({EzmiOuU@X? zJt(PlHilyUn!J5pB)cU!BOC7p9bp$1cvd)qX4P~!+=Z?xa!Gly?r}}gOFEo^b<{3e z+$*@2*tuqEzbIkY#{<0RH7qQ+|Et`>%*@dR+2EIS$ni9reJ_oTGDWPK3p?zbSCh|+ z98L9<@8x^tbJytEWa!4xtT%igvd%uU6I`gL?_CeN{akjG&TWz__Fv{;JKz?O6`_Rn zvcoxh;yrL+;C&!Mjsrx;#tle(P;ka?zZhqN#n~8Qan25+1|DuU?jQ&u3q;!nk8>tw zXNWBNC>((X!{8DUU<@1swgN$v-GOWl zLL!Tl6bPc^?BIYUWT61LA{Jl-91H=nQtW`77jdBEYUAYuh6G@79$<)vJD>-=FHpie z;jlp20mv``{yO^rWiLQ{h!@re3upxE?C1m}*0?(Z9ndHsF9lElAOKh#psfZ5-ZF$} z18M~WZ}tIsFaVB)*y3#L&S3GbSO+{9g8==y#}VmZfc7?E3CxQpWPr@Ha|57 zM-e^n*Q=C&ZdC|wK}g3TYLaO2|Ds<&Dm>QB1TYdIcgE2R&?yLFrnapW6kxqSEcb`M z5y}4FoK4%tkLV|07y=2%q-f*$ldd@MDgs0uNR)E6lXrJ?#S%uB-)5R%bU@Hwa{Zc* z7GN|KNG1CJzd--5G!Ve_Lqg$TBye~r0UTPR5oizwz?KpiC>Rc;Gy%y?#0v%RNO(?Y zkNEv9PH6w%F3_*%2!uG$Pn<}DK!4qPKyKc0S&wj0fWMkzyqK$@Lnxi96|gR2ORNEB!&0TzeB zfl2~JqBtNTD}Y!;7J$(SqM?8|hXzjfQG|AcZwxRh@XHsWj0O&+5x_tQAgv4y{K`rw zV~~KVkVru70BvF$C@@(8kzfd-IthJH1Zhxc;Cs7_f^VyfFg`&ogz<@HBd8Dx1rbzB zs7C?cM70nZ`^g~D*9hVvfeILmKmsTbMEYfUqGf=tC>RU`T!0AMqWvbdT_7?D2mlj(3syB!4rs1KyZY=E?@w_@_;T0UIAR7pWg(p*l|ff0mJ`v3W8(oxByOx z_kd#%oa5&OBKn0mpnu>+C4vv^c42<{1;Ho&yof$Q@Qdy1r!OD@wE}AV>)N(8!B>Fi ze_R9~+4egid+_)2@aM*xxSoT7A&BvYu>KQY+cx;Q^aIKwJ|Kn%I029XPqu>xFh_tp z5HTzOX^O-r+ff7lGrnzy7Qiiu&wfUL?G+zbuZWfMVB-5#02xKViraMxfXLe=HNXY7 zOWI%raX3Oy0cJ9>FEJ_s3p(+}5DeHDDE$gez{Dih6M`9F9Aeo9u;+Hk4sez25)cG` z4r>nvmRn*wM=)SQA}wbypiE+&6Bzk(BsX9&+phB<1W@8rcQ7zvi6t*E^5+;hz(oml zpzSCL9QYF(;DI@@UGfE1sO^#u81-|QKf@$235h)dfGJKa{bz+I^!xpWB@7HqOG3;4 zJSR~5^;{mlot-KV2Ey>q;P^Z16=G)tR1;#PJnUC9AguhKn*A{ZK^s4Z_|LcmKL4rw zGshI~@jRL0KtoT<2`HSyyy$yqtA z5oA}bREYj&(kGqV`n6+}nmT1u0k0BzDz#$R-n}jrY|Ydc?d$ZGxbw2h(+(e9awxC2 zZ`Lp8#(VT=vg~@XIgg4gCvDM%Ko&)QOCcC}{twT%jo{!GCK$h%dcfZ(Zd@6^T7PqbhamKdWbpu286Wv?X_+D zKN|SY%7yxKl~M!}-to>J?n;FJ7(h@-5)Op{xDh4+{Dr~Ak3-=CP^f?q@qZhz_qGEv z=mp(u@Sd(7cvojzu&2EP*p{%_akmGW5J>@B%|Bbf#86@|5wH^;?8y*k%7+Cr${kgwJmsKvA%N>7fw7 z2K(=J$baksMM)6A+D>|C!ukK-bqMr7yZ~Yu&<%m3&_9FF8?$m;vM4)c$XLoo>SKYGUOGA>5qpSb|+3<)@z@cFHK7@+*W^#_BB z|D!)3k>DSmfm4rv{10eGz^OaO0H)U8IslGF{v893B%s~D`icYFl)viGC<3zm)eeud zadySxi2rkoy1Ro1n7C{LTLJ?Q55j6o#H)tR0a#$s+Qw2gI6QF~gQ3wFG>DH+Syu)0 EKcRwtcK`qY literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-msg_rate.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-msg_rate.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1e465abc642692f6ae2c56797f27e44c8afbac2f GIT binary patch literal 16723 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 KU&Bxn_J0A57_M;u literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-peak.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_read_bw-peak.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5d2100622d8037ef91df1afe998b4ab11b0c2a0d GIT binary patch literal 18244 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 MKbpfMry&peKU)C%ivR!s literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-percentile_99.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-percentile_99.pdf new file mode 100644 index 0000000000000000000000000000000000000000..412de9141fa3124cc00d290488c99d6a6c8b3d81 GIT binary patch literal 20342 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 R7J+EcXc!-#vW^Pue*gqyN`3$U literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-percentile_99_9.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-percentile_99_9.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3048540b9dde6971934d78c824f8f73c0832b0af GIT binary patch literal 20374 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 Hs{;EUVa10} literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-t_max.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-t_max.pdf new file mode 100644 index 0000000000000000000000000000000000000000..588c4f0a39b3d5ec5158f00e236a8458a19c5982 GIT binary patch literal 20100 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 SPk~@l29JdC@hRyj!~O@&fNGKe literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-t_typical.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_read_lat-t_typical.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2f129968b24d137e5900da4eafa862f7591550a5 GIT binary patch literal 20493 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 literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-avg-MULTI.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-avg-MULTI.pdf new file mode 100644 index 0000000000000000000000000000000000000000..126bf325070d8a84200c3f62ee1eed154c617e67 GIT binary patch literal 22768 zcmeIac|29!7cky{bj>7`;UY5M`ErFa&+{B9^N=a7dB{v;mIh=BmB^IL2_a+-Wy(Ay zQHBt|bFX@ysL%J;=Y9WtAAL@DpLO<>6=!hDaJ?jcpw)!4NfLOLJ#19H^iH783)R+neDk3jNYRPu0Z6+!PBI z#Mc2DV6o;-_Fxq576egqaxm32$AS$2R8lekdUJOy7$R>6pq2RXEBWJB9()N5k#@(* zYGRGC=3wL=0!=GpGi!TGFnSNYjDtNEjKG)wB?krt06!U!b#icV1mjqd)C5DM%w4Tb z%{63!&VV~DCu4hOM`I^*dsB~}tnSqp6T|TeJizWT3xX({n^_x6IJg6(7hN zSFb;PnCVQfPtBnqY!P<}a>UI443U$Z6Y<9zrtB(|=feEIuWmh@{}k7|n%}{FO9tRZHAGQw$B!w_2;&?kaxxicd9Yg+p9YbQQEz>qC1;;8?AE>!%RQZzkPf8 z#eJ0*$@j05)3RK96VY=c9{%l=Dh~ryz{S(=Uyg>0J6W7kMg)4qoewp5JJR&BQOMh! zzJ|q@<^Fa1SLElsgS|XMch8eu47OVNK07u@mosx&Z2SA#+xq8_PocUjil!+miKHBQ zNf}NruR+zGK2erYf)=2KyI+&vzeQnY8e`0ofNDH_%3I@oPJ>KHX7d9n`ztw0C4Dza zP(~bdueVr*yfaRuke++m>_{wf#v3H|lAKgBBvX)^G$c*>oNCauZgK?G>7hzi^J+m4 z4K|JTi;)p_4MNrqUxW;3<6J50-aKr!E=h^gZfv6GZwxe1d15}Ke-wJey3YNGZ_o>~ zp{um<6n$h5SnJRpiOUafnOia@XFuz9RH8grtrGs)b6TXmY^2r4mO)>Hk>0*Czxi@lxm2j@0mNBCnbzM^6C{mAr)EvL7)1` z)~*S5k0#eJ?6Bq@J#OJP@~F?9NtmiK8A!}^?%e%Ps-ec59!1^haRSKXQF%TBhI zPrH!PTq5=!cOgCI0Ixn-67~I+Y)cX0qt;&X1;pFr_Ro~wOQ#epLP@NFtw6e zUod>NL!LvjAh9N*jI^7gZ@uja&!5zHO{WnLvQLS?`LR>mg`UV!KYWR;kTpEDiBC)(QkTfeiX;#@!$om9j za0&70aY1~+CzN1Zwc12@GS#txxD}ls`B<`XsA5Mi8qiJamNjRs zB+Dyo>A1?l3fU0hi9TOG=FFLO!)1CrpyMdK%d!0qiI{3_j49(?uW@J7<1d{#yW#55 zV9!v3TS-z(TG3|$hm|t&HLuuw!JfIUr+$|{No3gn>X-bU$vFYUlHGlBavAOJ>A5nb zyJ6pou#OXPfqm-O_-$UYLeoyO-g{D)x&!Y@rEC}y8Pd4iSMBlOm1ki$4!5gp zRDC#c#G!?iNW;mzrJ60dm7t-a#7HNI#?^X8In{#3SoTTLH(F~c8U`BMRAhJ9Rc&K* z)=`N@#I;oW(^PF-HW5BoXsJ!s3Ogvvl7tcl`yQVz%w}A-mXT&O^Kf~`XOMSxI7c6S z?a7K*>gd#~xl5@`Zbf1rnv5hF*Vu<=r1T;cJ`l|{aV!{Je*7uYEG09>;MFIvI(yYX z!MPO&dMLT>JK?d882h5tD;YD{B<#n9<~yX6OPL?^IzM7{<7285KAm)y<~braEwF>p zK<%7@fh|S(k|y*VH1WgN!q@$=CJ|#Ak9yn44GOsLUf?foZ8VciOMDj_U@+50Rvh?< zU(SouoWjrK;{Z@+foa&{1LfkxmmQltV$ckAioG3=C|5r7st#N z@YuS>EUsbX-t#9REz-ti=1wzp1A`8C8EehV?lGpc4S3ju4TU<-RCBIab(gK8^02)c z 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

7G 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 APyhe` literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-msg_rate.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-msg_rate.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f7acae4736e4cd06ac8f7170b8c94952f4eeee01 GIT binary patch literal 16627 zcmd^nc|4U*^gk)-5}_<5u6=j+dtKT0eP0r)YbRS=yF|9KWR1!eS=v;j$eI#G*^(uZ zH6)~LA-;33`g~ITKEGbS-=AN-=05YxGtZfG&YYR^o_Ws1udl2sj*vh@_;0<1-mHKi zpm3S3LX$Qg@wR$>};I~itc`ZbrN|jLQ(>O z#bA*bC<+gkz@bq%42fX{H#c{p7pMgChIU@=-kvr0(jnjma1O|OLGh$# zKPi)R|ATo|Cl{bSC`{D_s6g4y#@!aYscq-xKy-v6NZmw!(TnJ5M{tGsWmH?di|4@5 z1!vdt#E<1XlsxxkBr#v#_`15d;9Q8`wI+ij3qtcZOo#6@Uh3_ySMq#riHR{T9$)Bb zS>o6I_%Xx}7wX5G;-|JzL$gP3@?E+{`?0d*Flb%QEA`Vgunn|dtQy2&OT5)3(sjN6?0b=jV5`Gws9dyQdF++laa1LG|LQ;qch2$q&z8j+fnWKPoG8w%gaPURBu1MPDG4(GG5E zE*ML_OR8SopkC;HN0)!nk#jUyNv2obOx2LR5tJ$I7F@)nt7+}ZSBJ&a@=LSE>a?y_ z;qJ{H&ot1uRi`n25SkE>(1agTO0p2VaDM_5!InSwM#3|`TsvrRBlPNmY@Uy&eug8&)K+-?3u8oW3;#0uJ}fH1l_LoiHk~&*=cXxPTn?6 z*4*yr+)V7zvZCqrk(^Y`;|%9Q*VCV*2N&R1ViVUB3##hT%#M%0zzR+~s^rB(otcLg zipm3S*C#VLi0f=GKaLT~8zhz#Z_~KSuB@!POAn5vRB0f9G5TkD8&xYAI@L6#q^aotb@r>yf2jE znVk3vJY43X8e0g2@BB-?%jxKO#(AfTojZA3E`(nbKd=%r8R6$>U+{V&!=yRO>zJEr zQ=TNKZMJ@qNs==wPR5Atv6csCDj=!`RbI0HwEC@?NLPLt{_R zYg{QRpUv3ogz~V7_GerQQeulW3=Lg>Xo6%GHAxT~cCn2GBEV9jooV_Gjusd$EEx9uG<%^4X+1r`a{2PE049>XS-* zwf}bJ;Owh+`qZVRQ{EI#?r&T>bnlH`J~nxev6hjowl!aqHlcmbdHTJtje4IawGGU_ z$e$j!oo<6(P1s)$%-Ne}b0a9DATp;uSgN{%No%Zks&CRGGrE$fJKvnvU8`p%7ecWz z-#D*+n)mi~zC3m{X3ohg>ggBbB_2u%7o6lbxoA>bJ5bRd&!q42fxS2v(x)!p$RT*; zeI%ZXJLCo@>LzUbo0WRop=AAx9Hg^Kdu3wydAzRT%iUhGii%g5n{Vl|cYIVn(|alW z^NY&_(LlNbP80h_m5pWQC{(XeT(KFxrB^sz&dloLE)lJm6LNcE%4ICq!Q-jQOJ;`S zXKA$#&ECpBPmht{$P=NeiKKm-9%Grc@7b8?8&iQ9T-k8WFkr;GE|5K`qN8OZ(=@#A zQbY+yOZkPO<~V8MZcl+5S$-6}mX2fmFIEH=IG4;BgF!=_%9K{^5(7;tt%K1qmjyW= z?P0yHAv0AtY+vZjxcENTacytgKJk?z%Xzxn<=6a&Dd|oQC8Q+Dnq0ce%zDy6qRGu7 z@^*sTSni1gFN1}8Dz;&s0#)UXvVmo*DJjh?1@p5+*|VcrDV*1c)B}VbM)EMXpo`{<7mG z-vZrj^&2F`CWh-;ci`&Vk4|R_Xap|pe=rccr162>GST=8&?}GdV9iovz?D{y$NWR> z)rx8lP`-ECY`)zt4n~~w9_xC_cdx&8s4g<#OJr2<>{4@a&cMesuhsqzs*pG>|S_J{pcg>!!ZwW z&)l|AagNg?X~;A5je!@`THR-6j#fWpl&k%=q`DTcEY44rm{j*Pc=XkpNe9*GQJWK8 z^e;;X^xb(T&mT$E)ug;?ZaAH!0;8~ewBLi0i^h^5LB)EPlEZ62e|8&d2<1-JZS;@2 z6PkyM+AdI|d|nLX%$&<93%Ekd6+&2^)EaWI*(Y~^EBYAW?xWTQmSC}vE~-;&V#u`@ z`JZTCKOwNVH{5|A9yEJ%s8iOs(kN8007v!!^kf!ORj(_Ca$M#jsg zx!!#F_T(5%?fiS&B1uz*ez~ngTZL*)hieVt=CdBLthu;u9ABK7bSveY7;#u$XVhCp zEOavYXI$pp!`G1SMwtR3OrCk$GOL}o<3+Ps_O%fI^`&>dy=58ZoxF3)CEi#Anhi14{@_Xfg_WpXM?ds36*YLwq#nLr{z-J8ps4)f zJHz&|Rk1)iX1={~)8rC!swQS9Ts0 zduwd-2JK@cdjQk?P-kbf!&}gFCe4$-Qvb>1w5=y zKmv(|Glp^*`03_}uQloS>Ob*yMBkmH37rgAA7p<|EnK5w{c!OnA!BcemPZHBta|p&?4En-C59pzL1=qSJ3F=HeGdEHypwUDbfljxL8d)9?u8yI=)=vE%|1g# zPEAV%dl0E~53bn1Gva!XC#bb?XD+st%Q@O;{~vTiS~mTSZV+3oAB8Q|hlf1bt0Y0O zKV{p;KM*D@=>CQ<3I*S)bi-y>egs`*B?NOfWT9;8l8UazMt8zx*5ec>=ktZq(p;{m zp8k+D-9h+#EX^V&YE3MP0lJv@mTAUQF>7CMZUA3EjAgjtQKPs>w*zFIP$DKVoT6goJbJ?+}TihL{gviUes$<&s)HT+)_~%-Ap22j@ zZsn!DGSoKORxSR_N3$K4Fy42UG5TBV4&VMTwm39h&(-Jmm`)!>41aAYzQd#(U9)RQ zUWR?XeFkD&?yKzkrI_z_*xqzeS(@$)4~b7>iFD1KqEq)Mo>3bLUa_9~Y*vywpx%J2 zD&W;z6|0>+MfDjgrOMHR*I{krJil9Umpg-Su5$kpgkv%+!D!bIl*Uo`si6>(7Xvjtc1NhV2Rtn)*YRkk-V1)g@@`mM)Po zY%byeU81+oWstI~+ehX=)vJPy6YA4EQK62{3zVIu_S06**@QYb>Nau(&Zxc%tBqG7 zq(6B;2z+E_6E(Ephh*Ma<8}1ujdOPdp9!WY$hwdElwd?v3T70GJ7$<~#)~Ls2_1TN zFVUA<>%yq<tBV#qLH!B%7 z5Z19Xu33@bt1qN<5Rslx)#)~IKM1yXsb{@k8D{^st=K`X|HOKP@+%XacASG~v?o@U zy<~CMhoP4QR7+Qt`)fyw*tdh)w=c8|zT5cnZEc;Zz&>p84_!ps75S?!lKf?=GE_*~ z&P`LHK!UpA%$ipSejj&Sc9yxbgF^nfedbn37}&z)LN@h@HE=8Iu&W1QP{9#H^*shmq+h*wj_>SHr2U8gF5N0 zK#N-Venai6yWVzOC~-<2bEY7^Q}sx0hLmN;(9h`C+8+++5ixB&<>E^7`hoZD{k#?x zLi)|IXM>!#(LWn@IBUWv<#^8Vk(A7$v5r7>0{@(v=?$YOM*0uH7xY)v(8buot5F$KLQd(1KL!UL*qT)Eb{neSw{RuhAw$(51Enp`S5?9Ob zJgxMY&ER^K)5>_ioK2Zt{{BHGU#92h9h$DprVc&p+ZIJlyj%MCY{oW6!H3%l@6ju{ zM>N)5S)@!I5gr;*I-^+OJQsSZP%K?i=%&qOJkcw?ZlO+aM zIc<8?Oi@-{wX1%$>+6(np%;JN@A@zAjg{Oo&QK4~`fz#r{BwOt3@(z443wfHfM_A@W(|u0=?Vg{dB1gTCFqec`ynaeAcCAfT z@YH(zD(9VJ;>E`ze^)4QSARD|k+`ixRK-BUlL|poHMLJ#;jB(Tyb(Tb_MDy@DmE5YU15fRDh9t>Vrb{r5#J+M~*%6etajG(fHhB9nB$k zr4xrr4G~-($J;Urr@RMfXtfLMAB2^1zA#q5dHl)lgHES*raoL1dlpKy!_4X)b9!-d zotG_FVE(%|J9!Pmkl0{e|W`0?%FPv zk|`HIYHV!jVlfrrC1V_a!{Po8I!pDP7_W8D(pj#e^GM$8hC(bkc-lbTXbn!P>Esp4z#I1{&TiS?xMxT%6(d=XnlR{NXxNkT46FLevz z9$!api*TAMd+d~?kZ}BAzY7HWemRlHSngH4)@+Pq|LnOsa~=Aow1;<&+Cb1Q{m1UV#eMZ(U*GvzHnimrz4W)s z0OT*2Q$=6Phl-o7&kJ&pa*Zlm@RXI#Ol{FeCjr_7PHa-qbo4IYqk--&8f&)*hjO_6 z7_w@PIsEoH!+ z4z{;kCw}xBneLDMYNmGU)#=AgImSFadasX^rO>+19tvsQ+r9jaYL3ko@(1<(Eo8@S zT|{jniMw#4???h|`W;DZgM=P_XbCUoplN=z?HLkXrffaA4WZ0(ZU<5#iq_tP{zVnX zZ8XI+B@5dhxcOUjibNu}3^^5phbOlq=$cJ-Xzn?EBkPN#)Kd2T&VZIW2{_M=ZN^8e zdDCm}sy-anN_FJr`E;*I!k^(eCr_n*AJj!$Sbgp?%TcYT`lkA)!%G*2Pnb&!O1wJp z$@s?0%${>}^yBq!86x{3mmD5lcdsTWyRzSZqrZYMz0f5dF>y$S4eU2m zj_+HOr<{K9E;+aG(#A0@;Y`kLOb=`gjX&?*F1&20)}>l8VgZvoaOC_F+~Rz3F$h5>e8k&)&FE#V4@S`?%NBUZ2*R1`|WtDbsjl+)|J8A{+7j{9Q-xmV>%^ zhNFB67R3{nbBn*yPaU{)Z453Gvv0>3E9TAfBQqLd_p50O)A~`k2 z-P!FtAFMwL8`gz0IMNS1>h;@=I%n{WmD8i7=|uVasZ(@}XZ;hjh|i|P!Udiw=Y0^l z1TmP9VSz~sD&ke@Aw5L~B9zis!&Xag?}HvNpcd<;yXt*rlc7iAB!PR3rtFBf~ z_L(}(AB4sZn}|A%+o$A9`Hg+Z^z25IrDhf#d1olQaej7gfr{$9x$E!BL;o$jMPasL z85x6ziNJW9t#%yv6uW%RP$tkT@y^CPg|jbJ{Baq-v+PQdqX~W5b~iLDn&Xc;2_v-D z_Y*dpJoFl;6D(W@-%`F$=-y|4g-t1_VW{Ljy`NQTwoFjjBvZe!@sk{Z**IZmiV8}3 zuPF#8lc}QRRav3yQV%9FDDK`&>F7x@tjQE+N$BugzDsp9Es$eE1wym>UW=xdc@W1T zY!qlxA$a%&*Ab>5C7&BUm77O6;46M=mXqc7h5%xZjThGDYFs7Q`o)2rW&LF?=I z&JqsUsy~SNx6m3XxfSK9Bx$8Sh0-XGoA1z)uc^qIpKPD{rdKI{3<)>UOrfoCVM?Z! z)uMhV@-4Qxk?+ZJrDf)eu(!!B`~7!gEAFr@TcteCD^qFdTGi|qy`(97MgX-4;W0Wx z$6m-iE_K6_QId7VQfCfB7nh=TD52$!!O$Hg={oB$VbNCmx)*PS1wNeJKJC0i&V76k z%T=j3T4mrBavOdnwFqgZGAQMJWki{8@JmDRMd+jC*#JaEB&7FvDX)p`$KU>vc&2qY`q47qw_nQ&z5=)ak zDq);08fR`~TooCT>RU0L+U+>uzptThx$iS!YvRXhT-F@3GpAODBU>|Dfr= zT>>BxTbBS}m)sQ${I#19>>hb({?{YNPxo!$P$^VwgNH{sY;}@_@ndRMNSzL=VDDw) zxrEtIlG|&T#dl?T8fP*3869FOR&KYsfB7Q?z9QojDxK*;dycB{E`F+uoVQxxnpBre z^(KnbuHHYQg0i@mvl$M%XG? znlalx!OhR2aRLvN2OL9l#8XCIJ3fMlc7#4Q)2m-hOO|Fo>gN<)QX?Vn+H7K+ZnV@9 zBYgdN+r|m$kuN({jvKQ7K|z1J;6P%xe)up+)Ny+XrwL!e?_fP^yME?Wma+Rnz=o@X z$Bi1z#AS|8@Ilc?x?=vqxFk!Z4y&5^yNTAQvB2c0s`OH0ZLLmAG2_&xQ#}`wn2}nK z>v`E{o+NG$&$m?KNxk)WR)|$4Eu^ZYw_QJk?%6?{{?L~XqJ)%O)hjAmrqi4%_uU}5 zQ6UhW2ybfasfe}*YR_lYmvWlk413%h(owf+O*p+*Rzp>^sjqlKn!m4QJFcV6rMtNaF4O3zdZiV_EkKS zWn7V!peW=auiODyq4S+`msvh*1tz7g;&+HB-zqKNF@IJiW1;v=UC4On86zgm&g6Ec zW0LeS-R2@wniki@0&mZqI<>LQCiZl|AA09+*B%JmFEAUnX-~5-#!8 zPW{!HLX!(07`gi;`{k=6Zf;XveVnuYI{MTNp37~I+U_2Z3O${F=ioAB_wAO2ut~Kx zHyopRcoQo%f37`G{L8uL=_Pqg{xJSUwJ9zK=4!X9OaT!Xd+x{Goqe+`T-{S#E}Tk# zGRnVQU|_Ts&2V!F!1_{a?%T9dGv8lb3FA3X5G?zkh6e& zyKmNUP3W3n&%sMDsJy^JW534?Vg!acFb32(&&wvM)t8+9BgZ^o;rP)`y59$iD#3xQ;%ss>U zf84_mSTBLt7YYqIiPBj)16#oZv{M%I(;+K6_odhjAO=WSTXL^T zRzFBy>JKvi?Meo})g|kkKSWRZ)b6W0L~9J$e%3SlhEc%AePupZ)~V-ME-$4zZtnNn zM$RW|lt!FP#&;f|RvC)uW#@Z+I)&T9imy8C;r8oqK08mS;Vaz*?3`76<3-<}4{~T* zpwRQ>j`*EV%-=2=keFZM6%2l?cvl`#bh*_!MC0=}YEzBdfYXZA(a5trT4GyR)ye-w zy)O|~?fJEBmatE4Mr&%#hB1aNKT+U8$o+a3Dy@OEu_VX0L`tKer-Q4XU7zrHBuSjS zV!0Ey3wIQ+8ua?g!_U;(Ir+oV{Lj4>dxlR5gkKO?{m-BzV+NToN)Bx%}+C0CAUsIIxmYEDY!w<$6FC0%6a+e@p0a1xl^qS=%G{sMXQPN6)~%) zMa?!&OUa>PycawaI{9DuTsLkS30dXM>E-{JbF#@sX!_Bf&Xu6N7jgp(t|OdrzcYu} zGWF)V4%+??I%ZC`L`N?uz@g-3jl8XiGB*mfQ5m1=5C&A`~9nr4B75}1XKO& zCrQRYiiIcZkKE7yp;aIf(azNrbPXwP-N6fJ5&}D{zNr!n=(C^t>nAHCll{M$m=3{@ zY#mSp3JqjZB6xhKiv!>7U>e|*f|HGcn}drTsda@-rb%551pOh`57=V?#lk@x|Nno2 z{J+vbf!;yGkx(=i4wXbnLa`_;1P|s~Njw~i1jh-$!2)u^03J!tN%c|xTydoO|CJy= zo}*AW@E(p#gG7gvFrwjBo>c`;_!H=B(PW%9s@yxk&Huw z2EjLE1RRM54?txQS%<};$X6Vg_pxBw!eT)yXcUlHS3Pq`_dpbu*7aZmNsaK1nU4_Q~BwQXw1;A*q&BjsaJ)TF8ujXOL`bB=OLo z0D&Np02z`Il0D2zil4KPiLB3x}RJ>HwuzrY)ODq@;xvNl5u=bU|s~w;DG)?m;}iN z{*>_F?Sf|CC5JvT1kVDIYk#mYrav%aAp$>X*vrGqwyP4Ak-M^V5yB;z=16&zFQRH?>egzC^G6$Q}E-?R1 z9)Rxx_DjwaprB*OIXlpon>hzyCYw1YC|Hz}pSnW9R10zt;9x-ak;^=wK#}B}7Zm+n zK2I=_ZI+ST9vG6FH$;;EBv(s97?CMB%=cRq@kr^H`Q^X{F3(Yw=$}e^4k6A zwi@YRgY~3Oy7`Zm`F3f6GcEzI5;`ihW7*!nE)iwB>_ue1a;IqT3Fwc4aTgaosYP3 zus;S^{jbr)&nEuATN7I*gFl^%{NG{|q=@ag8< zws~In-#G@ew71(u3G*FZ>MBoJayM7CGJ+LEXNWApm>=?qq8j3J;c7zmx&g_FFwP z0uG$X)_2helJotwjO1Illz|%n9DXfB;eVwEha-P$1CGQ2(6jYj1R6{B*d}xT_oyv9UyR$zwv^?{8k2d{;dr-5>J9BTiSr5-~b~3 zT86~_DhC{e`ArTuiiA{uc^3^Qp^~j_pwZxS=dWdWlIPr74+AGz`Y&ZDfV+P!!;yg0 zFZJ*w#J9B!OIlX{S_YKxTN&=RzJ%l8BviJQ9u5J3@2_QOu(SDVnIu@0|57H20L!vp z%Shn)*D^^G>LdOAV^?rI;&&b3NsFgn>q-7T-r&H9eyN9mqkkW7aLM270BleEKDI#7 zulykpSQ3uj!ZQMc`q>VMo&+ZsJ5Ta|PN3mt?+#W`n?TFZ-JLWOl0lb|Q-B?qP&RQ6 V!IMayVh|WKI2OjwucD_4`5%kEk)!|s literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-peak-MULTI.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_write_bw-peak-MULTI.pdf new file mode 100644 index 0000000000000000000000000000000000000000..45d042e714cd0c17970e241eca0061f0036532c7 GIT binary patch literal 22086 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

pq$G9$Co)7A+$~iF+Uz!U^(qOYtrH#XU^Af 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%0A6DB5l7K)5 zfDIL5O_ET=P6G`S{ouE~e%(pR`Yi{E0TNI<8qg?FdZHuz!~VC25Di7Vh|g%ilZc!E z*+9f+QXWyQ00S%<`_D!61dAOW=kYW(Bcwl&dL zfc*blL?7AqJ0P6$pW)%ZTM?v@9Sk%@P!=hJG*JK>eWZu&X#{vj zfF}@Xf&k(+Njcl|2mIGew>`-KZb{1fH4$tN{J?lcA}WAMht2>t@_-e$X{tb%w^Lex z3v8#f!3a`wzh))C?Mc;j!N6-xN*RCw8w07|lN9h`lIX-~4KNNVjRWktow5O3Wjh5- zhrgP&1p~t^shm9+Fd>PTBN$L7iRJ)C{%YwQFqm!AT!>RCDc21Qys)H{D;W8!4Nt&D zi8K%}TLIrLwsVOyCvX;&^gsYcsO^*w81<_eZ!j=Jk#he#Zvw9)iIG1TwcX&qV?B|> zKL=1@VBiHM*8Vr2$oF@?9BeysR}P^4o+kf^2!`0;z@!})h#dTPF<|=sHJkob>_1Hq z1^(5+IA zm&CpH4tEh|j0j*=5U>z}QAQ2ZLi+2sm~L5h z)pFmC4YoP0u(1ok{g2im|Nqtm(To1CPXJ+3q?hRbYJwOr_8*r}aPtCSJ@Ec(INA~y zLZsg_&?o+)!1ma-{UZ$jjxoUZ%YXez0r)Kdf}@+OBJoEP1QjLWP#Az9VG_V!7z`r< zg`a>zPY98IiNV&(2KaFSK^Gjs-Pw)c>}U;kx3vRX6IVa3wm=aQD`5Hg-x4r!lsHTj z>_8y6OF|(3Ruy;iuowEz5bNuKw*wJjBM88=zy1N}2L;T2cHn<##1$s-AK3L54Ti=5 z@b(WH3JD;jKWQicQ2a?l1HkAn8W9i>|NYwrfIor3dj}180D#AzGz1pV>>uUe(7$NF zx46ILLj%!Uf7FEm;P0>gqA-8)gQ2j%UiHp)VF0%Kn}#9cgdOt10ALBs<~wNs(EO7I zg=2}aiaW|d5x}ARzi4pcl=eqC1n?>OPa0sjzi1d>$^Az;Bn&{gf6`FEe!!nJ;v(e_ z8VdF|KNKMJU*&eOFA6L1mwagAH-SIe0KoZQvY-J6{Hq*sS@uU=0I2`P4+8|w{8bK( z{!8}~P$F6*{`<#Ip%MrpYW#ynT;2Ua!vfCx7Y#{-sXOapcWD=kC8FIOq=>Ud+ z5@GqycF_|5r4c-Ej?Q=w(l6bpx!SpbNkb{Hl+br`BaXl%SZCnq4?y5wpWAUB1k%t3 P$S(l}@$)O`D1-hFp>zQ$ literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-percentile_99.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-percentile_99.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1682c34ca91cc82ea12295e68554261c28b1d456 GIT binary patch literal 20365 zcmeHvc|29Y7kJrw*=4Kn5ZT}Uc=mnY$r8!FW#6(TOCb>tb|NVZ?XWY4GX3m^BbMBmT=AOBH`pT-JC^0OI?^Z9opaO=1BjKL5 zt}tn7IKnu{%K?s1vhlNV^K^nE^lh9ReBo$N!4NJh3v=+Whbl^}Yhb2l>*`?V2Nx&S z0S)~89DF?BIOrCJ(D(7QGji~QTL4tbssO!1pdTEe;SSI$u3nW^uNv?}aD+;rpPG@M zjh_P?yMn;T*~Z?*!wHUGL9goR;RnYM^MA-eApu}*0BSy-{$6lsC`v|fgt9|`i=Bg^ z8t4q%8T;6H_x$L90w7s;Njuv=L;%L+8F!~i{LOcZ20LlS+UpN6OTgOc3 zevNol7dOB?I6~D8ut3?t&eI;W)OPT2@^glxplKpD^!4*`uyKb4W>i_~B_wBdMbbt-Ofxlm(V|%#{&PWk_9g8LE1&Kvbvo*&Qm>!e zPRW$S-CAlHtkyj}r+A8Peon`Eie$Nea#z@~-XJtO>2>tiZ?}KCTuc5e!c>#LFw^5P zH~!_56x)wTRYZUke;!>zeZx)CGV3>Q)!HfzT{C4*m7X+|^#5*-eaS>_qewp|K6rRA z<^Dp`KBxG32BpRD<>O3V;(JwZ)HEXkOyzoidM|z%`N$eF^+jvUo2spVJ~gKCAVEVl zG~_>TJ#SU_4AnOv<2{$ynN!Rb<*kA?Arn5e z%Odmo^&2ytDJ&6u>7!ZOP}C*3xP+F28o7e=_C13!CJib(2^noK&!qIKj)lg)Rp4~k z$80&>y8w@JI8xPOvRz7rO<)+Mel7MCcVgQSlhj`CXujh1y(a<`-a2P$1ndpk(Iudo zU3HdUVY|!Mwr6q@JB}Z#F-y6C)o5-dh*EDm`SFZxvQ%<|_wG~06xEKDEZj~p48csd zkXBlW8ji^+R_0!#W&|6a;Rw>YH@namZYwbGwFKNj>K(ro`?#*`e5xZU|FL5>bL<5? zzw%V<&=OgQ{$smL_xy$|rBka+g|qk>`0F4X6%T&@M!yVBnAXKEXiXcE{d z+mJ@umRX-kVku7WQ=iKuTb6ZIJe`fE`ubFA4^O*Uk7lkP)dh)&mt!RHZk!;&s?g6n&+8~Dw{to+CAKcwnPpgJuncd8DTUJ!RP6Q#u@ATI zy2j(=s33dNzT4P?Wdx-o-I~hWh`hsa`OQrivjZ3QyF?khZLXFkiP(v%3A!MjY*RlP zbfG-9kwP$!>f7sGH%WheHpFyX;iqWzhK>7r?{qIyx_LDC<}C+geIpA)baX>AuEeF~ z6v^&%U4=82_N2yjIjA?dCw0fU&)h|g6_L@WpDR&v-_LwCt@L}+e3N-?gGM`&Vz+Q^ zS?zV6lc?RgswVG}ZkfM3nQV5%ihDV*{0YrIty{F()5R{yW(UoZo2DY)yl=zr(~k_k zmGC_-=(DYS8e3_k!!sB|y{(;u32k?VZJlG}+)&V^u(9xCdx|-FR3oW6xkoKNHsl?p z`f)&BPUMYbSh+4KSBM&AO;o4BP{vZ+H%-0DW7ZL~`59@`Z@4|GY6nanZfAR}?Uc_6 z*E%E-kmdEYF>`O^(BfIbpqu*u_qC+An!m6mo^?fw(mHgBmfps7{Wg+nj~4Iu9L_bm zsT^jfCwTDia!KXF5zUmrg|0r#Hz)6e(jy1&Z)cThQd5_Z^`FVQPYg&;(9ypEOf(xQ`ki=;`Q2xsc%a&Tp;S}o#OP1RXw$`^tvR~`G z{=vu+Ut5dG6aM`ErK<2V&sU1Ff#>f7IyeCx+C(~P$lpe54CFj(#tTQ5kMOWcZSE)1 z+v>{qb{D5>{tWn$s{%;o7Us6Qmee$zme>$5j%OziT=aj;zx z;zzxf7x4_P|Hhb3n#(&&$y|d6s8?;T_a#s_sk_b?OBKcLn{MMj_H4|v zfLHDO^}@tal?RnISS`~OELws$@3qmy6P{!e4c&#y5^nx1W65PR@2l?5>02LE?@GpE z%~Co(=LJ~r(9lgW*0@sj+Jf1zVxRl5e1r$txeJbCuE}7~`|d)_S5EeA{nDKVb=)(u>3JD(hO{}feW7}B@{p|OZXtkI6lV{zRI=BsV!U#GsTJ7Ze ztqzUD-0bca4?UC0{3EjNA2?)t=|+LZZuX3`9iIRl3>uy4nhTPB;gwho3sc&-j})5P zrG7XKFons)DdZ89DLMOHC-%$W{_BNWu;)s9KZw2-Ii%IrVy$CX3dz7e6;YkG@^{V! z)4G5gM`(_CrX>F9ptZ{W+P$iaZY&+_oL(A%)RVbJgqu^pzIQ+9>wX}m!7=lt@5S4t zuVQrm9hFCegcgS`5kL<2tzqf@tUAYx$3*cxIg!`;YE>5bd7l&MiaHD?IjxT@MkUDH zJr}ZPv0*l_QVAdl$Ssl6B>{!}5e;DshiAKZD0iMP(->>L^F6~l*h6aXWTEup*hu5~ z@=4E{f}Z96*seu!L3r#gda>CKy*bp4{jxJm7M-(IEgq7eWcG1rF&TviFzjvl{&ANE z-yy0BdC^f48HS2ymeFGRlochu?FL+mtbXK~X`d8ZTwaNOE(sJ3yzw;N%E5EsOWrfj zPHQUb-~&0zEta$jtm#x0^TuR5qsSx0X6Z#ZkX00RWDHle$of9eQ@={EWx1nTgfxSj zz3nLv$!EB=C!WFnHa#_~Qp>30bp7C6sx%5rlX3H+nGWdP%wGoUz>~%Z+3bCDZ*(ArH))?_bm@3B*PBHt-YM?^d!()qznz z(A~e})7p~nDEngYE*roey@I{kJZkCD!JI{;zgX*tPqEjVak3*{eGALOjR2I-yTGN@oHOWlyfZ5$XTJEm+a;mTm9&o!P<^axE9HJz)XWi9@U=Ga zhEui0J-H(-=1V`#f**a(lcLElamo*r)w`?5;jpkfoZ!l$cRWAFOg~kM?(VR_3v;zw zEjkD6JuK-xI$7C&(rVz4ycO5Br?nBSr88qsE2_^S>LM2FwF92cSA;(dx~Y4dWo(E!hK^(J zQrm?iahVq#n_OzGVTYP-y17j}8DV=zoOszvlzgH_2uYTM9sNOPX z%@A#lIGfIoN4&IL3O5H8AMqjG*&pfbIT`cWJ*O1T@oM4w^8_#Lf#tx(nc2j2^Cexg zvVLFIZ!y$^Q`bcJSnPi>ykps|7wlf~x)tl!Q(YrgeWLe;*U5$fk1ullVZWB<7Mak9 zqsyf9RS`EKzhl+tUG+eS#xP_xqs0l>HMa!4-VfN)ls59W^&>hss-8aXzb$JtXt-*t zuX-~ugyM?nFG>(c!bP!I3>=L_BH<_`8UrkS;ClSF!FA4RoFPR~sm#fev&Pmq4}D8b zJ@8?vXX)K-0pZK+a)D$!cjzs|CuxMV%Sd1JJ6qX)B!!pCmnPl7nsZ;lt7M-_=HBZ2 zq>`1|e0mq{&+q8fW~_fP9nIWJgFr3uOxLhl^Hy(z9qN*|X_wKAcFW7Izh_r?JzQEh zcb>aAR2{yZ?;_h7+Jl-!zS^VD^EEyhj_i)Jt`fdvpI^2>#g^L5`Rv{h)o5Ka^NDYk zYCp`;fLLvG_tG_p@dffT&<5T`m}xX?+RSrzHQJrZws!k zcl;n%OxeNL&d0^e&(jBvT6F+*ZQOy+Vq~mgrsm+`;A7(^YUtqP?`GozLqIKbZ2Wv& zh)$Il5(#-U;O}=1_)v;Az79kuZ)+5$F7|%TzHrp4JNSD(Ax{efoGfP>AIRkdHCEiL z)oES9sOsY5>jzbVBUgy|Z<7o|sCWSX3-Uc7XHwb4(a`~N9D#R7boN$!yWe#n2U6Q+ z6+IeBK^%j;Oi?VTL*&SRBLXne&%xaUFbQ%AoqXXKGz?*;?%?9&><0l? zh}bj}M6Ca18gy&|iEIQOC6WMmX5;k-p$72#UF;M*oZK8B{0b|?qL3R01aTi4kOdr# zL;l}Lu>TW07z_rEMM}VN-~j~*CXN+{i;GLZQ4&ZvR0bue3@?Er(hA)Z`vY}W+x(|1 zY^@v(>Ou*^v6iq{ES!Kw!Nt*NI36!fOvF4`oNzci5f0rGX%NT2*2*L#2*1m4I6&)a zd#DW_w1w`WL;(2L@_5t=9*72j4~E4Ph%`gEAvz#B*Iyy{X4;{9s6E7+wK8xej*&w8$2|0Jdr9q zfUm)zD;C^CQ;LD$t7SwSgq41vIz%{Xg;nC9@3pi>!`d{hzd{2giUpWbXj<125g(Ys z)$8vmUf*^tkH><(R>fiS6=EnvC!m4Ic8Hes3F>?O{aPNH;`M2bU#r*OB2T=>uZY&B zI=^QZf*)E_zr-bXb)EaOIR`e({%wCtTzsQmeOXBpj-)>EzTc>q>eLi(Kc&INUlwlr zcrI1mS(rdli{u$FNl-Rv=zM#kV=0wXQ{B&c7!r9r$sy8fZ1)x$U?jT-*I0d9CY4oi zgfgBtH9KO7>QlCuAv5>99`mau*5n5ZC8HJFZ$+^eZb8}xL*c(|Y9fi6^0zgma;B02 z(54iUV@;NRCFPh;-q$7f@cGXa{o57Mc(;0)IICzSsw=c2;>pw*Dz$O6Rd+A_=$E{y zLA9UW$nVbWGF|+4shRi15yP4-CegHv1GI$$3?Ew%uO_n5^;CP%)r;Hn-2{rZp!i?6 zVbS1GUT^>5^j~<_0EsAoVUySm9$pX5cr!4&Ort_i3g}#w;>JY;4cw*vEgB){E9& znsT+*s#MPi_z>b7dqJBbUEjCz?rH13Pm@A=lQp=TJT?+aZT=5pv!Y1H?!90!cJ?p@!n zwR~qPzM0E4&S>}Fya9{rzX=+!bk?&5gD=xZhF9-W65F;rmE`jlh}XY)_-_&nt?%nG z;|v?!`B2oAl`vdU_)PiuMHO9*<*uYltk&DSzuyozf8H%G?f9qUi8h<*!{;qd$NUtD zp@Yw!?PdJpqj;J5&DG$2!KY0Ua0Bu5hgcm0M^gj$^Nuns!YrcCc~MN1e*Ub$f?{{v zW1bLeHT<;Tf@}HV@mt(&CN|NRuBv{}E>+j~$;CI-%u|ohHNAEHe7m8x5lNM3eSl^w zBI#pK5kuUsc=DrtQEUlV>h5bVN*Rw^p$30672jc0j(fD@y}S(j_tq~k72NwM_M0`x*37{pI~S4t=XInI%&&@MF7M`gBXqkpKR#EF z*N>mq-T&2;Ds#mRp}xo8dQI6=L+wg>D-Bp4vgN$oev({Q^$BH}^z&ZHPcX;Wue_wj zX{pm3yPvWo8IN&>-X<(o#=UtP)_ugy1X0K`-aW1CrXKm>3ry-Bw?axGRr@4cvpn0( z&L-EgU1B~BFlAmR=I^s_ik|KmYCl__wEdc{MtlGX+<4fbh?195raalQc=)T*m2P3Q z?`@Ou?geF*`qXk#lf8PzSz1DEGg6f3i^pOvPz@>{Kd+E*EW%HE^uv1^89j1Vz2Ug! zxH@LD&Ot*CVNK3AwTfzf848KY#YyiOe{}?MMGET=vW+nq718n1neP$QO{L}-%FAoz z>1M()=rU~!_;BErlH5H3`D?qbPaRENT=+>^ceOBli`j)uP<`qWiq``OkGm!QbLuY{eB+X9BC_Sh!v#5~rft@brXYn{O;JWLARjmmdd zoexRsT38}?_cQ3(f=$rN$A4iHMq-mPFjPn;a-blF-%jDfkaRxf{6tb_ z)>wzXDv57O%_QF_hJp4IA%e+~eqeV6-|60{nI1aVCgmj)rwdJ-X)!y)gTn%HQQ+Jj(du zj8j9_WZL`s9+DUezoN2du^A-J`yY_xmeMMDo~(PCHM>1+NbvoT>fYd;PS<_L1(M49 zaUsqZZ|q_?b@8m!l}o|12hD9A9-U_Ky_;_h)`&+qe`YmSh zUoB6(#0FW%+{5Z4^^xMHEjTRR7>P$3AjL8I>ZsvJlQmqK?QILW1$*{Zj-d_a z_)jAW!!eqkUYP4c0!^*8ZfB_)2nPi8dOX?B3K{WzcsKco{<2wWRkfwqTa6m}4mG8C z!Jc=!)aJSO(&Y|xi+{aU$tjgqUs3!l_4)NZGy=YJW0lScLq|(WAIj>7%1drB=6|(M z(ZI`Czu3qaXn823sCqu`dL(~CetzG_px3u@<_0>OZXSA1kHq`&@t1sc*eS!ramI5` zWB^N;>IC^WWtD5J)7Z|ZV1p#0JIo?#Ca&4+4Xfyo-m@N?+J}gtsOzUPieN=E>^T|k z-NrsbW2N&?N%YQ_sd$h(N~9T87K_f z$nHP3l(@)w=dft;;pibw1oH#*O9aWrb#z6j|?MLGovL~xz=gP+5Ez&$I!8LceVdfz{j3^OcC5d#@E4zNNBC6Q9O<>o4@{P#Bzie$|Ld_wj3uzF3>D zJf^eS!ELl==qbuu=E(4%&Lc6S1J5zRMxJT+a@FU^=R^-4e&YY^P8fsnsb@Nx?>&`{ zNR=6)xV)@eGIGcL`>A$n=Q!SrD&u@3G-cs@!MxpULt`5Hn&h=IFJMyC%VN17A&(dKt3H(>voS%wS zK6VRpq{;k`D~JqH8+4)Dwxiln~nR6UkVz zEz*{=58?IYYj)11xx>s3Yzg~lU&@?2l>keqt<}=pu6@Dh{LC!%V}G^ki5m~HEaYzP zU?~}Q3#7oum(3QF+Pq>&;Hx$3YooSQr^NX#`IJp^6`n!+Z83s>^#M>w{KgS9Jp~&C zfcYW0^E)rd3#!baF8eJPz+VRs-jJ6o5TtUieinIv%|!gO<Gc^mDcE#o5evHyv2fX;BPgm9RP(mClX&Z7hk_5A{LaX!5o@i`|MX?Erj!QWT@98v z#=A@v>W-}k=Cd+VyruNsHZ^7i9?u>~zcu@7yTYIvev9G%s}YI85;n{jF8P7?J`}ae zuQMb&ZpPhz5$JeC)P3oTY!RQ`C%bxzrR|-%<|RsxI&O4auO3d6t$S{?MDy10M;Nxr z^PCpeuuRkM9h?w$^4wm4a4~rLT=Dk!MrzyO{{ZRzMHnA&GTS-_3)m2OVLvph7(Ntf~RXD-PK zN!Abg++g^T`LjI6a_xy)lcy#6CQm&z*P(4V|KN_59gJ3@aK^UN>>=|v|EQg6^9h+p z9ZJuJ8ad>q*d(#R+`8$6>}JK8B5RoR?jNm8S1hLyo~-TunPpX8Zmalg-cGu+xlQne zYkzvmd-$o_e1M8W!o_llrqaHamw9Jh0lSvJ3s??uksO&q${4TtwBSQL+5x?22$c6`spn;(!erTcD} z-1B|jTeFsCi&xvJ7j(-onpmf5n z(~tU!e_vNKA}sjmhb{R3ul6Szv(Xrq0j2{PimGyvc|kt^36?KQ$1P-8eRIGg9UHAQ%m{r;11)NG_9$q z@-V#HumuOovbQsXvrI#`ESHSq>Q%qDGKem_#*~{L?X1JkMvrPIjQmn)UcM8Y*oF9d zcW@6)GQC8KXw18i#r(3P zW;SMD=7$BGuRf;ia{V5rKa3dEMbbIb_CI+ONP{_L@QanxtEAz`{gLrw)C{pfNm_pO z<02>c>y@v661oU87?oi`NbFZ6sMNr^3k`&}OJ9pxEW6DN-(x@_@@8k=qgs|5TLeW1VPtr72D-~$6=g|CW@BVWCijh?~P_`D=J8B>rOR%lqtxP)aEl^L~3;ER6hL-JQKgP-au=5h#`fE-BJ{(vwiW96UU>HV zUr!(Z(m7}=qp&T;DTCr>pj1h)?C0DQexIXBEVHF)uaX8RspSn{ecsJIaUnjI{!zb; zp?I5L*WsG{E1qL|1EuF~Ua3d@L<&T-&r#%H5dEBmT;wsvqLw<(Uo*r}eo%%^4hD_|)OdIXN2t-SY9W zs6u?;7W4Ga<}YsJ+Moi=m}(>yco~uqUX(Bt^mberybDnXeN~-CdqVydO*G3wsE&5A zI9;&>%>d7l@R17vk!}|(13A8n6-P{P4mzLwRCBvNYuD+J+Va!mH;!Z*zhO9i#<(WS z@kHiW0OMIP?vsgcQ*NHYo2r~oRV<&lIFVe}=oizt6+=ZfPR^y9b=*Ak1 z3gy@}efvDDM-`X9kF}2f z(yNp|j7A>NOx;=G#+X7Ot3~lZ=vRDW-M;GiO3TcbQN1Z{yMt)(6?fR?52Zf4Uar#A zxv1GEd{I+2k{>e*<1vb)X3ypRD4B1`Ai=s|sWXM6PDoXgN@}`e@cxdH^i$g?LE&b{ zr!RX2`9H;yO}LWFd47C{=c-g3erVtuejAyUR){uLc_-RX?G1vA?)XED#<1n9*bu|%> zsJ+~E^zh^5i{4?XTX6bcO?vPWdp)Bucr>)}QbNW=0UL3ofC)xhs#4^@a#UdtEa50P zFXc<*wss^;#Ld|`&icY0Gx_WE)R-dMEEg&kv!LDEbg!|z--4KbHP+D}sAN4g;KhzR zScQHT!0`0)(tNLntdI9Bi(^tr+1{BA@3q%S5hQ$2JA~G0I~3+WZ#cjK#{Wc6Tp*-bSd%_=-tqyw{qoYP^Gw^aAItW~3(RMH9Wz;`7(;9#p|t zoSRvoZ@tK*t*EPZjq3Z&7gR^j=86v{57?w7lsz#CRg0@Rx&P-7TLnuaj^r!SJQgd? ze^0sJIU-v$b?CM86PR#Y#4}U9n%VOy((G1&E^#G~#N^!@4;ZH#&9$8t%zM$Yd_;Qa z8>Nc1A^R2#`d4!vMcBAZ>m;FAz~irU^hzYJbwu&8%isMqCm)-%l#S6}la83txqmv2 zJaLq}TAQ;f=;N|*V|Yd(Y5CU+#u@XcTE)pFmr{9ktcweGM#tUZyYRU)>DtASb7Hkm zsPA?kNF15B4ixFHyC5Sm?x&hVhjzH{dH|!dUy!k=|10ysz;V+?uSAP|&u>Husvi7s zo)B%%T|igi%bNJWL}vG_(8+pQs{3^r*Q(p`1207{H0PU1Wrh_pSa_cGyE|DbGa$#H z`DqJ2{Hwu?0kIG31w|%V3o=omEjlq|_{`~vZ`!S|zc2O3N~*AKCl^dp*PL*vUbx4q z&}WnBayablDR()=Nt-K;bqk629#jV1FGSuck(xO6L#D9J_P&F8hiKs8V%;R&bDCn~ z8j>MB)QtqUuI+UG1cSSLmOpb0+e5_;Bwv(zcb6S~aoc6_N7y^hMPIbOIdG-DQ~L2^ z#C-?q1QVsFK5b;ojgHw>It_6<{FIFsWxoxp`*Ec1l{1j+D-zIRJN~k#$MvgY_|4me zf^m#ASAD+62iEjg)&utKiHw#Bg@^VF!yfR;?U5BY(;;_>Wm+pFIc` z>^}MTSe1;K;>f4rA3GwA7&SXmS{V;Z(4Oux7aG^JxG55Hd+OM+WfHsiHm z5J*t$akcfl?ryu?F|_3}w)(>%8*lS#1<7oe;en^~u8t%kU zGt$|8>jdjyh5?fW#e}gbo8V%UZ}PLAJ*H+}Qu+!zUAa<^CF~kZ#0Y8h(tkPTz;x}) zd0L}}A!hapj+WNPd}jw@GZlRlkNLy9&gvKu6gZDP9X08r_~d%d??;kj!dOYjU88ie zUkxXwZ649poH};4cftH^6Z%syOQEM;Z*5(5!TJ1@u=;mHKb57sIRbnfMf^C6N5vD~ zcP?#P(B(y_O0zF?ap(%NB%YnXnfpZbgnj+=)l~VrXh|OdGloXIpi7$UwMhSE+8pw0 ziS$EwXyO+0@~@5o2D?$K$QU*j?gekI^_bn>ZSU*~klFLFJ!kod`UFo*g!79WWmn1F zJ1eK`B3$cq>$pO`s18IuPE@f;ufAs!^2F3G=KV|{nu+p}uhsMXQ+M{)?@v{b^&Ac; z!3nG6d{HcJ`@&R^D5Q8``v5bHm1CFH1shM|DTsH`;O4_r-CBD(+b-9er~z z*CZaq6=&&Ep5gPEh29*R^S>k%&t=%4AAR+;*&k%zKb>XcGg2@2_Iof} z!gbFI$7KUuxq_2g_k%)CotJg2{xKD8L`PcKxSg9);LSlLS4r8|r+JLRh9rcBRTwT} z{C6L&6nbiK?dGY4NSQ+)^(G~v`lH$?6B-q5j_M02aiG$Z9(H()-VH^}UhH1#Q${%U zwiG+b^&MF{soZ`*r&ZiZIL-$z%U&|O=$5Xj24(+RodO()y@8GI(G*NiuOsG@K z%r?EF+$Xo7^Iy$xG;UKIkHOm3$ikCtogR;!;s`gEAEz0&T#X5j*U`9cX;osM`>=!W zn|jY#M3v8vmPs3CwJ%!ZKkXP!Q{Onte=q!QjT@;}|M?He&b@xyjY6NlTby>U=J84v z^UkuQ6yG6kMNkcWo%LXvLOc7$pfukL-`VcLWBlQnyKBCed?X9A5>R<{I`~x@BaXQ* zegaF@;gO?|b9m(Hna908B!fv-p9{Vow2jC{ecKkhOJ}gsSs2@${zcokxS;0cr>Fay zk=UGPQzxHkb-7VWYJ101jbBu-&xv8Tq+n#@IiV}$%7V_0!qCi__C~qVRmM!IOg=8J zy3MNa)hr#fP)7du@V)H@NfYQ@BkAy^Q#1+C*cTn5b_E~=l~wWK^!SU9}WWI zz;R##3Wl)tv9UYi;OFMx=m#eN=<2->F~FJtTG_w}AV%5_1ht|-58whSIe`lZ-gW^O zK&2ZT0ge)Y8S(^yu2?t%(B=zh1vj8D05Akl5Dc;7uZVHje~K6<%EVgy!S9H1h`k#k z#n7`=Jyo@dxOdN zFA26*h5_;oB?!k_!a>go6eLXy=>>+HI35Qi6GVLjM&bz|tQp9h1dv<|0SChZ!Gj{& z@!%ynIDUc!1)wrGv4R%|!PMX?4%7lMBpt;2N`QkZ5K>SP#Cd}VYdjbpo2MlR#=7}={n&MC>7)W3UE3@_+)k=m)AQ%7?l?^ZuiGl_VIwleh z5%VVznYBg-5djvk9g10psD}jMH+rZR1cW9EO3*zXND_n%&_;}>CYC{L1qcXW*JCX~ zlCU|hd+i={0A?QW50VOyV5?V1DmEkuB$)VBp@0NpLjr^m?}1=I!m*lQM7aO~@pusX zf&((JRU)j)1tb&e6Hz80xmZc7vVa9_1v9lNt<3d`TtKq1mLR!Ukvs4eh2P7=dJlYM zQ71-^8~)Y`#JFv63+V(PRYd(nR0lxZi8n-*0oELF1C+yxf`Kdp&<0W!m{qN}rf`57 zB9=kw1%&ypB7NQ0TB(P ztpF2O!1{0?)5PXRa4;vt+=}wTtm<4FICixwJ4h)KQGicktaj=IX-8r!7dUvuO3b+f zxm(G(fhS=l=Lw{IB?rF8LF@TU*cwSi>Ec~E9i5|r*V4!E{V8$_MdsY9a(ij- zoCsl2;lcFm zr=JdJVObLiB~O3g4T0xh%f%i#Zc6;XksswhFIz}epQHBe$WF_Z}0+0V~Q5`p;BRLs-INpRir8|dTU2m=-m8U`%g)gQ2n za6pGT!hge{gS^lW?y(9(Nk~Atbt6n13rv*FFdU?BH`T*K+ITYzQoEaBzz^IA19!kA z*$l%FHseDg(ZK23R1bp&w)aLDN?aV+=bK;>7~nTL|z-v~qD2*3y43^IifCO!Lk4@Q{%S{r=#SAOO>Q6O4euZ{|Icfccvi0^~DnZVL$9 z1Opx*q-CJr?|#AN1!VGVf{FhnYv8;tWK3?Xhr;|VoGyHoTSQKP3Z^VbifxV&4FmcH6-dGO@0{=I|z>(f{ z`22iqT-+Rdh@Z{V@No15-rb5tXz1w)t=>e_*~ldr>_)AIf!g@^5tl_20g1)I`1n-x HRAK)E8kRfn literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-percentile_99_9.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-percentile_99_9.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6cd3abb3f81694cc7743352566994578487a5c32 GIT binary patch literal 20377 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 literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-s_stddev.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-s_stddev.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2501d5b45ae4b7fef94e0894c9e4fc70f9fd963f GIT binary patch literal 20122 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�GW(rYr0Vt*L#?r*M+9H)v$mC!;=|u46;9}~ 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 literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-t_avg.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-t_avg.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c18317485b5937035af228404e161153c48cd8bc GIT binary patch literal 19994 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 literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-t_max.pdf b/usr/benchmarks/ib/evaluation/final2/plot_ib_write_lat-t_max.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ca1951ad59241c99802f6d41da74af6a53569e0c GIT binary patch literal 20102 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 FKLGSggyR4J literal 0 HcmV?d00001 diff --git a/usr/benchmarks/ib/evaluation/parse_results.py b/usr/benchmarks/ib/evaluation/parse_results.py index 4d782bb0e..f4d4cb92b 100644 --- a/usr/benchmarks/ib/evaluation/parse_results.py +++ b/usr/benchmarks/ib/evaluation/parse_results.py @@ -9,8 +9,9 @@ from matplotlib import pyplot as plt from config import BENCHMARKS, TIMESTAMP, OPTIONS matplotlib.rcParams['font.family'] = 'serif' +matplotlib.rcParams['font.size'] = 15 matplotlib.rcParams['mathtext.default'] = 'regular' -matplotlib.rcParams['xtick.major.pad'] = '8' # TODO: do this separately +matplotlib.rcParams['xtick.major.pad'] = '12' # TODO: do this separately # matplotlib.rcParams['font.sans-serif'] = ['Tahoma'] # matplotlib.rcParams['figure.figsize'] = 30, 10 @@ -112,7 +113,7 @@ def plot_results(results, directory): for bm in BENCHMARKS: for metric in (bw_metrics[2:] if 'bw' in bm else lat_metrics[2:]): - file_name = bm + '-' + metric + ('-MULTI' if len(num_wrs_list) > 1 else '') + '.pdf' + file_name = 'plot_' + bm + '-' + metric + ('-MULTI' if len(num_wrs_list) > 1 else '') + '.pdf' file_path = os.path.join(directory, file_name) fig, ax = plt.subplots(figsize=(10, 5)) @@ -125,18 +126,21 @@ def plot_results(results, directory): # Axis ticks and scale (x: log2 / y: log2 for latency) ax.set_xscale('log', basex=2) - ax.set_xticks(np.power(2, range( - 1, len(results['native'][bm][num_wrs_list[0]]['num_bytes']) + 1))) + num_data_points = len(results['hermit'][bm][num_wrs_list[0]]['num_bytes']) + ax.set_xticks(np.power(2, range(1, num_data_points + 1))) if 'lat' in bm: + ax.set_ylim(bottom = 0.5, top = 256) + # y_ticks = np.power(2, range(-1, 8)) + # ax.set_yticks(y_ticks, [(str(int(tick)) if tick >= 1 else str(tick)) for tick in y_ticks]) ax.set_yscale('log', basey=2) ax.get_yaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter()) # Plot, save and then clear figure for num_wrs in num_wrs_list: - label_end = ' (' + num_wrs + ' work request' + \ + label_end = ' (' + num_wrs + ' WR' + \ (')' if num_wrs is '1' else 's)') if len(num_wrs_list) > 1 else "" - ax.plot(results['native'][bm][num_wrs]['num_bytes'], - results['native'][bm][num_wrs][metric], + ax.plot(results['native'][bm][num_wrs]['num_bytes'][:20], + results['native'][bm][num_wrs][metric][:20], 'o-', color = line_color['native'][num_wrs], label = 'Native' + label_end, linewidth = 2, markersize = 6) label = 'HermitCore (' + num_wrs + ' work requests)' @@ -145,7 +149,7 @@ def plot_results(results, directory): 'o-', color = line_color['hermit'][num_wrs], label = 'HermitCore' + label_end, linewidth = 2, markersize = 6) - plt.legend(fontsize = 10, ncol = 3, loc = 'lower right', + plt.legend(fontsize = 12, ncol = 3, loc = 'lower right', bbox_to_anchor = [1, 1.05]) plt.savefig(file_path, bbox_inches = 'tight') diff --git a/usr/tests/CMakeLists.txt b/usr/tests/CMakeLists.txt index dabc786c9..35aefb392 100644 --- a/usr/tests/CMakeLists.txt +++ b/usr/tests/CMakeLists.txt @@ -10,10 +10,8 @@ add_executable(hello++ hello++.cpp) add_executable(hellof hellof.f90) add_executable(pi pi.go) -add_executable(ib-test ib-test.c) #add_executable(ib-pingpong ib/pingpong.c ib/pingpong.h ib/pingpong-ud.c) -add_executable(ib-pingpong ib/pingpong.c ib/pingpong-ud.c) -#target_link_libraries(ib-test ibverbs) +add_executable(ib-rc-pingpong ib/pingpong.c ib/rc_pingpong.c) add_executable(test-malloc test-malloc.c) add_executable(test-malloc-mt test-malloc-mt.c) diff --git a/usr/tests/ib-test.c b/usr/tests/ib-test.c deleted file mode 100644 index 9d9e83033..000000000 --- a/usr/tests/ib-test.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2017, Annika Wierichs, RWTH Aachen University - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include - -#include // Geht per cmake copy workaround - - -int main(int argc, char** argv) -{ - int i, random; - int num_devices; - - printf("\t\tib-test.c: before get dev list.\n"); - struct ibv_device ** dev_list = ibv_get_device_list(&num_devices); - printf("\t\tib-test.c: after get device list -- ib-test.c: num devices: %d \n", num_devices); - printf("\t\tib-test.c: dev_list ptr: %p\n", dev_list); - /* printf("after get device list -- ib-test.c: ptr 1: %p\n", dev_list[0]); */ - /* printf("after get device list -- ib-test.c: ptr 2: %p\n", dev_list[1]); */ - /* printf("\t\tafter get device list -- ib-test.c: name 1: %s\n", dev_list[0]->name); */ - /* printf("\t\tafter get device list -- ib-test.c: name 2: %s\n", dev_list[1]->name); */ - - printf("\t\tib-test.c: before get device name loop.\n"); - for (int i=0; i < num_devices; i++) { - const char* dev_name = ibv_get_device_name(dev_list[i]); - printf("\t\tib-test.c: after get device name -- Device name %d: %s\n", i, dev_name); - } - - printf("\t\tib-test.c: before open_device\n"); - struct ibv_context * context = ibv_open_device(dev_list[0]); - printf("\t\tib-test.c: after open device\n"); - - return 0; -} - diff --git a/usr/tests/ib/pingpong-ud.c b/usr/tests/ib/pingpong-ud.c deleted file mode 100644 index 70a02809c..000000000 --- a/usr/tests/ib/pingpong-ud.c +++ /dev/null @@ -1,885 +0,0 @@ -/* - * Copyright (c) 2005 Topspin Communications. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#define _GNU_SOURCE -/*#include */ - -// #include -// #include -/* #include */ -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -/*#include */ -#include -#include - -#include "pingpong.h" - -enum { - PINGPONG_RECV_WRID = 1, - PINGPONG_SEND_WRID = 2, -}; - -static int page_size; - -struct pingpong_context { - struct ibv_context *context; - struct ibv_comp_channel *channel; - struct ibv_pd *pd; - struct ibv_mr *mr; - struct ibv_cq *cq; - struct ibv_qp *qp; - struct ibv_ah *ah; - void *buf; - int size; - int send_flags; - int rx_depth; - int pending; - struct ibv_port_attr portinfo; -}; - -struct pingpong_dest { - int lid; - int qpn; - int psn; - union ibv_gid gid; -}; - -/*static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn,*/ - /*int sl, struct pingpong_dest *dest, int sgid_idx)*/ -/*{*/ - /*struct ibv_ah_attr ah_attr = {*/ - /*.is_global = 0,*/ - /*.dlid = dest->lid,*/ - /*.sl = sl,*/ - /*.src_path_bits = 0,*/ - /*.port_num = port*/ - /*};*/ - /*struct ibv_qp_attr attr = {*/ - /*.qp_state = IBV_QPS_RTR*/ - /*};*/ - - /*if (ibv_modify_qp(ctx->qp, &attr, IBV_QP_STATE)) {*/ - /*fprintf(stderr, "Failed to modify QP to RTR\n");*/ - /*return 1;*/ - /*}*/ - - /*attr.qp_state = IBV_QPS_RTS;*/ - /*attr.sq_psn = my_psn;*/ - - /*if (ibv_modify_qp(ctx->qp, &attr,*/ - /*IBV_QP_STATE |*/ - /*IBV_QP_SQ_PSN)) {*/ - /*fprintf(stderr, "Failed to modify QP to RTS\n");*/ - /*return 1;*/ - /*}*/ - - /*if (dest->gid.global.interface_id) {*/ - /*ah_attr.is_global = 1;*/ - /*ah_attr.grh.hop_limit = 1;*/ - /*ah_attr.grh.dgid = dest->gid;*/ - /*ah_attr.grh.sgid_index = sgid_idx;*/ - /*}*/ - - /*ctx->ah = ibv_create_ah(ctx->pd, &ah_attr);*/ - /*if (!ctx->ah) {*/ - /*fprintf(stderr, "Failed to create AH\n");*/ - /*return 1;*/ - /*}*/ - - /*return 0;*/ -/*}*/ - -/*static struct pingpong_dest *pp_client_exch_dest(const char *servername, int port,*/ - /*const struct pingpong_dest *my_dest)*/ -/*{*/ - /*struct addrinfo *res, *t;*/ - /*struct addrinfo hints = {*/ - /*.ai_family = AF_UNSPEC,*/ - /*.ai_socktype = SOCK_STREAM*/ - /*};*/ - /*char *service;*/ - /*char msg[sizeof "0000:000000:000000:00000000000000000000000000000000"];*/ - /*int n;*/ - /*int sockfd = -1;*/ - /*struct pingpong_dest *rem_dest = NULL;*/ - /*char gid[33];*/ - - /*if (asprintf(&service, "%d", port) < 0)*/ - /*return NULL;*/ - - /*n = getaddrinfo(servername, service, &hints, &res);*/ - - /*if (n < 0) {*/ - /*fprintf(stderr, "%s for %s:%d\n", gai_strerror(n), servername, port);*/ - /*free(service);*/ - /*return NULL;*/ - /*}*/ - - /*for (t = res; t; t = t->ai_next) {*/ - /*sockfd = socket(t->ai_family, t->ai_socktype, t->ai_protocol);*/ - /*if (sockfd >= 0) {*/ - /*if (!connect(sockfd, t->ai_addr, t->ai_addrlen))*/ - /*break;*/ - /*close(sockfd);*/ - /*sockfd = -1;*/ - /*}*/ - /*}*/ - - /*freeaddrinfo(res);*/ - /*free(service);*/ - - /*if (sockfd < 0) {*/ - /*fprintf(stderr, "Couldn't connect to %s:%d\n", servername, port);*/ - /*return NULL;*/ - /*}*/ - - /*gid_to_wire_gid(&my_dest->gid, gid);*/ - /*sprintf(msg, "%04x:%06x:%06x:%s", my_dest->lid, my_dest->qpn,*/ - /*my_dest->psn, gid);*/ - /*if (write(sockfd, msg, sizeof msg) != sizeof msg) {*/ - /*fprintf(stderr, "Couldn't send local address\n");*/ - /*goto out;*/ - /*}*/ - - /*if (read(sockfd, msg, sizeof msg) != sizeof msg ||*/ - /*write(sockfd, "done", sizeof "done") != sizeof "done") {*/ - /*perror("client read/write");*/ - /*fprintf(stderr, "Couldn't read/write remote address\n");*/ - /*goto out;*/ - /*}*/ - - /*rem_dest = malloc(sizeof *rem_dest);*/ - /*if (!rem_dest)*/ - /*goto out;*/ - - /*sscanf(msg, "%x:%x:%x:%s", &rem_dest->lid, &rem_dest->qpn,*/ - /*&rem_dest->psn, gid);*/ - /*wire_gid_to_gid(gid, &rem_dest->gid);*/ - -/*out:*/ - /*close(sockfd);*/ - /*return rem_dest;*/ -/*}*/ - -/*static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx,*/ - /*int ib_port, int port, int sl,*/ - /*const struct pingpong_dest *my_dest,*/ - /*int sgid_idx)*/ -/*{*/ - /*struct addrinfo *res, *t;*/ - /*struct addrinfo hints = {*/ - /*.ai_flags = AI_PASSIVE,*/ - /*.ai_family = AF_UNSPEC,*/ - /*.ai_socktype = SOCK_STREAM*/ - /*};*/ - /*char *service;*/ - /*char msg[sizeof "0000:000000:000000:00000000000000000000000000000000"];*/ - /*int n;*/ - /*int sockfd = -1, connfd;*/ - /*struct pingpong_dest *rem_dest = NULL;*/ - /*char gid[33];*/ - - /*if (asprintf(&service, "%d", port) < 0)*/ - /*return NULL;*/ - - /*n = getaddrinfo(NULL, service, &hints, &res);*/ - - /*if (n < 0) {*/ - /*fprintf(stderr, "%s for port %d\n", gai_strerror(n), port);*/ - /*free(service);*/ - /*return NULL;*/ - /*}*/ - - /*for (t = res; t; t = t->ai_next) {*/ - /*sockfd = socket(t->ai_family, t->ai_socktype, t->ai_protocol);*/ - /*if (sockfd >= 0) {*/ - /*n = 1;*/ - - /*setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &n, sizeof n);*/ - - /*if (!bind(sockfd, t->ai_addr, t->ai_addrlen))*/ - /*break;*/ - /*close(sockfd);*/ - /*sockfd = -1;*/ - /*}*/ - /*}*/ - - /*freeaddrinfo(res);*/ - /*free(service);*/ - - /*if (sockfd < 0) {*/ - /*fprintf(stderr, "Couldn't listen to port %d\n", port);*/ - /*return NULL;*/ - /*}*/ - - /*listen(sockfd, 1);*/ - /*connfd = accept(sockfd, NULL, NULL);*/ - /*close(sockfd);*/ - /*if (connfd < 0) {*/ - /*fprintf(stderr, "accept() failed\n");*/ - /*return NULL;*/ - /*}*/ - - /*n = read(connfd, msg, sizeof msg);*/ - /*if (n != sizeof msg) {*/ - /*perror("server read");*/ - /*fprintf(stderr, "%d/%d: Couldn't read remote address\n", n, (int) sizeof msg);*/ - /*goto out;*/ - /*}*/ - - /*rem_dest = malloc(sizeof *rem_dest);*/ - /*if (!rem_dest)*/ - /*goto out;*/ - - /*sscanf(msg, "%x:%x:%x:%s", &rem_dest->lid, &rem_dest->qpn,*/ - /*&rem_dest->psn, gid);*/ - /*wire_gid_to_gid(gid, &rem_dest->gid);*/ - - /*if (pp_connect_ctx(ctx, ib_port, my_dest->psn, sl, rem_dest,*/ - /*sgid_idx)) {*/ - /*fprintf(stderr, "Couldn't connect to remote QP\n");*/ - /*free(rem_dest);*/ - /*rem_dest = NULL;*/ - /*goto out;*/ - /*}*/ - - /*gid_to_wire_gid(&my_dest->gid, gid);*/ - /*sprintf(msg, "%04x:%06x:%06x:%s", my_dest->lid, my_dest->qpn,*/ - /*my_dest->psn, gid);*/ - /*if (write(connfd, msg, sizeof msg) != sizeof msg ||*/ - /*read(connfd, msg, sizeof msg) != sizeof "done") {*/ - /*fprintf(stderr, "Couldn't send/recv local address\n");*/ - /*free(rem_dest);*/ - /*rem_dest = NULL;*/ - /*goto out;*/ - /*}*/ -/*out:*/ - /*close(connfd);*/ - /*return rem_dest;*/ -/*}*/ - -static struct pingpong_context *pp_init_ctx(struct ibv_device *ib_dev, int size, - int rx_depth, int port, - int use_event) -{ - printf("LOG: PINGPONG - pp_init_ctx\n"); - struct pingpong_context *ctx; - - printf("LOG: PINGPONG - pp_init_ctx\n"); - ctx = malloc(sizeof *ctx); - if (!ctx) - return NULL; - - ctx->size = size; - ctx->send_flags = IBV_SEND_SIGNALED; - ctx->rx_depth = rx_depth; - - printf("LOG: PINGPONG - pp_init_ctx\n"); - ctx->buf = memalign(page_size, size + 40); - if (!ctx->buf) { - fprintf(stderr, "Couldn't allocate work buf.\n"); - goto clean_ctx; - } - - /* FIXME memset(ctx->buf, 0, size + 40); */ - memset(ctx->buf, 0x7b, size + 40); - - printf("LOG: PINGPONG - pp_init_ctx\n"); - ctx->context = ibv_open_device(ib_dev); - if (!ctx->context) { - fprintf(stderr, "Couldn't get context for %s\n", - ibv_get_device_name(ib_dev)); - goto clean_buffer; - } - - printf("LOG: PINGPONG - pp_init_ctx\n"); - { - struct ibv_port_attr port_info = {}; - int mtu; - - if (ibv_query_port(ctx->context, port, &port_info)) { - fprintf(stderr, "Unable to query port info for port %d\n", port); - goto clean_device; - } - mtu = 1 << (port_info.active_mtu + 7); - if (size > mtu) { - fprintf(stderr, "Requested size larger than port MTU (%d)\n", mtu); - goto clean_device; - } - } - - printf("LOG: PINGPONG - pp_init_ctx\n"); - if (use_event) { - ctx->channel = ibv_create_comp_channel(ctx->context); - if (!ctx->channel) { - fprintf(stderr, "Couldn't create completion channel\n"); - goto clean_device; - } - } else - ctx->channel = NULL; - - /*ctx->pd = ibv_alloc_pd(ctx->context);*/ - /*if (!ctx->pd) {*/ - /*fprintf(stderr, "Couldn't allocate PD\n");*/ - /*goto clean_comp_channel;*/ - /*}*/ - - /*ctx->mr = ibv_reg_mr(ctx->pd, ctx->buf, size + 40, IBV_ACCESS_LOCAL_WRITE);*/ - /*if (!ctx->mr) {*/ - /*fprintf(stderr, "Couldn't register MR\n");*/ - /*goto clean_pd;*/ - /*}*/ - - /*ctx->cq = ibv_create_cq(ctx->context, rx_depth + 1, NULL,*/ - /*ctx->channel, 0);*/ - /*if (!ctx->cq) {*/ - /*fprintf(stderr, "Couldn't create CQ\n");*/ - /*goto clean_mr;*/ - /*}*/ - - /*{*/ - /*struct ibv_qp_attr attr;*/ - /*struct ibv_qp_init_attr init_attr = {*/ - /*.send_cq = ctx->cq,*/ - /*.recv_cq = ctx->cq,*/ - /*.cap = {*/ - /*.max_send_wr = 1,*/ - /*.max_recv_wr = rx_depth,*/ - /*.max_send_sge = 1,*/ - /*.max_recv_sge = 1*/ - /*},*/ - /*.qp_type = IBV_QPT_UD,*/ - /*};*/ - - /*ctx->qp = ibv_create_qp(ctx->pd, &init_attr);*/ - /*if (!ctx->qp) {*/ - /*fprintf(stderr, "Couldn't create QP\n");*/ - /*goto clean_cq;*/ - /*}*/ - - /*ibv_query_qp(ctx->qp, &attr, IBV_QP_CAP, &init_attr);*/ - /*if (init_attr.cap.max_inline_data >= size) {*/ - /*ctx->send_flags |= IBV_SEND_INLINE;*/ - /*}*/ - /*}*/ - - /*{*/ - /*struct ibv_qp_attr attr = {*/ - /*.qp_state = IBV_QPS_INIT,*/ - /*.pkey_index = 0,*/ - /*.port_num = port,*/ - /*.qkey = 0x11111111*/ - /*};*/ - - /*if (ibv_modify_qp(ctx->qp, &attr,*/ - /*IBV_QP_STATE |*/ - /*IBV_QP_PKEY_INDEX |*/ - /*IBV_QP_PORT |*/ - /*IBV_QP_QKEY)) {*/ - /*fprintf(stderr, "Failed to modify QP to INIT\n");*/ - /*goto clean_qp;*/ - /*}*/ - /*}*/ - - /*return ctx;*/ - -clean_qp: - /*ibv_destroy_qp(ctx->qp);*/ - -clean_cq: - /*ibv_destroy_cq(ctx->cq);*/ - -clean_mr: - /*ibv_dereg_mr(ctx->mr);*/ - -clean_pd: - /*ibv_dealloc_pd(ctx->pd);*/ - -clean_comp_channel: - /*if (ctx->channel)*/ - /*ibv_destroy_comp_channel(ctx->channel);*/ - -clean_device: - /*ibv_close_device(ctx->context);*/ - -clean_buffer: - /*free(ctx->buf);*/ - -clean_ctx: - /*free(ctx);*/ - - return NULL; -} - -/*static int pp_close_ctx(struct pingpong_context *ctx)*/ -/*{*/ - /*if (ibv_destroy_qp(ctx->qp)) {*/ - /*fprintf(stderr, "Couldn't destroy QP\n");*/ - /*return 1;*/ - /*}*/ - - /*if (ibv_destroy_cq(ctx->cq)) {*/ - /*fprintf(stderr, "Couldn't destroy CQ\n");*/ - /*return 1;*/ - /*}*/ - - /*if (ibv_dereg_mr(ctx->mr)) {*/ - /*fprintf(stderr, "Couldn't deregister MR\n");*/ - /*return 1;*/ - /*}*/ - - /*if (ibv_destroy_ah(ctx->ah)) {*/ - /*fprintf(stderr, "Couldn't destroy AH\n");*/ - /*return 1;*/ - /*}*/ - - /*if (ibv_dealloc_pd(ctx->pd)) {*/ - /*fprintf(stderr, "Couldn't deallocate PD\n");*/ - /*return 1;*/ - /*}*/ - - /*if (ctx->channel) {*/ - /*if (ibv_destroy_comp_channel(ctx->channel)) {*/ - /*fprintf(stderr, "Couldn't destroy completion channel\n");*/ - /*return 1;*/ - /*}*/ - /*}*/ - - /*if (ibv_close_device(ctx->context)) {*/ - /*fprintf(stderr, "Couldn't release context\n");*/ - /*return 1;*/ - /*}*/ - - /*free(ctx->buf);*/ - /*free(ctx);*/ - - /*return 0;*/ -/*}*/ - -/*static int pp_post_recv(struct pingpong_context *ctx, int n)*/ -/*{*/ - /*struct ibv_sge list = {*/ - /*.addr = (uintptr_t) ctx->buf,*/ - /*.length = ctx->size + 40,*/ - /*.lkey = ctx->mr->lkey*/ - /*};*/ - /*struct ibv_recv_wr wr = {*/ - /*.wr_id = PINGPONG_RECV_WRID,*/ - /*.sg_list = &list,*/ - /*.num_sge = 1,*/ - /*};*/ - /*struct ibv_recv_wr *bad_wr;*/ - /*int i;*/ - - /*for (i = 0; i < n; ++i)*/ - /*if (ibv_post_recv(ctx->qp, &wr, &bad_wr))*/ - /*break;*/ - - /*return i;*/ -/*}*/ - -/*static int pp_post_send(struct pingpong_context *ctx, uint32_t qpn)*/ -/*{*/ - /*struct ibv_sge list = {*/ - /*.addr = (uintptr_t) ctx->buf + 40,*/ - /*.length = ctx->size,*/ - /*.lkey = ctx->mr->lkey*/ - /*};*/ - /*struct ibv_send_wr wr = {*/ - /*.wr_id = PINGPONG_SEND_WRID,*/ - /*.sg_list = &list,*/ - /*.num_sge = 1,*/ - /*.opcode = IBV_WR_SEND,*/ - /*.send_flags = ctx->send_flags,*/ - /*.wr = {*/ - /*.ud = {*/ - /*.ah = ctx->ah,*/ - /*.remote_qpn = qpn,*/ - /*.remote_qkey = 0x11111111*/ - /*}*/ - /*}*/ - /*};*/ - /*struct ibv_send_wr *bad_wr;*/ - - /*return ibv_post_send(ctx->qp, &wr, &bad_wr);*/ -/*}*/ - -static void usage(const char *argv0) -{ - printf("Usage:\n"); - printf(" %s start a server and wait for connection\n", argv0); - printf(" %s connect to server at \n", argv0); - printf("\n"); - printf("Options:\n"); - printf(" -p, --port= listen on/connect to port (default 18515)\n"); - printf(" -d, --ib-dev= use IB device (default first device found)\n"); - printf(" -i, --ib-port= use port of IB device (default 1)\n"); - printf(" -s, --size= size of message to exchange (default 2048)\n"); - printf(" -r, --rx-depth= number of receives to post at a time (default 500)\n"); - printf(" -n, --iters= number of exchanges (default 1000)\n"); - printf(" -l, --sl= send messages with service level (default 0)\n"); - printf(" -e, --events sleep on CQ events (default poll)\n"); - printf(" -g, --gid-idx= local port gid index\n"); -} - -int main(int argc, char *argv[]) -{ - printf("LOG: PINGPONG - main\n"); - struct ibv_device **dev_list; - struct ibv_device *ib_dev; - struct pingpong_context *ctx; - struct pingpong_dest my_dest; - struct pingpong_dest *rem_dest; - struct timeval start, end; - char *ib_devname = NULL; - char *servername = NULL; - unsigned int port = 18515; - int ib_port = 1; - unsigned int size = 2048; - unsigned int rx_depth = 500; - unsigned int iters = 1000; - int use_event = 0; - int routs; - int rcnt, scnt; - int num_cq_events = 0; - int sl = 0; - int gidx = -1; - char gid[33]; - - printf("LOG: PINGPONG - main\n"); - srand48(getpid() * time(NULL)); - - printf("LOG: PINGPONG - main\n"); - while (1) { - int c; - - printf("LOG: PINGPONG - main\n"); - static struct option long_options[] = { - { .name = "port", .has_arg = 1, .val = 'p' }, - { .name = "ib-dev", .has_arg = 1, .val = 'd' }, - { .name = "ib-port", .has_arg = 1, .val = 'i' }, - { .name = "size", .has_arg = 1, .val = 's' }, - { .name = "rx-depth", .has_arg = 1, .val = 'r' }, - { .name = "iters", .has_arg = 1, .val = 'n' }, - { .name = "sl", .has_arg = 1, .val = 'l' }, - { .name = "events", .has_arg = 0, .val = 'e' }, - { .name = "gid-idx", .has_arg = 1, .val = 'g' }, - {} - }; - - c = getopt_long(argc, argv, "p:d:i:s:r:n:l:eg:", - long_options, NULL); - if (c == -1) - break; - - switch (c) { - case 'p': - port = strtol(optarg, NULL, 0); - if (port > 65535) { - usage(argv[0]); - return 1; - } - break; - - case 'd': - ib_devname = strdupa(optarg); - break; - - case 'i': - ib_port = strtol(optarg, NULL, 0); - if (ib_port < 1) { - usage(argv[0]); - return 1; - } - break; - - case 's': - size = strtoul(optarg, NULL, 0); - break; - - case 'r': - rx_depth = strtoul(optarg, NULL, 0); - break; - - case 'n': - iters = strtoul(optarg, NULL, 0); - break; - - case 'l': - sl = strtol(optarg, NULL, 0); - break; - - case 'e': - ++use_event; - break; - - case 'g': - gidx = strtol(optarg, NULL, 0); - break; - - default: - usage(argv[0]); - return 1; - } - } - - if (optind == argc - 1) - servername = strdupa(argv[optind]); - else if (optind < argc) { - usage(argv[0]); - return 1; - } - - page_size = 4092; // TODO - - dev_list = ibv_get_device_list(NULL); - if (!dev_list) { - perror("Failed to get IB devices list"); - return 1; - } - - if (!ib_devname) { - ib_dev = *dev_list; - if (!ib_dev) { - fprintf(stderr, "No IB devices found\n"); - return 1; - } - } else { - int i; - for (i = 0; dev_list[i]; ++i) - if (!strcmp(ibv_get_device_name(dev_list[i]), ib_devname)) - break; - ib_dev = dev_list[i]; - if (!ib_dev) { - fprintf(stderr, "IB device %s not found\n", ib_devname); - return 1; - } - } - - ctx = pp_init_ctx(ib_dev, size, rx_depth, ib_port, use_event); - if (!ctx) - return 1; - - /*routs = pp_post_recv(ctx, ctx->rx_depth);*/ - /*if (routs < ctx->rx_depth) {*/ - /*fprintf(stderr, "Couldn't post receive (%d)\n", routs);*/ - /*return 1;*/ - /*}*/ - - /*if (use_event)*/ - /*if (ibv_req_notify_cq(ctx->cq, 0)) {*/ - /*fprintf(stderr, "Couldn't request CQ notification\n");*/ - /*return 1;*/ - /*}*/ - - /*if (pp_get_port_info(ctx->context, ib_port, &ctx->portinfo)) {*/ - /*fprintf(stderr, "Couldn't get port info\n");*/ - /*return 1;*/ - /*}*/ - /*my_dest.lid = ctx->portinfo.lid;*/ - - /*my_dest.qpn = ctx->qp->qp_num;*/ - /*my_dest.psn = lrand48() & 0xffffff;*/ - - /*if (gidx >= 0) {*/ - /*if (ibv_query_gid(ctx->context, ib_port, gidx, &my_dest.gid)) {*/ - /*fprintf(stderr, "Could not get local gid for gid index "*/ - /*"%d\n", gidx);*/ - /*return 1;*/ - /*}*/ - /*} else*/ - /*memset(&my_dest.gid, 0, sizeof my_dest.gid);*/ - - /*inet_ntop(AF_INET6, &my_dest.gid, gid, sizeof gid);*/ - /*printf(" local address: LID 0x%04x, QPN 0x%06x, PSN 0x%06x: GID %s\n",*/ - /*my_dest.lid, my_dest.qpn, my_dest.psn, gid);*/ - - /*if (servername)*/ - /*rem_dest = pp_client_exch_dest(servername, port, &my_dest);*/ - /*else*/ - /*rem_dest = pp_server_exch_dest(ctx, ib_port, port, sl,*/ - /*&my_dest, gidx);*/ - - /*if (!rem_dest)*/ - /*return 1;*/ - - /*inet_ntop(AF_INET6, &rem_dest->gid, gid, sizeof gid);*/ - /*printf(" remote address: LID 0x%04x, QPN 0x%06x, PSN 0x%06x, GID %s\n",*/ - /*rem_dest->lid, rem_dest->qpn, rem_dest->psn, gid);*/ - - /*if (servername)*/ - /*if (pp_connect_ctx(ctx, ib_port, my_dest.psn, sl, rem_dest,*/ - /*gidx))*/ - /*return 1;*/ - - /*ctx->pending = PINGPONG_RECV_WRID;*/ - - /*if (servername) {*/ - /*if (pp_post_send(ctx, rem_dest->qpn)) {*/ - /*fprintf(stderr, "Couldn't post send\n");*/ - /*return 1;*/ - /*}*/ - /*ctx->pending |= PINGPONG_SEND_WRID;*/ - /*}*/ - - /*if (gettimeofday(&start, NULL)) {*/ - /*perror("gettimeofday");*/ - /*return 1;*/ - /*}*/ - - /*rcnt = scnt = 0;*/ - /*while (rcnt < iters || scnt < iters) {*/ - /*if (use_event) {*/ - /*struct ibv_cq *ev_cq;*/ - /*void *ev_ctx;*/ - - /*if (ibv_get_cq_event(ctx->channel, &ev_cq, &ev_ctx)) {*/ - /*fprintf(stderr, "Failed to get cq_event\n");*/ - /*return 1;*/ - /*}*/ - - /*++num_cq_events;*/ - - /*if (ev_cq != ctx->cq) {*/ - /*fprintf(stderr, "CQ event for unknown CQ %p\n", ev_cq);*/ - /*return 1;*/ - /*}*/ - - /*if (ibv_req_notify_cq(ctx->cq, 0)) {*/ - /*fprintf(stderr, "Couldn't request CQ notification\n");*/ - /*return 1;*/ - /*}*/ - /*}*/ - - /*{*/ - /*struct ibv_wc wc[2];*/ - /*int ne, i;*/ - - /*do {*/ - /*ne = ibv_poll_cq(ctx->cq, 2, wc);*/ - /*if (ne < 0) {*/ - /*fprintf(stderr, "poll CQ failed %d\n", ne);*/ - /*return 1;*/ - /*}*/ - /*} while (!use_event && ne < 1);*/ - - /*for (i = 0; i < ne; ++i) {*/ - /*if (wc[i].status != IBV_WC_SUCCESS) {*/ - /*fprintf(stderr, "Failed status %s (%d) for wr_id %d\n",*/ - /*ibv_wc_status_str(wc[i].status),*/ - /*wc[i].status, (int) wc[i].wr_id);*/ - /*return 1;*/ - /*}*/ - - /*switch ((int) wc[i].wr_id) {*/ - /*case PINGPONG_SEND_WRID:*/ - /*++scnt;*/ - /*break;*/ - - /*case PINGPONG_RECV_WRID:*/ - /*if (--routs <= 1) {*/ - /*routs += pp_post_recv(ctx, ctx->rx_depth - routs);*/ - /*if (routs < ctx->rx_depth) {*/ - /*fprintf(stderr,*/ - /*"Couldn't post receive (%d)\n",*/ - /*routs);*/ - /*return 1;*/ - /*}*/ - /*}*/ - - /*++rcnt;*/ - /*break;*/ - - /*default:*/ - /*fprintf(stderr, "Completion for unknown wr_id %d\n",*/ - /*(int) wc[i].wr_id);*/ - /*return 1;*/ - /*}*/ - - /*ctx->pending &= ~(int) wc[i].wr_id;*/ - /*if (scnt < iters && !ctx->pending) {*/ - /*if (pp_post_send(ctx, rem_dest->qpn)) {*/ - /*fprintf(stderr, "Couldn't post send\n");*/ - /*return 1;*/ - /*}*/ - /*ctx->pending = PINGPONG_RECV_WRID |*/ - /*PINGPONG_SEND_WRID;*/ - /*}*/ - /*}*/ - /*}*/ - /*}*/ - - /*if (gettimeofday(&end, NULL)) {*/ - /*perror("gettimeofday");*/ - /*return 1;*/ - /*}*/ - - /*{*/ - /*float usec = (end.tv_sec - start.tv_sec) * 1000000 +*/ - /*(end.tv_usec - start.tv_usec);*/ - /*long long bytes = (long long) size * iters * 2;*/ - - /*printf("%lld bytes in %.2f seconds = %.2f Mbit/sec\n",*/ - /*bytes, usec / 1000000., bytes * 8. / usec);*/ - /*printf("%d iters in %.2f seconds = %.2f usec/iter\n",*/ - /*iters, usec / 1000000., usec / iters);*/ - /*}*/ - - /*ibv_ack_cq_events(ctx->cq, num_cq_events);*/ - - /*if (pp_close_ctx(ctx))*/ - /*return 1;*/ - - /*ibv_free_device_list(dev_list);*/ - /*free(rem_dest);*/ - - return 0; -} diff --git a/usr/tests/ib/pingpong.c b/usr/tests/ib/pingpong.c index fae8a78a3..468eddcbd 100644 --- a/usr/tests/ib/pingpong.c +++ b/usr/tests/ib/pingpong.c @@ -1,5 +1,6 @@ /* - * Copyright (c) 2006 Cisco Systems. All rights reserved. + * Copyright (c) 2006 Cisco Systems. All rights reserved. + * 2018 Annika Wierichs, RWTH Aachen. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -32,11 +33,24 @@ #include "pingpong.h" -/*#include // TODO*/ +/* #include */ #include #include #include + +uint32_t htonl(uint32_t x) { +#if BYTE_ORDER == BIG_ENDIAN + return x; +#else + return __bswap_32 (x); +#endif +} + +uint32_t ntohl(uint32_t x) { + return htonl(x); +} + enum ibv_mtu pp_mtu_to_enum(int mtu) { switch (mtu) { @@ -55,27 +69,28 @@ int pp_get_port_info(struct ibv_context *context, int port, return ibv_query_port(context, port, attr); } -/* void wire_gid_to_gid(const char *wgid, union ibv_gid *gid) */ -/* { */ - /* char tmp[9]; */ - /* __be32 v32; */ - /* int i; */ - /* uint32_t tmp_gid[4]; */ +void wire_gid_to_gid(const char *wgid, union ibv_gid *gid) +{ + char tmp[9]; + __be32 v32; + int i; + uint32_t tmp_gid[4]; - /* for (tmp[8] = 0, i = 0; i < 4; ++i) { */ - /* memcpy(tmp, wgid + i * 8, 8); */ - /* sscanf(tmp, "%x", &v32); */ - /* tmp_gid[i] = be32toh(v32); */ - /* } */ - /* memcpy(gid, tmp_gid, sizeof(*gid)); */ -/* } */ + for (tmp[8] = 0, i = 0; i < 4; ++i) { + memcpy(tmp, wgid + i * 8, 8); + sscanf(tmp, "%x", &v32); + tmp_gid[i] = ntohl(v32); // TODO: check if this works in every case. + } + memcpy(gid, tmp_gid, sizeof(*gid)); +} -/* void gid_to_wire_gid(const union ibv_gid *gid, char wgid[]) */ -/* { */ - /* uint32_t tmp_gid[4]; */ - /* int i; */ +void gid_to_wire_gid(const union ibv_gid *gid, char wgid[]) +{ + uint32_t tmp_gid[4]; + int i; + + memcpy(tmp_gid, gid, sizeof(tmp_gid)); + for (i = 0; i < 4; ++i) + sprintf(&wgid[i * 8], "%08x", htonl(tmp_gid[i])); // TODO: check if this works in every case. +} - /* memcpy(tmp_gid, gid, sizeof(tmp_gid)); */ - /* for (i = 0; i < 4; ++i) */ - /* sprintf(&wgid[i * 8], "%08x", htobe32(tmp_gid[i])); */ -/* } */ diff --git a/usr/tests/ib/pingpong.h b/usr/tests/ib/pingpong.h index 5749e8b07..f9a8f0b8d 100644 --- a/usr/tests/ib/pingpong.h +++ b/usr/tests/ib/pingpong.h @@ -1,5 +1,6 @@ /* - * Copyright (c) 2006 Cisco Systems. All rights reserved. + * Copyright (c) 2006 Cisco Systems. All rights reserved. + * 2018 Annika Wierichs, RWTH Aachen. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -30,10 +31,17 @@ * SOFTWARE. */ -#include +#ifndef IBV_PINGPONG_H +#define IBV_PINGPONG_H + +#define PAGE_SIZE 4092 + #include enum ibv_mtu pp_mtu_to_enum(int mtu); -int pp_get_port_info(struct ibv_context *context, int port, struct ibv_port_attr *attr); -// void wire_gid_to_gid(const char *wgid, union ibv_gid *gid); -// void gid_to_wire_gid(const union ibv_gid *gid, char wgid[]); +int pp_get_port_info(struct ibv_context *context, int port, + struct ibv_port_attr *attr); +void wire_gid_to_gid(const char *wgid, union ibv_gid *gid); +void gid_to_wire_gid(const union ibv_gid *gid, char wgid[]); + +#endif /* IBV_PINGPONG_H */ diff --git a/usr/tests/ib/rc_pingpong.c b/usr/tests/ib/rc_pingpong.c new file mode 100644 index 000000000..049df1eb2 --- /dev/null +++ b/usr/tests/ib/rc_pingpong.c @@ -0,0 +1,1051 @@ +/* + * Copyright (c) 2005 Topspin Communications. All rights reserved. + * 2018 Annika Wierichs, RWTH Aachen. All rights reserved. + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "pingpong.h" + +enum { + PINGPONG_RECV_WRID = 1, + PINGPONG_SEND_WRID = 2, +}; + +static int page_size; +static int use_odp; +static int use_ts; +static int validate_buf; + +struct pingpong_context { + struct ibv_context *context; + struct ibv_comp_channel *channel; + struct ibv_pd *pd; + struct ibv_mr *mr; + + union { + struct ibv_cq *cq; + struct ibv_cq_ex *cq_ex; + } cq_s; + + struct ibv_qp *qp; + char *buf; + int size; + int send_flags; + int rx_depth; + int pending; + struct ibv_port_attr portinfo; + uint64_t completion_timestamp_mask; +}; + +static struct ibv_cq *pp_cq(struct pingpong_context *ctx) +{ + return use_ts ? ibv_cq_ex_to_cq(ctx->cq_s.cq_ex) : + ctx->cq_s.cq; +} + +struct pingpong_dest { + int lid; + int qpn; + int psn; + union ibv_gid gid; +}; + +static int pp_connect_ctx(struct pingpong_context *ctx, int port, int my_psn, enum ibv_mtu mtu, + int sl, struct pingpong_dest *dest, int sgid_idx) +{ + struct ibv_qp_attr attr = { + .qp_state = IBV_QPS_RTR, + .path_mtu = mtu, + .dest_qp_num = dest->qpn, + .rq_psn = dest->psn, + .max_dest_rd_atomic = 1, + .min_rnr_timer = 12, + .ah_attr = { + .is_global = 0, + .dlid = dest->lid, + .sl = sl, + .src_path_bits = 0, + .port_num = port + } + }; + + if (dest->gid.global.interface_id) { + attr.ah_attr.is_global = 1; + attr.ah_attr.grh.hop_limit = 1; + attr.ah_attr.grh.dgid = dest->gid; + attr.ah_attr.grh.sgid_index = sgid_idx; + } + if (ibv_modify_qp(ctx->qp, &attr, + IBV_QP_STATE | + IBV_QP_AV | + IBV_QP_PATH_MTU | + IBV_QP_DEST_QPN | + IBV_QP_RQ_PSN | + IBV_QP_MAX_DEST_RD_ATOMIC | + IBV_QP_MIN_RNR_TIMER)) { + fprintf(stderr, "Failed to modify QP to RTR\n"); + return 1; + } + + attr.qp_state = IBV_QPS_RTS; + attr.timeout = 14; + attr.retry_cnt = 7; + attr.rnr_retry = 7; + attr.sq_psn = my_psn; + attr.max_rd_atomic = 1; + if (ibv_modify_qp(ctx->qp, &attr, + IBV_QP_STATE | + IBV_QP_TIMEOUT | + IBV_QP_RETRY_CNT | + IBV_QP_RNR_RETRY | + IBV_QP_SQ_PSN | + IBV_QP_MAX_QP_RD_ATOMIC)) { + fprintf(stderr, "Failed to modify QP to RTS\n"); + return 1; + } + + return 0; +} + +static struct pingpong_dest *pp_client_exch_dest(const char *servername, int port, + const struct pingpong_dest *my_dest) +{ + struct addrinfo *res, *t; + struct addrinfo hints = { + .ai_family = AF_UNSPEC, + .ai_socktype = SOCK_STREAM + }; + char *service; + char msg[sizeof "0000:000000:000000:00000000000000000000000000000000"]; + int n; + int sockfd = -1; + struct pingpong_dest *rem_dest = NULL; + char gid[33]; + + if (asprintf(&service, "%d", port) < 0) + return NULL; + + n = getaddrinfo(servername, service, &hints, &res); + + if (n < 0) { + fprintf(stderr, "Error for %s:%d\n", servername, port); + free(service); + return NULL; + } + + for (t = res; t; t = t->ai_next) { + sockfd = socket(t->ai_family, t->ai_socktype, t->ai_protocol); + if (sockfd >= 0) { + if (!connect(sockfd, t->ai_addr, t->ai_addrlen)) + break; + close(sockfd); + sockfd = -1; + } + } + + freeaddrinfo(res); + free(service); + + if (sockfd < 0) { + fprintf(stderr, "Couldn't connect to %s:%d\n", servername, port); + return NULL; + } + + gid_to_wire_gid(&my_dest->gid, gid); + sprintf(msg, "%04x:%06x:%06x:%s", my_dest->lid, my_dest->qpn, + my_dest->psn, gid); + if (write(sockfd, msg, sizeof msg) != sizeof msg) { + fprintf(stderr, "Couldn't send local address\n"); + goto out; + } + + if (read(sockfd, msg, sizeof msg) != sizeof msg || + write(sockfd, "done", sizeof "done") != sizeof "done") { + perror("client read/write"); + fprintf(stderr, "Couldn't read/write remote address\n"); + goto out; + } + + rem_dest = malloc(sizeof *rem_dest); + if (!rem_dest) + goto out; + + sscanf(msg, "%x:%x:%x:%s", &rem_dest->lid, &rem_dest->qpn, &rem_dest->psn, gid); + wire_gid_to_gid(gid, &rem_dest->gid); + +out: + close(sockfd); + return rem_dest; +} + +static struct pingpong_dest *pp_server_exch_dest(struct pingpong_context *ctx, int ib_port, + enum ibv_mtu mtu, int port, int sl, const struct pingpong_dest *my_dest, int sgid_idx) +{ + struct addrinfo *res, *t; + struct addrinfo hints = { + .ai_flags = AI_PASSIVE, + .ai_family = AF_UNSPEC, + .ai_socktype = SOCK_STREAM + }; + char *service; + char msg[sizeof "0000:000000:000000:00000000000000000000000000000000"]; + int n; + int sockfd = -1, connfd; + struct pingpong_dest *rem_dest = NULL; + char gid[33]; + + if (asprintf(&service, "%d", port) < 0) + return NULL; + + n = getaddrinfo(NULL, service, &hints, &res); + + if (n < 0) { + fprintf(stderr, "Error for port %d\n", port); + free(service); + return NULL; + } + + for (t = res; t; t = t->ai_next) { + sockfd = socket(t->ai_family, t->ai_socktype, t->ai_protocol); + if (sockfd >= 0) { + n = 1; + + setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &n, sizeof n); + + if (!bind(sockfd, t->ai_addr, t->ai_addrlen)) + break; + close(sockfd); + sockfd = -1; + } + } + + freeaddrinfo(res); + free(service); + + if (sockfd < 0) { + fprintf(stderr, "Couldn't listen to port %d\n", port); + return NULL; + } + + listen(sockfd, 1); + connfd = accept(sockfd, NULL, NULL); + close(sockfd); + if (connfd < 0) { + fprintf(stderr, "accept() failed\n"); + return NULL; + } + + n = read(connfd, msg, sizeof msg); + if (n != sizeof msg) { + perror("server read"); + fprintf(stderr, "%d/%d: Couldn't read remote address\n", n, (int) sizeof msg); + goto out; + } + + rem_dest = malloc(sizeof *rem_dest); + if (!rem_dest) + goto out; + + sscanf(msg, "%x:%x:%x:%s", &rem_dest->lid, &rem_dest->qpn, + &rem_dest->psn, gid); + wire_gid_to_gid(gid, &rem_dest->gid); + + if (pp_connect_ctx(ctx, ib_port, my_dest->psn, mtu, sl, rem_dest, + sgid_idx)) { + fprintf(stderr, "Couldn't connect to remote QP\n"); + free(rem_dest); + rem_dest = NULL; + goto out; + } + + + gid_to_wire_gid(&my_dest->gid, gid); + sprintf(msg, "%04x:%06x:%06x:%s", my_dest->lid, my_dest->qpn, + my_dest->psn, gid); + if (write(connfd, msg, sizeof msg) != sizeof msg || + read(connfd, msg, sizeof msg) != sizeof "done") { + fprintf(stderr, "Couldn't send/recv local address\n"); + free(rem_dest); + rem_dest = NULL; + goto out; + } + + +out: + close(connfd); + return rem_dest; +} + +static struct pingpong_context *pp_init_ctx(struct ibv_device *ib_dev, int size, int rx_depth, + int port, int use_event) +{ + struct pingpong_context *ctx; + int access_flags = IBV_ACCESS_LOCAL_WRITE; + + ctx = calloc(1, sizeof *ctx); + if (!ctx) + return NULL; + + ctx->size = size; + ctx->send_flags = IBV_SEND_SIGNALED; + ctx->rx_depth = rx_depth; + + ctx->buf = memalign(page_size, size); + if (!ctx->buf) { + fprintf(stderr, "Couldn't allocate work buf.\n"); + goto clean_ctx; + } + + /* FIXME memset(ctx->buf, 0, size); */ + memset(ctx->buf, 0x7b, size); + + ctx->context = ibv_open_device(ib_dev); + if (!ctx->context) { + fprintf(stderr, "Couldn't get context for %s\n", + ibv_get_device_name(ib_dev)); + goto clean_buffer; + } + + if (use_event) { + ctx->channel = ibv_create_comp_channel(ctx->context); + if (!ctx->channel) { + fprintf(stderr, "Couldn't create completion channel\n"); + goto clean_device; + } + } else + ctx->channel = NULL; + + ctx->pd = ibv_alloc_pd(ctx->context); + if (!ctx->pd) { + fprintf(stderr, "Couldn't allocate PD\n"); + goto clean_comp_channel; + } + + if (use_odp || use_ts) { + const uint32_t rc_caps_mask = IBV_ODP_SUPPORT_SEND | + IBV_ODP_SUPPORT_RECV; + struct ibv_device_attr_ex attrx; + + if (ibv_query_device_ex(ctx->context, NULL, &attrx)) { + fprintf(stderr, "Couldn't query device for its features\n"); + goto clean_comp_channel; + } + + if (use_odp) { + if (!(attrx.odp_caps.general_caps & IBV_ODP_SUPPORT) || + (attrx.odp_caps.per_transport_caps.rc_odp_caps & rc_caps_mask) != rc_caps_mask) { + fprintf(stderr, "The device isn't ODP capable or does not support RC send and receive with ODP\n"); + goto clean_comp_channel; + } + access_flags |= IBV_ACCESS_ON_DEMAND; + } + + if (use_ts) { + if (!attrx.completion_timestamp_mask) { + fprintf(stderr, "The device isn't completion timestamp capable\n"); + goto clean_comp_channel; + } + ctx->completion_timestamp_mask = attrx.completion_timestamp_mask; + } + } + ctx->mr = ibv_reg_mr(ctx->pd, ctx->buf, size, access_flags); + + if (!ctx->mr) { + fprintf(stderr, "Couldn't register MR\n"); + goto clean_pd; + } + + if (use_ts) { + struct ibv_cq_init_attr_ex attr_ex = { + .cqe = rx_depth + 1, + .cq_context = NULL, + .channel = ctx->channel, + .comp_vector = 0, + .wc_flags = IBV_WC_EX_WITH_COMPLETION_TIMESTAMP + }; + + ctx->cq_s.cq_ex = ibv_create_cq_ex(ctx->context, &attr_ex); + } else { + ctx->cq_s.cq = ibv_create_cq(ctx->context, rx_depth + 1, NULL, ctx->channel, 0); + } + + if (!pp_cq(ctx)) { + fprintf(stderr, "Couldn't create CQ\n"); + goto clean_mr; + } + + { + struct ibv_qp_attr attr; + struct ibv_qp_init_attr init_attr = { + .send_cq = pp_cq(ctx), + .recv_cq = pp_cq(ctx), + .cap = { + .max_send_wr = 1, + .max_recv_wr = rx_depth, + .max_send_sge = 1, + .max_recv_sge = 1 + }, + .qp_type = IBV_QPT_RC + }; + + ctx->qp = ibv_create_qp(ctx->pd, &init_attr); + if (!ctx->qp) { + fprintf(stderr, "Couldn't create QP\n"); + goto clean_cq; + } + + ibv_query_qp(ctx->qp, &attr, IBV_QP_CAP, &init_attr); + if (init_attr.cap.max_inline_data >= size) { + ctx->send_flags |= IBV_SEND_INLINE; + } + } + + { + struct ibv_qp_attr attr = { + .qp_state = IBV_QPS_INIT, + .pkey_index = 0, + .port_num = port, + .qp_access_flags = 0 + }; + + if (ibv_modify_qp(ctx->qp, &attr, + IBV_QP_STATE | + IBV_QP_PKEY_INDEX | + IBV_QP_PORT | + IBV_QP_ACCESS_FLAGS)) { + fprintf(stderr, "Failed to modify QP to INIT\n"); + goto clean_qp; + } + } + + return ctx; + +clean_qp: + ibv_destroy_qp(ctx->qp); + +clean_cq: + ibv_destroy_cq(pp_cq(ctx)); + +clean_mr: + ibv_dereg_mr(ctx->mr); + +clean_pd: + ibv_dealloc_pd(ctx->pd); + +clean_comp_channel: + if (ctx->channel) + ibv_destroy_comp_channel(ctx->channel); + +clean_device: + ibv_close_device(ctx->context); + +clean_buffer: + free(ctx->buf); + +clean_ctx: + free(ctx); + + return NULL; +} + +static int pp_close_ctx(struct pingpong_context *ctx) +{ + if (ibv_destroy_qp(ctx->qp)) { + fprintf(stderr, "Couldn't destroy QP\n"); + return 1; + } + + if (ibv_destroy_cq(pp_cq(ctx))) { + fprintf(stderr, "Couldn't destroy CQ\n"); + return 1; + } + + if (ibv_dereg_mr(ctx->mr)) { + fprintf(stderr, "Couldn't deregister MR\n"); + return 1; + } + + if (ibv_dealloc_pd(ctx->pd)) { + fprintf(stderr, "Couldn't deallocate PD\n"); + return 1; + } + + if (ctx->channel) { + if (ibv_destroy_comp_channel(ctx->channel)) { + fprintf(stderr, "Couldn't destroy completion channel\n"); + return 1; + } + } + + if (ibv_close_device(ctx->context)) { + fprintf(stderr, "Couldn't release context\n"); + return 1; + } + + free(ctx->buf); + free(ctx); + + return 0; +} + +static int pp_post_recv(struct pingpong_context *ctx, int n) +{ + struct ibv_sge list = { + .addr = (uintptr_t) ctx->buf, + .length = ctx->size, + .lkey = ctx->mr->lkey + }; + struct ibv_recv_wr wr = { + .wr_id = PINGPONG_RECV_WRID, + .sg_list = &list, + .num_sge = 1, + }; + struct ibv_recv_wr *bad_wr; + int i; + + for (i = 0; i < n; ++i) + if (ibv_post_recv(ctx->qp, &wr, &bad_wr)) + break; + + return i; +} + +static int pp_post_send(struct pingpong_context *ctx) +{ + struct ibv_sge list = { + .addr = (uintptr_t) ctx->buf, + .length = ctx->size, + .lkey = ctx->mr->lkey + }; + + struct ibv_send_wr wr = { + .wr_id = PINGPONG_SEND_WRID, + .sg_list = &list, + .num_sge = 1, + .opcode = IBV_WR_SEND, + .send_flags = ctx->send_flags, + }; + struct ibv_send_wr *bad_wr; + + return ibv_post_send(ctx->qp, &wr, &bad_wr); +} + +struct ts_params { + uint64_t comp_recv_max_time_delta; + uint64_t comp_recv_min_time_delta; + uint64_t comp_recv_total_time_delta; + uint64_t comp_recv_prev_time; + int last_comp_with_ts; + unsigned int comp_with_time_iters; +}; + +static inline int parse_single_wc(struct pingpong_context *ctx, int *scnt, + int *rcnt, int *routs, int iters, + uint64_t wr_id, enum ibv_wc_status status, + uint64_t completion_timestamp, + struct ts_params *ts) +{ + if (status != IBV_WC_SUCCESS) { + fprintf(stderr, "Failed status %s (%d) for wr_id %d\n", + ibv_wc_status_str(status), + status, (int)wr_id); + return 1; + } + + switch ((int)wr_id) { + case PINGPONG_SEND_WRID: + ++(*scnt); + break; + + case PINGPONG_RECV_WRID: + if (--(*routs) <= 1) { + *routs += pp_post_recv(ctx, ctx->rx_depth - *routs); + if (*routs < ctx->rx_depth) { + fprintf(stderr, + "Couldn't post receive (%d)\n", + *routs); + return 1; + } + } + + ++(*rcnt); + if (use_ts) { + if (ts->last_comp_with_ts) { + uint64_t delta; + + /* checking whether the clock was wrapped around */ + if (completion_timestamp >= ts->comp_recv_prev_time) + delta = completion_timestamp - ts->comp_recv_prev_time; + else + delta = ctx->completion_timestamp_mask - ts->comp_recv_prev_time + + completion_timestamp + 1; + + ts->comp_recv_max_time_delta = ts->comp_recv_max_time_delta > delta ? + ts->comp_recv_max_time_delta : delta; + ts->comp_recv_min_time_delta = ts->comp_recv_min_time_delta < delta ? + ts->comp_recv_min_time_delta : delta; + ts->comp_recv_total_time_delta += delta; + ts->comp_with_time_iters++; + } + + ts->comp_recv_prev_time = completion_timestamp; + ts->last_comp_with_ts = 1; + } else { + ts->last_comp_with_ts = 0; + } + + break; + + default: + fprintf(stderr, "Completion for unknown wr_id %d\n", + (int)wr_id); + return 1; + } + + ctx->pending &= ~(int)wr_id; + if (*scnt < iters && !ctx->pending) { + if (pp_post_send(ctx)) { + fprintf(stderr, "Couldn't post send\n"); + return 1; + } + ctx->pending = PINGPONG_RECV_WRID | + PINGPONG_SEND_WRID; + } + + return 0; +} + +static void usage(const char *argv0) +{ + printf("Usage:\n"); + printf(" %s start a server and wait for connection\n", argv0); + printf(" %s connect to server at \n", argv0); + printf("\n"); + printf("Options:\n"); + printf(" -p, --port= listen on/connect to port (default 18515)\n"); + printf(" -d, --ib-dev= use IB device (default first device found)\n"); + printf(" -i, --ib-port= use port of IB device (default 1)\n"); + printf(" -s, --size= size of message to exchange (default 4096)\n"); + printf(" -m, --mtu= path MTU (default 1024)\n"); + printf(" -r, --rx-depth= number of receives to post at a time (default 500)\n"); + printf(" -n, --iters= number of exchanges (default 1000)\n"); + printf(" -l, --sl= service level value\n"); + printf(" -e, --events sleep on CQ events (default poll)\n"); + printf(" -g, --gid-idx= local port gid index\n"); + printf(" -o, --odp use on demand paging\n"); + printf(" -t, --ts get CQE with timestamp\n"); + printf(" -c, --chk validate received buffer\n"); +} + +int main(int argc, char *argv[]) +{ + struct ibv_device **dev_list; + struct ibv_device *ib_dev; + struct pingpong_context *ctx; + struct pingpong_dest my_dest; + struct pingpong_dest *rem_dest; + struct timeval start, end; + char *ib_devname = NULL; + char *servername = NULL; + unsigned int port = 18515; + int ib_port = 1; + unsigned int size = 4096; + enum ibv_mtu mtu = IBV_MTU_1024; + unsigned int rx_depth = 500; + unsigned int iters = 1000; + int use_event = 0; + int num_cq_events = 0; + int sl = 0; + int gidx = -1; + int routs; + int rcnt, scnt; + char gid[33]; + struct ts_params ts; + + srand48(getpid() * time(NULL)); + + while (1) { + int c; + + static struct option long_options[] = { + { .name = "port", .has_arg = 1, .val = 'p' }, + { .name = "ib-dev", .has_arg = 1, .val = 'd' }, + { .name = "ib-port", .has_arg = 1, .val = 'i' }, + { .name = "size", .has_arg = 1, .val = 's' }, + { .name = "mtu", .has_arg = 1, .val = 'm' }, + { .name = "rx-depth", .has_arg = 1, .val = 'r' }, + { .name = "iters", .has_arg = 1, .val = 'n' }, + { .name = "sl", .has_arg = 1, .val = 'l' }, + { .name = "events", .has_arg = 0, .val = 'e' }, + { .name = "gid-idx", .has_arg = 1, .val = 'g' }, + { .name = "odp", .has_arg = 0, .val = 'o' }, + { .name = "ts", .has_arg = 0, .val = 't' }, + { .name = "chk", .has_arg = 0, .val = 'c' }, + {} + }; + + c = getopt_long(argc, argv, "p:d:i:s:m:r:n:l:eg:otc", + long_options, NULL); + + if (c == -1) + break; + + switch (c) { + case 'p': + port = strtoul(optarg, NULL, 0); + if (port > 65535) { + usage(argv[0]); + return 1; + } + break; + + case 'd': + ib_devname = strdupa(optarg); + break; + + case 'i': + ib_port = strtol(optarg, NULL, 0); + if (ib_port < 1) { + usage(argv[0]); + return 1; + } + break; + + case 's': + size = strtoul(optarg, NULL, 0); + break; + + case 'm': + mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0)); + if (mtu == 0) { + usage(argv[0]); + return 1; + } + break; + + case 'r': + rx_depth = strtoul(optarg, NULL, 0); + break; + + case 'n': + iters = strtoul(optarg, NULL, 0); + break; + + case 'l': + sl = strtol(optarg, NULL, 0); + break; + + case 'e': + ++use_event; + break; + + case 'g': + gidx = strtol(optarg, NULL, 0); + break; + + case 'o': + use_odp = 1; + break; + case 't': + use_ts = 1; + break; + case 'c': + validate_buf = 1; + break; + + default: + usage(argv[0]); + return 1; + } + } + + if (optind == argc - 1) + servername = strdupa(argv[optind]); + else if (optind < argc) { + usage(argv[0]); + return 1; + } + + if (use_ts) { + ts.comp_recv_max_time_delta = 0; + ts.comp_recv_min_time_delta = 0xffffffff; + ts.comp_recv_total_time_delta = 0; + ts.comp_recv_prev_time = 0; + ts.last_comp_with_ts = 0; + ts.comp_with_time_iters = 0; + } + + page_size = PAGE_SIZE; + + dev_list = ibv_get_device_list(NULL); + if (!dev_list) { + perror("Failed to get IB devices list"); + return 1; + } + + if (!ib_devname) { + ib_dev = *dev_list; + if (!ib_dev) { + fprintf(stderr, "No IB devices found\n"); + return 1; + } + } else { + int i; + for (i = 0; dev_list[i]; ++i) + if (!strcmp(ibv_get_device_name(dev_list[i]), ib_devname)) + break; + ib_dev = dev_list[i]; + if (!ib_dev) { + fprintf(stderr, "IB device %s not found\n", ib_devname); + return 1; + } + } + + ctx = pp_init_ctx(ib_dev, size, rx_depth, ib_port, use_event); + if (!ctx) + return 1; + + routs = pp_post_recv(ctx, ctx->rx_depth); + if (routs < ctx->rx_depth) { + fprintf(stderr, "Couldn't post receive (%d)\n", routs); + return 1; + } + + if (use_event) + if (ibv_req_notify_cq(pp_cq(ctx), 0)) { + fprintf(stderr, "Couldn't request CQ notification\n"); + return 1; + } + + + if (pp_get_port_info(ctx->context, ib_port, &ctx->portinfo)) { + fprintf(stderr, "Couldn't get port info\n"); + return 1; + } + + my_dest.lid = ctx->portinfo.lid; + if (ctx->portinfo.link_layer != IBV_LINK_LAYER_ETHERNET && + !my_dest.lid) { + fprintf(stderr, "Couldn't get local LID\n"); + return 1; + } + + if (gidx >= 0) { + if (ibv_query_gid(ctx->context, ib_port, gidx, &my_dest.gid)) { + fprintf(stderr, "can't read sgid of index %d\n", gidx); + return 1; + } + } else + memset(&my_dest.gid, 0, sizeof my_dest.gid); + + my_dest.qpn = ctx->qp->qp_num; + my_dest.psn = lrand48() & 0xffffff; + printf(" local address: LID 0x%04x, QPN 0x%06x, PSN 0x%06x\n", + my_dest.lid, my_dest.qpn, my_dest.psn); + + + if (servername) + rem_dest = pp_client_exch_dest(servername, port, &my_dest); + else + rem_dest = pp_server_exch_dest(ctx, ib_port, mtu, port, sl, + &my_dest, gidx); + + if (!rem_dest) + return 1; + + printf(" remote address: LID 0x%04x, QPN 0x%06x, PSN 0x%06x\n", + rem_dest->lid, rem_dest->qpn, rem_dest->psn); + + if (servername) + if (pp_connect_ctx(ctx, ib_port, my_dest.psn, mtu, sl, rem_dest, + gidx)) + return 1; + + ctx->pending = PINGPONG_RECV_WRID; + + if (servername) { + if (validate_buf) + for (int i = 0; i < size; i += page_size) + ctx->buf[i] = i / page_size % sizeof(char); + if (pp_post_send(ctx)) { + fprintf(stderr, "Couldn't post send\n"); + return 1; + } + ctx->pending |= PINGPONG_SEND_WRID; + } + + if (gettimeofday(&start, NULL)) { + perror("gettimeofday"); + return 1; + } + + rcnt = scnt = 0; + while (rcnt < iters || scnt < iters) { + int ret; + + if (use_event) { + struct ibv_cq *ev_cq; + void *ev_ctx; + + if (ibv_get_cq_event(ctx->channel, &ev_cq, &ev_ctx)) { + fprintf(stderr, "Failed to get cq_event\n"); + return 1; + } + + ++num_cq_events; + + if (ev_cq != pp_cq(ctx)) { + fprintf(stderr, "CQ event for unknown CQ %p\n", ev_cq); + return 1; + } + + if (ibv_req_notify_cq(pp_cq(ctx), 0)) { + fprintf(stderr, "Couldn't request CQ notification\n"); + return 1; + } + } + + if (use_ts) { + struct ibv_poll_cq_attr attr = {}; + + do { + ret = ibv_start_poll(ctx->cq_s.cq_ex, &attr); + } while (!use_event && ret == ENOENT); + + if (ret) { + fprintf(stderr, "poll CQ failed %d\n", ret); + return ret; + } + ret = parse_single_wc(ctx, &scnt, &rcnt, &routs, + iters, + ctx->cq_s.cq_ex->wr_id, + ctx->cq_s.cq_ex->status, + ibv_wc_read_completion_ts(ctx->cq_s.cq_ex), + &ts); + if (ret) { + ibv_end_poll(ctx->cq_s.cq_ex); + return ret; + } + ret = ibv_next_poll(ctx->cq_s.cq_ex); + if (!ret) + ret = parse_single_wc(ctx, &scnt, &rcnt, &routs, + iters, + ctx->cq_s.cq_ex->wr_id, + ctx->cq_s.cq_ex->status, + ibv_wc_read_completion_ts(ctx->cq_s.cq_ex), + &ts); + ibv_end_poll(ctx->cq_s.cq_ex); + if (ret && ret != ENOENT) { + fprintf(stderr, "poll CQ failed %d\n", ret); + return ret; + } + } else { + int ne, i; + struct ibv_wc wc[2]; + + do { + ne = ibv_poll_cq(pp_cq(ctx), 2, wc); + if (ne < 0) { + fprintf(stderr, "poll CQ failed %d\n", ne); + return 1; + } + } while (!use_event && ne < 1); + + for (i = 0; i < ne; ++i) { + ret = parse_single_wc(ctx, &scnt, &rcnt, &routs, + iters, + wc[i].wr_id, + wc[i].status, + 0, &ts); + if (ret) { + fprintf(stderr, "parse WC failed %d\n", ne); + return 1; + } + } + } + } + + if (gettimeofday(&end, NULL)) { + perror("gettimeofday"); + return 1; + } + + { + float usec = (end.tv_sec - start.tv_sec) * 1000000 + + (end.tv_usec - start.tv_usec); + long long bytes = (long long) size * iters * 2; + + printf("%lld bytes in %.2f seconds = %.2f Mbit/sec\n", + bytes, usec / 1000000., bytes * 8. / usec); + printf("%d iters in %.2f seconds = %.2f usec/iter\n", + iters, usec / 1000000., usec / iters); + + if (use_ts && ts.comp_with_time_iters) { + printf("Max receive completion clock cycles = %" PRIu64 "\n", + ts.comp_recv_max_time_delta); + printf("Min receive completion clock cycles = %" PRIu64 "\n", + ts.comp_recv_min_time_delta); + printf("Average receive completion clock cycles = %f\n", + (double)ts.comp_recv_total_time_delta / ts.comp_with_time_iters); + } + + if ((!servername) && (validate_buf)) { + for (int i = 0; i < size; i += page_size) + if (ctx->buf[i] != i / page_size % sizeof(char)) + printf("invalid data in page %d\n", + i / page_size); + } + } + + ibv_ack_cq_events(pp_cq(ctx), num_cq_events); + + if (pp_close_ctx(ctx)) + return 1; + + ibv_free_device_list(dev_list); + free(rem_dest); + + return 0; +}