From 0cb4aa5e064568d16f850ced3e8236a9a2477d32 Mon Sep 17 00:00:00 2001 From: xufei Date: Mon, 9 Sep 2024 14:41:36 +0800 Subject: [PATCH 01/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 97 +++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 tiflash/tiflash-mintso-scheduler.md diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md new file mode 100644 index 000000000000..3a59817dcb06 --- /dev/null +++ b/tiflash/tiflash-mintso-scheduler.md @@ -0,0 +1,97 @@ +--- +title: TiFlash MinTSO Scheduler +summary: 介绍 TiFlash MinTSO 调度器。 +--- + +# TiFlash MinTSO Scheduler + +本文介绍 TiFlash MinTSO scheduler 的原理与实现。 + +## 背景 +在 TiDB 中,对于 MPP query,TiDB 会将 query 拆成一个或多个 MPPTask,并将 MPPTask 发送给对应的 TiFlash 节点。而在 TiFlash 节点内部,对每个 MPPTask 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md) 之前,对于每个 MPPTask,TiFlash 都需要使用若干个线程(具体线程数取决于 MPPTask 的复杂度以及 TiFlash 并发参数的设置)来执行。在高并发场景中,TiFlash 节点会同时接受到多个 MPPTask,如果 TiFlash 不对 MPPTask 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPPTask 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数也是有限的,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会碰到无法申请线程的错误。 + +为了提升在高并发场景下 TiFlash 的处理能力,我们需要在 TiFlash 中引入一个 task 的 scheduler。 + +## 设计实现 + +如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: +``` +if (used_threads + mpptask.estimate_threads >= threads_limit) + // task need to wait +else + // task can run +``` +尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: +``` +mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; ++--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ +| id | estRows | task | access object | operator info | ++--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ +| HashAgg_44 | 1.00 | root | | funcs:count(Column#8)->Column#7 | +| └─TableReader_46 | 1.00 | root | | MppVersion: 2, data:ExchangeSender_45 | +| └─ExchangeSender_45 | 1.00 | mpp[tiflash] | | ExchangeType: PassThrough | +| └─HashAgg_13 | 1.00 | mpp[tiflash] | | funcs:count(1)->Column#8 | +| └─Projection_43 | 12487.50 | mpp[tiflash] | | test.t0.id | +| └─HashJoin_42 | 12487.50 | mpp[tiflash] | | inner join, equal:[eq(test.t0.id, test.t0.id)] | +| ├─ExchangeReceiver_22(Build) | 9990.00 | mpp[tiflash] | | | +| │ └─ExchangeSender_21 | 9990.00 | mpp[tiflash] | | ExchangeType: Broadcast, Compression: FAST | +| │ └─Selection_20 | 9990.00 | mpp[tiflash] | | not(isnull(test.t0.id)) | +| │ └─TableFullScan_19 | 10000.00 | mpp[tiflash] | table:a | pushed down filter:empty, keep order:false, stats:pseudo | +| └─Selection_24(Probe) | 9990.00 | mpp[tiflash] | | not(isnull(test.t0.id)) | +| └─TableFullScan_23 | 10000.00 | mpp[tiflash] | table:b | pushed down filter:empty, keep order:false, stats:pseudo | ++--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ +``` +上面的 query 会在每个 TiFlash 节点中生成 2 个 MPPTask,其中 `ExchangeSender_21` 所在的 MPPTask 依赖于 `ExchangeSender_45` 所在的 MPPTask。假设这个 query 高并发的情况下,调度器调度了每个 query 中 `ExchangeSender_45` 所在的 MPPTask,则系统就会进入死锁的状态。 + +为了避免系统陷入死锁的状态,我们引入了两层 thread 的限制: +* threads_soft_limit +* threads_hard_limit +其中 soft limit 主要用来限制系统使用的线程数,但是对于特定的 MPPTask,为了避免死锁可以打破这个限制,而 hard limit 则是为了保护系统,一旦超过 hard limit,TiFlash 可以通过报错来避免系统陷入死锁状态。 + +有了 soft limit 和 hard limit 之后,我们需要约定允许 MPPTask 突破 soft limit 的条件。突破 soft limit 主要是为了 +.如果调度器不考虑 MPPTask 之间的依赖关系的话,可能会导致系统出现死锁的状态。 +TiFlash 原有执行模型 Stream Model 是线程调度执行模型,每一个查询会独立申请若干条线程协同执行。 + +线程调度模型存在两个缺陷: + +- 在高并发场景下,过多的线程会引起较多上下文切换,导致较高的线程调度代价。 + +- 线程调度模型无法精准计量查询的资源使用量以及做细粒度的资源管控。 + +在新的执行模型 Pipeline Model 中进行了以下优化: + +- 查询会被划分为多个 pipeline 并依次执行。在每个 pipeline 中,数据块会被尽可能保留在缓存中,从而实现更好的时间局部性,从而提高整个执行过程的效率。 + +- 为了摆脱操作系统原生的线程调度模型,实现更加精细的调度机制,每个 pipeline 会被实例化成若干个 task,使用 task 调度模型,同时使用固定线程池,减少了操作系统申请和调度线程的开销。 + +TiFlash Pipeline Model 的架构如下: + +![TiFlash Pipeline Model Design](/media/tiflash/tiflash-pipeline-model.png) + +如上图所示,Pipeline Model 中有两个主要组成部分:Pipeline Query Executor 和 Task Scheduler。 + +- Pipeline Query Executor + + 负责将从 TiDB 节点发过来的查询请求转换为 pipeline dag。 + + 它会找到查询中的 pipeline breaker 算子,以 pipeline breaker 为边界将查询切分成若干个 pipeline,根据 pipeline 之间的依赖关系,将 pipeline 组装成一个有向无环图。 + + pipeline breaker 用于指代存在停顿/阻塞逻辑的算子,这一类算子会持续接收上游算子传来的数据块,直到所有数据块都被接收后,才会将处理结果返回给下游算子。这类算子会破坏数据处理流水线,所以被称为 pipeline breaker。pipeline breaker 的代表有 Aggregation,它会将上游算子的数据都写入到哈希表后,才对哈希表中的数据做计算返回给下游算子。 + + 在查询被转换为 pipeline dag 后,Pipeline Query Executor 会按照依赖关系依次执行每个 pipeline。pipeline 会根据查询并发度被实例化成若干个 task 提交给 Task Scheduler 执行。 + +- Task Scheduler + + 负责执行由 Pipeline Query Executor 提交过来的 task。task 会根据执行的逻辑的不同,在 Task Scheduler 里的不同组件中动态切换执行。 + + - CPU Task Thread Pool + + 执行 task 中 CPU 密集型的计算逻辑,比如数据过滤、函数计算等。 + + - IO Task Thread Pool + + 执行 task 中 IO 密集型的计算逻辑,比如计算中间结果落盘等。 + + - Wait Reactor + + 执行 task 中的等待逻辑,比如等待网络层将数据包传输给计算层等。 From 89cf328c2444b949c172f43bb2684b9ca41358e0 Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 14:46:02 +0800 Subject: [PATCH 02/21] save work Signed-off-by: xufei --- media/tiflash/tiflash_mintso_v1.png | Bin 0 -> 120608 bytes media/tiflash/tiflash_mintso_v2.png | Bin 0 -> 194219 bytes tiflash/tiflash-mintso-scheduler.md | 18 +++++++++--------- 3 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 media/tiflash/tiflash_mintso_v1.png create mode 100644 media/tiflash/tiflash_mintso_v2.png diff --git a/media/tiflash/tiflash_mintso_v1.png b/media/tiflash/tiflash_mintso_v1.png new file mode 100644 index 0000000000000000000000000000000000000000..964dcc6daacfe342636db3a12a2b01b1b82b6af4 GIT binary patch literal 120608 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

qCBn8GXG9%o?EGt6-U&UrM>IIZ0g>Bk=)(~|)V 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

`-auKehvy> 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%0A~#;MnY;VMB}D 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 M8`{?kubBt`AEo=LumAu6 literal 0 HcmV?d00001 diff --git a/media/tiflash/tiflash_mintso_v2.png b/media/tiflash/tiflash_mintso_v2.png new file mode 100644 index 0000000000000000000000000000000000000000..28d49cf7ab866904361b9e34c8ab6d8faea3e1f7 GIT binary patch literal 194219 zcmeFZc{tSl+c#d9t6W(tWH*&cNRyorlZa%^TErCDL-s8u3E3-K*0Jx*WzRYxCfnG_ z9uo#xhm0}H^BHyB_x-)^=YEdgas2-M{#D7mm-Brtuk&@D=Y;F&s53M0FdRE}j9KHZ zs{XNKe|j7{cEb3tlfX|%pbaSS$8mRk_1nkFF?=h>j-5ZIp{i`?WAUTeKb~VWS&7ss zJqKb7+UT-o&$<0QTRHE3noq%*t@kebCihgA00AJJzXxw)uD zpULIDEb_;YPb4?E`o7hl93!fd;*u|ImSVxEt+D_XPn~p#r_Q?h-UdF+U@xP_M*IEj z;mo1$tnH>q#$*zbU(s*(sxqAVvR21~?_+=m-i|Uz7+lZU3&TKppb%;sREExuQi0np z%RvMGv?JM__>20LDf0lGjjoFkpyEh5+c_NPNmi0Cmk^xf@y`SAPKB80pY4k}UQHQb zesyJF##N+9oMyDHYte@UeGdUHBC#g9qwZb1v(r(kKb(-tgIHNzw10AT|eig9VHsV+unxTj-?&aRR4cHMGDM8{75rHngVZiDd#Ra13Ec?W$nw2fU=JG^_+2aVu@e0g+lO7*iSt~t zptFq*W}P&oMb5&WbAxR(h zEuF%p#{*!gCB;OZG^WfwbogbhYtCsV?zJf%17kc}agV zkpohBoBk$)kC37J4IC#AUOTINg^c=JA%hvVwHAon+Z zxFznqyRcIa1OLM;I)M{SY{l|iyNuDkv3Vzj0A+KvJjKR%^lZ>5hg_XUM{CCZ%bG~w z5@+rNaew2G;?jDvG{^=4>;QCIO8>G9O>tB1a?>#L|EAhoF;H=jxApP0)*&&a1IJ_k zm_0Sh$3zV2Y(nb?#{mi~SMfSLjj>ov%EA*)c*fyiIum}wjny|>h%0dFFvZS0t(ryV4gznH`fwS)X*?l;NSJh zC4;l*J`eCRqRicGW$`v7PUru8&c|>PzufbeN)&?Cr7stqOqK}Hy%B>V|NRZ7G~+9Q zC%>U@XKv#!yu15^>svbY^T4S%x}x?kfbw!Hbn>hYWU1_qnYj$Ag9I{Tl_0nL_eF-6 zPB(8YFqW==pjW}i`e%A7)F`C;tqL0&496Cil-Lb?3oxpc=L8aZ>qV1w}HRE0(rxm-=i>FE7g))vy*@ zf9On{nc_b=bBku0qI4)C(PQOujd1YtG==;}3xqot6nM2(1D1CUN{8D<$9}nHX&nWZ z)Vh*)0(HtvU&fh<&<}T}Dl|Fx3)RjO_r%1+LQlrjg&nZ@A(R4&imT>)!7>9`2jD)s_4GOKfp>y|%V$H{ zkxUsSVbPh}Y@PX98C$5KZ>)3BBKxGE=ftY10(~|0BbNcro6Ie9vpTOpF*U0jB6^DL zj?~JG>14RM$wCekW*%7WoG9tth7)>Jb~hSb#0TDXK%e3M;*oavGnz}j>6335Q{Q69 zT_VXP*dV;9{}|0`2W>6xnLYu0mvMv7wZh4Jqhk#Twa@G&16Q6~h+tNSW8=A>&mYhg z7HdkUPb~ALnvcDSUIOjkb|-wf;I}*@yAr3%I#2*7eV7fj1s74*6HNB)wi3m%Yi-Q~ z_WnxIla={Ac8xDk@U8yWvw(DMPbGRiIP#}~PDOWHzlslxjomZLu*(rbI7mVc^EH!1 zAb5XikM6FSl@Wsm1H|T@;!h=`I3hIxA308dAIPp3c^7)aspkSnT|py_M)R@uBAOI} zOVbm+=ms0$p5oJPB5_JovwV{_`Wv500MDZO{P9Vj6Hau!8#C+Gr3Wn|nqe5-WLeG( zm?o$BjhFF3?luU^upgakLFMhb&dEEUkrwwxdcyt0eOD4@Ca=Uwcz4F|Ywj@{NTDRM zwo`4jfas`4!GnY*Nxy@W*WTs9p6KH>4ZgF}2fN?noIG$_@DpCNP10eSw&@e#y$e6G z8M8~@Fh48*eB!+%W%O`l3N@#RY^n^i2&^H0jaXSAjH3JJO=2@c6$)Mx9^}V$=k`+} zd>Y*TOk1=l>!1Aoiz#4hrX?DEx5d_E^$ZNy_(_CYgFMc3>dnszk!nQL_nQM``652j zYKUst?4Y#Ih)I4u-iH3sW_TwOX(((T9JG^8eU{0gg6;t#DF6sMVLS<%qN=Oy5AZ{W zH%n6Sd&^vMoECB~uPebHe**N~_FNf!ngCy(VewlTRTKy=c&;>>tl+*Rqc**;5gpr( z*f<5DCMX4pG*fADuwZCUZ=1Z#;b90FsTJ89+8$8hjo^{*{#?JhbH-!+L&X`G+yD?9 zsNJ8D##=Y5nxiu&S`spRogME_6jgbRMDSCqyaot4F=OG?!*RCRVV&AOW@6!j(R6S>1V3v|m(G&UOEZ?cDQ<%hk1m4Q` zN>uli2Me#QUeY4i>z-F5mcU;J@@L$PzmpayhYURO4s*4p;qL1nT=VCpyL;%&gD*wi z@!2crP4`b-9+vFqpmgU(rRVi&7Q&#OwPzvJb43XQJT#@rX_XLtbrd#XHm~A0RG;25 z=MfK>tbQe$HX2r;;koC5e+@4vzHWZ8)_7&qn#9?YX?lwMb?KaG^H0v*t^)diNHw#H zxZMNP5L!2HA3-~zVS|833$^K$Ojb@!O?1At7-=CZDs6>1I+1lgj=n(yL+F_tMEIR~ z*u246?Y3U|swd2)!Ie+U$%1Eo?JSh{Y{dxE*Fjj({nswKOQ@}B*AZ13FkxZ29BO&1 z%q`6gP>2py<>BLs zf6*V2E=2*N>u`#+;|G`L-;5$ut6Bj|ocQ$gtRy!UbwlvgoT`|9Z4;N?@^`ItnNjaX zKUYC@rgSMf2}-+&=?nzoPcfWxXB_oh_5*bf^us(T?Ump?AFiXwbMxW5t62aB^T={8 z6qOVj)83sKFSEG0)MvreV18UND=8FyK(C#0-1>)g4!3*Y51IwSSXMn``Ze*>AqTNSI#{-8m^!R->K2O+h! zhyX8Ur-{ns2JcOa^U(>hbLC2x8_ZAo(9rqJGmYI_fCpY5pKhwxmVztCx#*5WsuKYd z`IIp!e3~3|t_=3`06dF&x?loJ;<3@n)m0*2ip{9%FV5N%b1ceN<4?JU@{y#S%_~lx zQdPIM$oi|9r_rg~t81}M$Brn%4oyj#`D;(_? zRFB!Z02UzB8(rAG*Krj2gpFo%)BgZG>g3Gb3gq1-ut4qEFZf%Ga|-^XwLRep0w=g} zYJcs$->HW$HWx;umv@+mUdnE+=RTl+TClnrLPCPr!Ms4ks#-=!=k=d&5FQqR5S|5*x2ih`^FX zgR}k6#K>GMEys(b{LNFyL>awvHb*Twe~w%(7+VgC70}dp_+nXu@2V+;Y8UL1@o>2U+a8l_mB-cJ@ZlSY7FHFUSg&a&_(iDV6=L101SjUum4n zG5b2DU0L_)AOMQff`V7PU6waC#||T2ce-SV7qxZ)vFFa3_7gG(priF}%%h_ni+_LL zS%jKecsdI4qps`fV_4|2p$bi_YGS$+bZqKfUJypw{S`E3#nLNDRG0MR?cMYpn@@1Y zF;@>PGq%uo!m|HKS6ps=uO`d4rrEe(SHrK2(6;`RXN&? z;}wqQ>kLuJ?{>HQBVkPZgz5HFJ$E_WsmnJh&Hf5@Ti;rJWgnV*9z1tw@s18n&iQ&9 zE8G8JR?r=ZwpK^*7%7m+KhAS5KBMdnZkfoC>6ha?bwP{YO!}3>{7< z$Yz~n28l*w=(Wv*pDq=ON+r!WRtlZ_Z889k$F2osPOEi$|bcgpg-zrn&E?LXwuv zmF`a_Ks2cP>c4mUR>cDBHJ>TOE=i(i;mgDm5lP-Qn5IsDz+w5h695qN?V65J?=Cua z`WZ>sz_vT8p(*L@!zv#8jcGN?#>3bL4@vmpcOE2C)IC);Kn<=u+fM4hLmj@`0cKvy zXUCZVeK}S(U0Uy?$RO%Ny6*?}6ipAp76uYkiK9!*^0)4J=f_MO!t$!p=cu`{a0?RP z7u5gyeX0ObNXsQ@u&MTV%qjmhRvwgZXD&cv5Q*4l(!4#7;Hy1Diz@v&x=M;4hV#0c z$i+K^Ig;656 zB?;O@=SQp>@7rSCy`7J7L^kV?iKAcFBpknYFCxN1fjytx&wgzU?3pN^;m1W8FL%n) zh`X}H#gixN&K}G~nwSoOQ+B??vLADQSq1y+?U>1%S2m_At`Ieegk`{2v3SY6qfhCi z3uq&R?+$b(rfF?|kO$smk#+Of=4%HQp-DRPWQa;=M$+&zBO~c%3ej<-+20$#5#OX{ zjR&Qd10EZbsrsf3@YoFggKLQy)Uh!c9!Z{Y*kbLC;IU6f4FWM z(HUNj0?@c#dsM1>im|M8Q~kc@(Sa86py*2AK%E&QG2Os{M1lublM>;cMXFTF^5A@X zm_%rdg!{x$|MUW6$QO0BzQn}_cWjB@>!He%iNl+-8(%!?G?Os5B-K50stFwf zr;sB)W4q&sIWI4T@nn1x)yUcT_Yvqor+)i$25dk4pfH<%$|A==XKDK0tAG6Xi%!Ix zHgl?sQ~oH#{{}xG^R!KX7GEDI{?Qeemwuf2z)lD+}6%@_f6m z7h+Lafg&>~QVXA)BWPL``tj8vsKAc2#2p7Pv7c>82kTU0%@8QzG1SP!#Ql9I*U^zK z|Fb+i!7hls8c;@+vRVag4*PhNVnvuJ6xXXaaS; zFGv03LWC~-4z~vcch+@H!3OI#b_a(?&se~JpX7l*rq6q6baFwOLP}(Sxw(q1JI~oC zbZoU^J5chh8fX^`E!5oFMR(=VrMxW!gA$((x)0)wXgK=Kq z)=2dG_{xr#xc+lhey;1=n{|`&0nV6|$`{mOY-A%lk(|UE`&rWJ7M$b@eZQTi`@w^} zf_F(YnHjP>vc#NJZ^uO+Hiy~1oio+@#w8`!K{{*3&N5+74e6qRRt^0R=|O}TsAmS| zZPxPQjZXhekh;V|4@yAcf9~Bpx*8wXIOq--Qt|Z-x}CvI=+CXS?buG_xTdgm$A6Cf|IEqeU*&=@6k*X#D>s8exj0Jq`P_x9}ix%)ufX?ZLSJ}Z!O za1?KlklU(Q?LuGrtycoj@)#MVrVGP+N&&?8&1PjyO#h@zr>Wb^iUYCxlYNEtZ=lo; z?t2hQA@Ln?5Kz}USg?arAf@h^eGZ6h=b?iRJZw{fEPmfmO231mZeeA6{sMZET=Jx3 z>6VE2#yy9l7}NIg^pRu^Se4!0iTsvKNzCa%nid@|%~XH{s*?}*`&WK0se2FH;T%a( zIb}o_2{la0J1a=n#RVTHJ-yMqvzo!=V#3O+Y-Z|&(9Mg>f4T+x5T1)2AAA#Efd=$h zpbqlx;9%3$R2M?n4${I7^YYl6l7IY>u1q`H_!C95lhJdfb^0l(0IW2tcjoT1Psv!( zBGA2$D@Q#i;frX!Q2;O`#GjEk3&0|UAdcNHXRL5VP7{lf2X!|-2uhR$b-0X~2>12h zlITPbi+9PI{)+=90^=Wqg5kgi)yq}CKR&;LjSX(UD(-WzZ(*#f6=mmfaJ`)c*?!=4ewC-@_m&mU%TI@}0kPkQ;%i9jF9Y1k&EhwwLuiR? z>nXqKuMj`NyXfTWNr9d*4m@FVH%;_|5kcRhP&<$E;`k`QSwYQb#YN~eK=Atqk*0{) zU-09KzgLWDdX6)L7)1pT{5)&YDJjbH=0wv+Osc~OZ_&nshY(;_DN0VsZ-HlvUbOrZ z2qNAm1?@bmM(bMk#4e6=65HtalXHfUL9NI+s4&3kKaGZNitv-7O}ZAKupYpDdwXc^ zo(JqhnQ4No0HV&Omc24rj&G+IQzFgpT-t=s`$TG%*%AGp88Axsew0@UJrGIHT?6w_ z2aVqRy6+&z8Sy`8PaS+_cUoS%`rAf+R95iAbORQkmU$FGFFBHYO;%n*dt*iEyB2^1 z>iW!GK7o?}B=C8_1PTeG&NNQhe|g)Q?2IeJ2#4*11W5A-=q76DCUWGv_4x)$3*26p z_-)hE5t|)TuL$X$Sidh`k%j%;cFW)E^!B9pGFufsGAG&VN`zS zHro|=ljnkTR*JiUAE~~?BPJ(g|5|?0@M>QpMn7kl@UWrp-0S@y=UFi+pm}g9YJ2Q1 zg!&4hqHE<+oTDz#ml2y^2MNnrEEFHWLV-7N*y5{xryqR?c>F}Z#q?B8X z>?+t;8fWag3=sdH2g1uW+W-2U{l|_%VxE_{e;yFmN)K81DYOelL2e%^`9MeaEfoC> zmUYY@$8N`EahUnp7}>(e&k3VggpD(t|nKvP)1HV+#W%dg;?ZF6^!OV zYAm-+A$6VNk|WeM0KcBsO{$5VL+VbnlZFT;NDCD#nzNC)gD=^FnJKWjB_Z2TVlT=1 zTr`SZ{`%O-Uv)sk6EPqYb$|jW$0W}V+#O!ERcAKKCT63~o-xnw`)oz>H(9~Wo#$aC z&3A-!f?AeuN*~GbERhu=AfBSW0_6S_@}aHB&z0d=FK7Rmo2Si~cVD+DWKP%#KRka( zip+{b^cK|B-JdD5k_a99JFC5@WW&QTC89yVD%3Bp%?E zm9eaI?indfc%T6SXt>1bOWq^L7gfLL2mttAo}_`?Q-yd1L)if~hRv5_TEPjHx{6b3 z2-EIB6jgTnLnSBV-upYY^14bP~^4fPPb; zag{eevf1b8w3il}i%D&G`T;i7h$2exUe6=XL7F~dyRE*;ZO_BoatC*N-OVIbabrx3H|^jxDDDoYUSwP=CWqbWeJPjuvZpq@6ebcBhGM@|-5b)g=`YH2Y%Bv$%2F zI7KS3QYYa(mjiIdf{OuiJDoomztFOr+eLNeS!hJQRvCv%EWp3ok;cxJaLcWb7z4Gl z2czydN$vXjjp4fJ{*Qk36XR}fNb}LAS*^V^t*Jl#xO#vDgnD~{P zPO9!$lqFMAc3*T&?z{Y@n6<@XcPUvAi2{lf{r!N!-1|cZzQXwyWb3D}8`fUrk2=nUMQX1$xj93Ci&!vga@@Oo>w!%i^yc5Ibzs2by-tLw=&*bcbgsJmCk^y()-9&Ik=R{*v|06%tAk3XXlW`ekr zeE`=cs&!3*6S8t@35AHmh#&h#HESbX1Uh$>C;&;8n=BB6#y+NY8v;Nt@T;t^U!419QXm4c`@C;!X+JV9#Lh zx&SUx-L@y;&;ftGx9L@f(g07Y%|Nl|gk+g<`6Cri&%9}`kdFS;o*RQcAl#B7&^+Dg zg5h$B&IP)I+E?wTwLN#Yawgz6%LAUX(Q0Q;+JjcJXm&?`&tHp~f3vpan-P#pgMg-K z>TlJJR~>Y6a*_hvx|Z1lQUj>}(6>XgvDstY$=FW=Ehf4 z@DU-^PX0eLrM>4<(X(o+)M-?!3G6QXa1J%diu{_G9Y1Yy7;``+yD)}>f{a#t@ z&9y0tc3hz9p%RIX>@%__<+)>i;_#yz+0C?ZyEVJo-{i;DDqKY$E2ur8AGJE(cF=dC zFMpI*;QSsu5bAl^w|!mGZFQ9kBDp+Lz?6-p9{BiW`Z~4N_U&;P2E*XWVhvOZrV*8M zL8WT^Bg}34*yK!0&n4B*l@CZ~6#DfP1A!WXupP;!c@Z4_tKY=fV1xB3je!6%I_J?- zQz>PB*-*1yW3_2QG<6d;IsACkowSv@!a_r2q`cp8XMVg;_j4$*$b;&(zizxQ&^Qxe zGO+ZRAjFOyu>a_ErOf%EGK}1BGJN!PX6hu$kz(1A+6UQAtw; zI$FshtKKVj=!(Ye3koRsRF~#N$O}1h=>D;V{19jk%mw})641=H{*~w^z`qV&&qiSE zzmPV~1Og#0mt&`P>uoJ0M=fp^o-bRqDRJtr9ZG@)Y8*oSphg?7UA*(+8ZzRGa*WrQ z8YRe!dS#{Dp6#p>@W$Qj5vI?XXnI=z_8SdYKKiL5xAltmuStpZJS(p4Xf(&J8 zk)S|Hr|j+2y+oAMCP^q%X90ATbapRN?r*Qt&4i(hUc|2$YQWY*-(ZEi`nN-eI@a8K z`NKtrknXQ$NNrcw1ymr~JE8aeBD4VJ(NW1nila*3`oj=Fd?B@8?5i=36xQX-?s^u z2qZpv^&M@- z7rD1dM9DRb>-T`;$$M35DGJEJYg)J=J5rVc#!#GQWa9r~WNHSptWQ%xGs>LidLnE} zTCt3yXUMLV4}B{ZWGQpLb%M6MhZDA=1F8PQqN{lLcDqZyvQ%Kz>`u}Wt%(Y7+OV9A zHyugzc!o(nChF^K_bCIfkUrO3%;bGrlpJ(_H7#AYMgR1BHWepDzsFq-TJ^jx+;OG> zSZP(hD)j^x(#ormF(FjhL(GBv6;We3=Jct2ox4uL_yzrA{8j4w49(AHCCWSwxgir` zPKWwa^8ybVj2$n(Hx5<{A?(?X+~ijWQ}ff+V6vAC%Bq)fncJxq9WV&(rt1Igrhq#s zrr3hW@F#8Y%KU>c?n}qNhWNz5$xc7EKO@0cr2@%7QMBvV3&!xLH)LbdhgBIjFxOc# z#&Kzg9ER=Rm$bq?t&?8lg~Vjd*WK=j?w`oW#f;rw?(<>3fP9F3hIWhMu?>m!cT7Aa z@gWBdqoxW&V~VM2Xn1a&w&HN2sdP@@?5JkUL>?ty>u<#u0bP2qgPBsMv zoCC@jvpZ}3&zN%2u<=a_RDSfHcMJ;;irb8ohn1x!y8?BnF*C~0uMW-pl-1w(u-N=p zUaz3t9#Bxbmr?jE?BvY+p7W9_`XBk5r{ zCDNIbDx1qBvRq(%iTt!z+t;MNk(uAqsL7qVX<;3pa@`$5Vojr8A8fDnGpYNL#4KbG z8%~(=Y%`yJ%M?i2>@~weniWF&9thKPQ~tl|rb}_rnRaBB6KXc4$hdxa`At?ZEX%oA zX=7)bk2>q_!Qf&QD-;-zkh#6KKcb^CyNsk^@2`U^6@{%m!M-P)SVG~q!yRyP%b!){ z3&$TuW4Rjjg#t7jJ8)?`G%&K7@b`sFdBIl$uJvSS-btUJR%4m+Pxzf&iL&-ps3{FSb_<(EFl^Tc*wisRHUZCUqM4O4f zpmMU!b1L1ls6BJEKVYT-_#IwrZARN+WF0ga!spi`*nbQ&G(V0A*GbzBQ{du`o{JKr z3~i@Ud*y&C=9(DX{#VbOfp*98t?xc9)Z|4rMM|$<4-C?Rr5+~z1Ue=ZKVi*kbkF^xpX6bgLg16Cs zuP-qSk$<^ovr8U|7G8T+p|94z(%hmBO&`7$X!h}yk0-K8*h|4!N%nvgChlQKt)$mp z-dU3IXp*%JI2bjN+G!9qDDl^F#xN|XP&Y}$VHbt{kV*2LqT=Ed3UM6VdpkrVx)W49 z9F?#Dc#n6%|J8e3NnxpSqpw9`}v`B%IFQpZX*Q%O{?JW zPxeHdB>lTa`#dxrp|Jx0XWYA{g5MSdW|OdQAtnB+o{~^lX6Hd! zfY%cie#LckhH>~+!Z9eIu)*^PJvk=+5UWMvV)9zeDBQ%RUBeuu0t-B_#u&{xXc~>P zwZzfSG+W*wR}27G7t<+zl;xv5-C)vCSlNAE-$n7{W>0eNql1e^ov2%o`*`EA&3PKy$Ck|KeV=i@tI6Um5JqDn(JI z`-y)~VfF@q0)XGO2~iFh1u;9T=2;ihr6+roVVCS@httHt^jjPOln4OO#VD4Yy}xxl z@VBl%=Z3`GuPCP1Y`MS3!0+)R&{sdS8-Q)S_BV~&<>S!& zpLh+pwKX?TVH6T)O_@j^%G5}5w|id7p7cFl-uJ_vv=6GJCFs!Qi07DlcF7mBn}!A;b=Ol@JrDL*dhc1tua3i&j$p@5ji00 zoqSL@vp0;ERD18ebudbnL$xlKo6RGaRy@I*snRhEYK!I7kAZ?nTvGs4y z<@)r%urn&?w=EwyWQU()x-&4^-rvY#tA!^($l$7Ik#} zY3~Ab$qf91<9p~)vz(V_e_&ZpeDAd4VO6B`sKfJnJ91vo=%gzUmLr$9YmGOVi^wt{ zUW+$~+!mlZtEg81ITLk8C9r9mUX=NlJ#DodVfq;9W&kOuhylEoeMM7uCT-SZF&H39 zK7Tn)zVHBykm<1{S;?ItU1^F0D3e5;382yzCYWly&~^AigaV_ zqM58W^E=(?APt~58V57PY%nd#Lm|6q^RB! zIPFgNzazF{*G~wr=L3I*s}{ z@!7>XYIrQ1Iw@_E z^`-PdwbB$Av{c5_C$Ijuilb;s3@amJ4JW2idt8BwcOmESj##trWiY-Gj? zqWC+M*92EaWib6t=Zg|_;6BuSj~+tTZrq@3enjrU%6nqJ&K$ea9twW2c*db=Z6oc4 zob`+=M^dzRU;o1k@jcdHm?Q=OoBlL+57~Yl=jOJsVRl-*gX+A0AR4Np=QV(b>rtOk zfdMd>g5NGxpk~JU`%8w-&~xlAw}ZD6%U@??1uvmIUJ&Zo=SVrpqmCfjFrfQ(((C{L zkPX6{_3g+LD*2r9D+l9NT^7Q$aY-Z}X{o~ItE5K7$S z6?jqlEm@&Xw?xy4SwFOguFo-`heJ|#8s3v4y%Km8Kfm)XDYw?AsLE+%tg7^Q!YInh z66Y-Bwooj?FnZrw&BEKdTXm=0!4+R%$!@l{uvE#VE`s^8hSYK*>n{SC_n7yIm{c&z zYeuvoq9a@hJjqXO4UOrA54u0-Iz#KJX4yXLa9wQorOal9Gc(Wu_#wiD;yHlr0eUup z-r3Rfrtk;5AuR(r{t0P6fvHO0pPO+aZ$*?8xh~DL?0z&^{xexvu)I;CW~Qfcp@Y92;D>B~6n;&Q+0=5BRl-R; z9wK_DN`_$Ox4l|Egnz%j_H2L0?VF58#5PtM-6R?`?Nr~-CSt5J>iTilZ1lT~2cg#F zAa8DizzL|h+U@_Y;;Z}-072#Wxb%b$@wH9#gT7C+F;_&#rXu@6spR3%Y>cdwFOwNl zH1rv&9+-mL)z- zouRV%R(d{t?|##!67D`#rp)ouuYp_eUYO-j3Q=pY@*_Oim#l4CoDS6yAMTB8d_bMH zJ#iwP&akv}YQS~Qty6l<8vB)>7W%B26sh!k{Xggai6iVKb*djs2F5-;U`*RR)yD%A zL;%SzLnA@%PVzjce63Orm9>7J8-1TN`cYT3$0BHxzHsY#KpNiX*(IfS`UI)U-?^@@ zB9)hv#o0cGW6hhf&y?MwPTLyYpWKqWJSvQy)|={)DWA-ho=lf3ZjNgREO?v_4fu&3 zId|0s)y4zqkdqL%oTeA@XTBUKXZn=m+EZ^5VsLZHgRqsQwFY~!eFA8mYV;Gt!>UO} zeop_m;4>F!7yx(5ydc)~dOJ{D1YQ*Y3rq6Y(x88)fLVu^F{g-Jfaly61^@9qbF&oc5*W3>4 z84$L)n*3dr69t!V#6k&Lx09*ai^w6zqd{VEkJ9MB0BtV3ql<$CM7eVVEpchW9zcO! zyr0{a`JXvZ_y;9)5esdo*yJ3o%Ym66{rLX7oYDbTL@+k(aG~_JE20mZ77*8Rjzmer zyT7VcI^c#lL?&4=aik_gJRwTUf7|Xd@YfwbH_ic27=J2?4*qr``v(BX20+0tRHT6z z@Q|x~80vjndQ%tzy!wabsH&5u@U#bQpKq^0wGdcCdYUs4Wdx)}3f1{4=|RFwxng!* zF@vtX7xx_mmX9scqNYME<%(xxBE&>}W~mzAWl}AaWVuYg@@K^p+{ZfPiS!fSmuCED zf!Wu=uJh{2-6>SL(@7>w7Qn>;6q?e~Tqp79H>0Mw4zPbbT#iA5;OeoLMt2|6+*SVq z+|QqPbOv%IuI@MHHN^=2h9*SDADN4P06J&wN7qi90S9z$bA0oW-{E?l#6$8r;~@^{ zT%xzBf5h+{6w&Jn(D+~NfD#4y>2CCi6*rj6hHZ-+AuTl(V6EP?5D~~Pj?PRi#I_Nm z1;7!ed7=Im^~4+bbzlM}i`+mWd`~k7Cu)Funaun-qqF!-Qel3|yl8#U*1dsCU8Mk+ z?;|3q#1bJ6393D#QsN0;1eEq&H&&h>{)FFO;HWmbVf+dhU>403xq6lM#J1buBNEHG z`@8d4KhQ(mq}EffimhV;-?(WC58|(WbbjTaPRr%7&ynN4Mxt}1AB+UAcRlsQ=P2N^ z86D`V9$h~HSoGv;-1jMI?|RFrw?G~_dVJsWI{*jLAl|F*$H8^S^>L-V`+JKHqu~%J zdh?u!?Pbk&C-3`*nhGm@bruEZCA+3B#I22KTH^|xYz2{x64u7PtWUi5FW~&}a$FF< zB&{zblk4tm`JkqL&{1+wj2&*73Ra?gf1Dq^524&PGM_GJ0vII`F45LOwgwJ84t92$ z`cx6t3UqUUah$hZGuT*{{QEg-4=|ViAJ2zGNF*d8zmzZ7SyZQ#^Gja8(X*)kiOhOX z9poDDkPEUASTrgvnpoN;?irsf>Haf*#DTX)x_EEUHb5J6qVr)uPOW*-S~s~DwEQex z6U?LPvJoK0A&cwwfM!pdr2#mTw}^_D3z83BK8noUiVV)ens47c%30UgGIsx`48DQy0Ry=Vo%f#azIHwl@1nPNMNdeYHCrG?Cm5A*LtyRU`!FQOUgM=|K)w4M|e@8 zF~aQ#FCwDPy}N%HGoK~G{PAO=-@aV%EcKgWgYOS&s(f|bh^U7lY}%<9?}SlYp3@I- zgu8OCA8xS`es2y ziII3s5>q$VRh>DG46)doakiy}VoyVeIA_>CgHJ)sl%3nhAAW5byPdP+)gPmRvvTSd z0HDgBj;>?c!~=;f;Migk{#6i$7JB=PLHiB;L%W%JqQ62NTn*(iOzSXKC6hPdU}c8^ zg66RbJ2v2dw}ljGofE&}oIg0_dr%fD>a_0m@di46#3%!{vi>>%@AkIJ&;2abTr2OP34()DgRka^T+R+!z1Lb;ZjuS(d4!_zHYj0IJ`R z+h-;7mLOWV)VL2|6q+qNkuaTlk2$LB9*t0t-s!d;bw1SWA4Vu0N)2z~G4jxklDYnw zeoH=gw~0J=j`S%c{Ctv*h0#=gy<}I_l%7-x=Oa^>j;daGt5#?Ipa1d3iT~q`mrD{% zE1T?E!PlU<+Bc3uJ`Za4c;J<$)x^PrSX z%GmF$^)p-z&IH26aUt%Iscb)ZT{zmN9^}PAB76X zbb|8x(>#BD*M;#A9uz8xfzV6>=1Wj#LWS0n{T$W)Oz`sbE%zHFxyR(uzLw+&kW}QL zfI*>5pqy_ubG_c@7|@ixsKN)KdTp(V{z>a_^}4sSbM)nIULLCvtIaD8=-P2yuaY$S z9x(R@;ra>mzhzahIdGk(IpSf$-cNsC{SqU-Xjnyf}Al>(1c(G-<3rJANkxn5BCkABQ~r{Cd9++&C9ZUf~XoG9eD z+4|*I`)nE#7^JOb32hFVKIJs^vuw9Vo7KA9%dl?`vhG3b`jBde<7j8BEnju=uT2=~ zJAu(1H86QFd-G@QtG$tV_dd~c_xp$ahDW-*^SaAsw~i_9X^93<5GyLDMvXrFANJln zoXYq6A5B7Ksw5$HBS|RpEEMm^5Fx~_giRUBmJmC0Wva}xoy?&!W!y>TVQ+H?m0@pl z+cs_XaPEhCf4;wSzUOy+KHopib)9qGe|25^%JZye-RoZWy4QNG*YeP(iGa%gX)bL6 zzK@lYepl2?5^kA=pZyxEsEHpK9yVIxcTRihae5T0hErj+25Qx}cd=JJ*p)kPo(CIF zb;u~9;q(2ezZj?Hlj?8bJ5xx{i>_BEs$|$Pba9p}ulHCA-V44`B)y%Xd_@MZ)dLFg z5Z%l;X6YA;iw$R|7daY$Pwb#hQD5Zd!)3W!-3YI#in%kDziZ%}*O9dO?*rH~d>CJY z`RIvBkjOfZoFnvdm#)_}|5na&U=~{#z(Ta2e^9L_5-uQEYE#UkoVnJu6dQy3(a8KM;7p8r#-O~<{CrTOODrhINYaUJ zXZEi^Oe!igQ7+VD4lONGk($w5^u^gRj=a`qj@l^uY9dcSTfKFDJ{6({2!T18) z6KXq_(?-o*Iz8>n04gF`Ypb-$>(bWh+JxgdGxtG$HIs+^jb-CVtVP3Xwj^yim5Y&1 zqkol$rCm|u^|8@cv+vBs#w#p%&9rtxg|bq9*p(PFQA9NFgi7>Ra6{&`rObhYZMj~w zFzc3CgifFLe21Ca?d8Qa7ZEA#Qkl8dm${D?7g3SGou{7HD^sQ*Q$63@CCK|2mfsSo zuJKO&F&x>io!ZeB=N1*a5wPZn^w=!6YtN3-r|9R=DrE5fOAFGWzUkC}(8C5iphJt(?%PIXhN@xi5+>Qd=Y|*r)WxtuFXv?6^;$ zkjCYVw*b~;UDEdcr0}ggyS{!zz*;?S7u($vO;>w9r*%Q)vFAgs!|lpFTGYkX^l2}R zp+Hw(XGYD0bKz2powMeKyya+Pg3f&p`ZdPZeOHHH?_Fu&3@Air++L+PyLf@CyE3U| zB$Ay|HMZR8?!<~&R@t*$69vw*=5b98VT~fopWCX8?RsBlZAMT5<&$kw;Escu&#|I4?2HB^gPfG4B5E0CBve9Bof8)quyF4SRwmwxk^ zd&nr$^nikVb-v9t6)Vl`!-qWJHCeB!s2W-E{7nGjaVl81{Y>oVB3Ko-;AJ;!E{Zd*L)%ouC!gOx=-a zyE_HtOR*c&-Y#x!n>0XPsO}#g8bT}+x)LxqK>MXd`2)8ZSoCF@%F0|+$<400gG>#b z!Ndn|Oy|NXf3RHAI|L%8=3jiroTKhE{47N}>#gQp%C4;nOEVvjuDbcxSTAbXQVdw; zL8;PShE5xo8ri2L5}n#)Dn+z6@6x$G1_8;uM=V{>KY%&@W7d@h#3I+&+gi z?U!E(ElBMG+wVxzTksF%3NMGIa1Kn}hq4Wr(lD}Yd#FloJ?{lUi>Gfjp=^3mN*t{o zPJU~RxtmkyoU9OrlX5)`$+yZs)f(EmW7frLf(Ug7bX30bUm^4H9p)GeO`rT@s z-g1EG-hy2>x!Bx}O4Hk2!|Ks1F5iB{n}Ejh-(6O`5y3Q9`BEpJ*Sqb3?fsPFVS%9X zo_Bw3@3ZQSvj?2E5%F`Zf017I0alJAoqk^hS?P@T$J`4;H*C$qcdbb`A0=wJwnuy; z*_?LoAkX*A7&WjK;I5)rC3U~q8U{zWHAcAE#BJ_C*gB3#PiyB&J$zuckEowhmq3dB zq>2M^O8xh{uM{f3^IfOZQH!m17N`xc`~L)CtUBc@O=)W%iPN^){2E>Qik&)K8?{N; zZMLoYWd(irM=NG(KF6t!ZmVPRptTxJyfQsjR;{w;&U~DW<}G#s`_juV_K)8bFA+GS4;uHJpyb<3nV7p}zu35Q zwzZ0PPc3z^Coh&em%qAqCOJG`u7V?e3h>bo-Edw8Fb@zGN|vn}J0t6Lg=zplf(s3Fl;Qymwp7nEP1JhQ-{In=S%to=T%) z#`h(W2c6dntgQum{n|ngNqajt{RC2$25m`MfJG{-Z>w9LQs*OjX-^4F$L}hefOK2X zFt|5?^NJrs&%+xzCxqwSlcrzYgq5mVfPdiAE97PTh_lQ+f~%vGXxWGkn?N->s9z$D zcJKhCU6I_^v)NZNCq=)NTZw@l`WfA!kOz)$shJ}Q{BJ0Qj1s+OYZdZAg=alxD)l%P z{px_A$pJ6>O7X^vA44JJO>f?jQVaaD^;pJGC<__a0`g0DS=Th;0Nxm$AkKo)lho$9 z!5E_U(IxY=Uq4*r+;en*ojF^I2B7GGmyoel^Ji*iJhjQKVny~qyVowYsa3AUjH#y4 zs>>}4w#w(6l4d}~^)P+b-_YjYmeG@?^(G>MV`dD4%9=><>C6I+jy*ZN*yA%p5A2h0 zAOjv_0rNEFCpZ}k;{di&f2KV?#8hQrNGqCOBSm2Ro}8o4@}U1ftl0*yV&}@7P~%}* ztV}zj*rtpK^+MNX;u|r&0RO`jW{`%62JH(K#fLrv3qN#PX74lTssng1s^(|PCFb(e zO|XEDm^n1)GlFXQ~ZT4SN#_;F;EYZL>S~lWnk)y)rk^W6hgxO$R8^%Gn z3D>=uc<{(Tb)Yh?Lm|{S{0$zKqC3i?<0cJ!sw#~*K7$yq9}KvjEhpU#h*_p`pY&cJ zaWc$19^8)Yl>cr{VVnw{Z8B;LF6H~a{WaIv1mMh%$UNYBnDWc!{GE={yOxOVH_w_J z=>fjVUT4LsJoK6oG1g)#XeGPA4Xk5kr@M{wYipIxbS#Y`?1*v@o(JgXu^4%0sb)); z;o^c^%eTGQ#VL^$Oj8S#mNoHiIXdI@)8oOHE`ZF2px85Bw+Al5o>Mxj1f=f}JQIi> zGa@5|`bgCs>?fC5*>^w8G9P78$y>`jTK1qlu~sM#s-TYzu!F*Ti+@mXvKF? z0ZG`G^3Z})@xg?vUC;$vF)rC1{MV&b(796g6AyK^-ng}3Hs6#{n4KH7*t!{|c*1^~ zs%9{x`51Sv4!hmcaJcc zCR*y}+!OUte~E&c8)Ay9*s#NJMAQ)$`Fr z5j2J?Pfo!L;s>ceIfmBiV3LsqpEAlF(-PyBy zDnw1b@m*a>eOxKCqQ-q!vtXAI2HdyPIt%WbdQ9YXh`1RIM7fm(D>S}TeDl#zsWp0| z$3E>9+{#0=VFS%^sTS1ikQ8D{?&_1#vKDl-*s=*+60nQm@Y1-1SBplp6~2Tm7*!VjfAmrIEF6??ngP0CDb%eOt1TO$7NkEESOB9Gxu}6 z=7A4IT{YP{xDQv@X0M-%A{%6(e?hXvyTG+)C6phgCO#&?Khl18Wyy1&>jyp7o=vX) zf?Mq&cYLzi;!P9*nZS1fB}p{v$lbH%G`EeuSnV8KnY2fmJC^+nduR7FFb(Y=!x)sB z`{HPgw4sls`YZ-X*^D~7?)Nh)>&F&@(vDi! zoVlWbFZb%><5N4V1;&074&NoOsB-w ztfk^JHN@*mo1&-Vmy36 zDIRczu`ZxT4peVoYt*ApKZ4`|or)DYioR}*Z?qB_+;wv*#d^sJMV(h=KoY{5zBiQ0h@?bH)L+6p6d5E60SY$j+it#qV^#ku2(+^A|T|}Xk z#WA&zijK&I^iXk}%C)lxrwetqB+Q}2XtUcUB>cew__){iHP05dA93yLfL5Fex^||bQ zj08$t-M+t&JP>!LDhBFe%i41N%i3WSSR!-};MG&~l`4CKO!SMHjqOU#n&wr^16e&5 zw0IoEHF}kop3J*XGbF0R@cl*Hig8x=68DeOg8a@Hb&K@!OqNZ81+vl-j1@j^!VDH5<%7pM%zCNO1> zmp6e-;M%`T;OzdAO5#jOj~Ae043T2%yjvY7q?g0lkYj#oIq-QWKs?77TJQoS-J`VR zyWJ*feeSb0Udzm5h{>i@E2@C%gVXK>S(}rLsN$F;mJ-_h5=_~87ep&|ymreL%$3H+ zyvJiKh;L0*@pK$zxUMLz4|M$6>*!?h8p4`-wI%T$Ee(takIljt%jqjTABOMs-Juj; zy?k-o6k>N_jjthhv?RQh*e1PzSNq;BcM#CsgIkSt{3>S4^BPG@LA(B^*(wB73_&b~jH z*$w!qI=Aj;P2qB3nScT81TLT-9#~j>Ery8I7=M5CgT`;O;&Afy#!xY5f{s^S*jgzy z;kW~B$qe2bq|wj&oE+XMNY?NnsKev%U$f_)bYk>jnPDn`4;CvZS<}3_TvYa9O}>Cd z;GvT(=3)ECUX!UoVB6m7E9(Y|zACYA4!-m#EmjQuRd2|0tZEQSN}K;LR_#2b74cCB z&*xUUGEL1Fh`hp+`50LIP2z7ODa zbQ&YK?AFnP;$3v!3<0{$0MQ(02gZt0H@Mw4zbmt|{XYCGTE4=g>$c-ZsTqYd$VrI) z%SpuU9@0x1V`zEkQls%Nn|K08MLId6gL&of%b*iqMEOVpXnq7}PFOM3af3LC zJ6ONoNzY?zj*v2}3F!i5Sqxf0H?mQ1M^v!%r z?i%21sp!j7F1Jt+i6(Q3+F4T*Y}D~%|CQv|7EbrIEQ(IZaIVRlSqeXwV)xbth9Y)C zH6Uz!YkcsMvz3`;!RVuL_pH87poyqps7(vv&PZRm0+E^+r}{hRr0J|lU`IPMTn7~l zvXzNR_^XcBgcu)h7@I{$);jMNF>WFg=SXEOZ`-#h2|BVd-^(aE=_FX;fKg~DNMU|- z4GcHtqi&`c#H$(zxB3;{I$t##!;Jcox+TfW`t`^F$|ajWYbp%RKV zKF2s}Su~fN%~iy}9#@R~^nyW^n(JihSQWF`w7GO^w_d*dBBNe@OR~meN>X`&<8GR3 z_2q&`TfEMPbmeF@<<=q-t+dJq5EL(QF9XI0!Z)|gp8W%2?1Pz~`=$(i?nX=a3OzZH^_KU0SK3&G z0!0EQ`xJCAFz0Wa_gu~%OD#XCNdMt2E~9W5@NP3|Mjy`XL(#N9xP0vFdFFrO-bnXP z?BXd46oPV#bZF7b*Kz=>SS$hZ?U(xcZqQc^k3hA86HuS=7JXZP@nf`DA_Inme59B1 zh#m1UIg>G%?czXMT0*@CBJJ3b@t@V4(&JM%W4JAf~Bf`5ix|`c9)LY)4OB9F*LrhnmrSrC5Tcj;oYlW$#PU2kkyS zq98UxM?H|Vj1w<*Uj<(;p);m16KhScfVFf}M2+!%Dw{cZtoRv50biX+wQ@6HcEs6< z(+akf&STdIW`u`h&uvClXMTJpWG^ZE-a{N(d;95!VI z#9!a#u=%|?Y|Ni$u`cHCB;6j)4_%^e+(%vh(2&)RDvR$6<+nz85d(D4Bv`K+xylMq zO&5oX%PVUA;jwcod;F^qWS>*T{p!-@1)xQ#^n8x0(6H-#YYw%NjoFSncXN4+*v%H#D?S^=T8S?*O{w!j{+I2peRw{Fzs#8WMY zl7N10n@Tv#Q>PpHMF1w`xBJ{E4!I&BsZVETH=d?#E@G$cru77l(4<{K?tgvdT4JEl z=xhu36u--1-C4_fqr0HUulSGK;IP0h1!*WT23-*-T{%P1V<+)_Xqxv^axjrsiAch}hgZOm5W<&^vsa zp99Tfx}b^d>has}AhWre*jCMp;n#5a=zF&G-aCh>=m7Ln{je}pCmWcp(_)u%{WyYa zs2A-^#m*aqSjoY2H-O`sj@@H?MMFR|)E9jbueQt9DCi|1Z^?~OSdkKXwLxD<8?mhm zb0ukj#9O198kc`sn(?#i3R}X6P}bLmI}5L*lyW+ssY_6NM7hqCPPFNY)139S>m0OS z$;5lOfsi4@bV}_lGY;G-LH_EU<12~YW3{-&kzw@!X7<*K&KsHMzp1wXt+*=avas>u z2H?!~LWY%uTvigG*3&SSTzJcx_7U4fD@c0R81K)dNIr=aAQ0*RKdH2cF?XuI~$c z2uON@+LOD_vX))mXF>O(4BK4zH9T&5JPsnp4zbHoZbYHy=T`MnmOe!qGw`W#D14Y) zI_K8f0gRF%T(zh=WHA)0PC`gYNrIFV*o{RBVmm%~%#by5O?f~~y zGP%cLa>&+`c!ngKuTcUT)!AC&q>u+t!7nOqL%ei=JscXd(CS75z5C*etD?3u?Mdz~ zf&7=K>mq=lQIfZigAeu5+U#}#AXex~k#fnZ58<3d!V8er562GV6&5modPU~EP?>-E zU)sRkI){|Zion+S)=3=u+mf0G#z5zM`X10_P}QQtWL@LP9-e0CU>3!b0k}8p{;Gv? zP4T)~j_1JeDw?Fm9`3xyc+8&hSpqt|!Yonr>CDnI&*DYfN{0N$#1NhA`=_LR$2rXI z1ZlvUe(~ruQ$n}_kJaB=IS0BEa*fq&9Y^CbfBsi7`rzoIzo3@tLaQpkSjdg0T@0(CW-0*=2s{P@=TMZNYP;nJSM~iaB7D;cyo95=kgc z0beKu+@eV``7ftBopx!yAaf>dv9NC21@4wKGWnXU^p(ubMT`OI)XBfi!koI@9p~Jd zU&Jwccko?=qvKDzsna>Y*Jv(nO(HlS7uI|8&JHTY7I5ibBV$n@%DHA{rVW9~)el#1 zn1{SrYAOmi{+Jg^*Ga4;HmF93nODELVyf5%Ol1Gx%2?v$)1{{m17b2QxSQVSt(KWn zcPyy)0Kr(aO+w_rli)UU#hcBa?!T!$4su)8G(B%?tJ0GnJ$W5b<;S888$4l%DXYIW zps3WX;jh2PLYUgNqaX^#mnVwQ0WtG#;^m1#G?Z!> zcv?AB?XY@V*X(}cO$`tMgHmqP4Pu;C^*zA?3lI3Hx{qV1i9_x2Q%NYw-ebOcCZ-ol zXn;U?=F)o6NgBS>;Wd*7zUa8hO7w!XM}G~dU})X^aqY&eB>jHY6`zB~EHD&ca<6{p zaV7QDhP5&tpUg9D>uNVqa7NTPW^@5>W7}d1m=7Id`Qz%d+43WPiYF9 zy9Pj_mB5pDP9fAnnmfeCb|M^m4BueJI0g*MqFSwxs%Co#+Lm#-R7zMTNgknwsOUJ2A&5*rAn z#(XBi@2wPn&QOicEtp?oy$$Yg^^YsTsg;~a?+MWGthLvr=2KVh~)W)&utH@&@%99iM|~~x+96%DE|Sa zvjsFqybV2h29iv?doh-?2L)yWJxuD zYO92CUtY(zq2%pWh%CGcj^2GAHe-$S^z=R!UT`$wpzi~$q0fQ+q;KW-&*bgQ$aT8D zM!n4|pzz>p`I`M|F8Z>&@mVo}epLD(`p~vic^r7l>U(~(Vab&BnT8C{L8F-ggPKRX z>D9dF!h@%_YVDDN^sQlwD<{F!nNL`HteBIulj9FgTN9H$WZSM4RrjbPsciH$78I>x z`Nm_KF|0BAWky*(kHt$jkoU}a|Ndp8!D0J;qRecuIIE*$q#g_e`AE#{w;q0KJNPIyta@Kr&eQ5ss=Q55w$FRh6@jPxVvqV zWO1N}<{(>6*pbp~rL{7qA8KCAuP-`=Y;+iTLu#QW+ckJR^QmzxQ-jQx4d%d zMvcKKk3J3%kF;S@3rR##F8m;Pq||Wv#;C>Q7Za^5I(;pUhcU&1Msy>FA%7AKVkOxH4g1{D?BVl}fSVi3M4RNangS-Gk ze><%0UHeQan0UELf+vTZ^0u+Chc2S9csO--Mm!e-*1NOGSbMq~v{v7zN#u;RHYW`99(J`A zg2aP^#2r0iYD~8FL1ZLUb^_zQe4z20(GgpuUZ8WmWPZRhRKrvhEun~s6|cT|VTP`~ zc{A8n?jtZ$2`gI7jhw!AfIiq+vy`N=yp%tGN$-e>S%GV+k_*RoA>8+~!4iJsY9sa~ zw9isa##|k0oO^|zA67h$u)frAF41ehgLP$C>X0er(igvl!^-xn)A>XV|5U>+XtF2f zX5Zc;w%>E&!pp}-_&@FyPTF*qe)vt^5fT5og6;ZxlRoc%GdeUn6;)bem14OLrfJj; zq!tdc#3w-DsW2R8LSAMrHG-^ku``r;TDN4p0HRlRvMf z0pcUebH&Z69yQ-&uNFg=+xZe&t<8IeG-A?*opa+jN()*k!9f#CoQG)dr$Eab3+qSg z?~N!vDM%O8T)4C6>+n=B9qhOJhuyBE=85;^aw~%_L$OlHO6=N(=~s3O z0ud`m&-KU#BTYWlkvL*<SUs%M}L76IyUwYbh|sA-kE0D$NJpssz?XOu*XdK z8BsDnCp)Z6BEG)ckHq(G*p!Lf=xyj36c2ZTW%DX5L604A3d$qb=T6oE6OC+F%3#6-^i#QdZV zi!<2nAM5yfuzg^!TwmfSA+zpii{JZkmzMEV#8B)CrSPGn%a{}5SGw@E<-p*^BH`<{ z-)}s)?BqyaO|N6reEUVDH{w@O9D`*hNSb~&5xEaq?Vt@DM{iv#6`!2twVU^(DxI@kX!PnESFuv(Kz$<(=mHL`++du|Qq@IGz(amBy$k8@z45 zm!%)@D+>sCGg|+J<2nP4kX_?>TX}%gt?QUOrXbS}X7{N4fGOGjx3g^FoHaJTs>xH< zUc`on1;rlA$1`++VjPx=RG+4RkqGQZiDzvDu=IIfMyNK<&UL?{{Dp9Z%=ZP%I0 zx4Ca#NC0maSndj8A$;-+cw>E~w=YbhcKLXG@r0^jw1eAB?nq8n7L3{^mpA>P&CwYC ztQ}kT?A7OqC0LM5Z6$(6esRqX6g5w6?fX7x-=~u~BdrsZXKH3T~196Rq+={~DJMs;56ZF+|y$2rD%j%$nap<1{W99~4yUH=NCyH>~8 zi*2C*3~Yt6%*b4MlD@s6Iu5=qkJ6(TUyTCdN(k^oD zQ+)L9hMwT^I%gam48FJu#!B(N0=c{$$Bdr3QnVcuIh{3T8A6UT6wIBA%yH7R|a@?DcO91eUPR#aD*#Ezb+6_v=W$7hp zfoW8^q9QyJ)<=FcGD>d^C+2KYgUiuStD|b5qd<{o{^R*6WN+@Vdvf$nWMJUS$8huSFFy^` zsa-f;xQqX3kif}zRGrVvubx}I1Sy)z$xr#CAyUOyh0TGPnvKW!WSV|o^!tZJeKnwJ zI=cBd+e3~xQ2#1*VmH`r8&UWxJ^t%=UyG~-HNsVYc76Z@S-7~k?8r-#U8rGvZf$L? zP|&kZH7}aWf%e>yeUL*~pVcx@5Alx>&mibM-LVlYl!lu-pT6ilwkb3|x40j&=_yeU%YM_M@znr}ct&B%tj_oAuG4a*RPCs$wzMY!_EwRQe2qXta?v6ACFsy|<_i6Wt>$M2{x@`UBw@EjDA-(*#4@ zZ_(8ZTZN_fDtF3O742iwzJfG>fm^q+SQO1GoiRir)MZnwzfwX#^H8z;bjMrrwIhf=c9qU z4_2XBQ}!mdLE`RwIEa*HFkU@{$1LsG=`jGXY{y*jA?`#QPq5u1J@5}rDKmK8~J&p^wG>_pHmH|38AcA%tbVeq7@%LDqm(`T^~ zreyysnY5l=0`%8FtDPuc-oF+L!k;)(ui_l$@3EXyw9+Vt-JJK(%t+5@kwnsDY|s)4 zJCo@X@eUU0MC}0-fq3`9vs%bI2*d7Q4SjsR$*YwINqMe_peWF}C%J~*kMFEp(N@pq zQs_24KYgIGKqHcQ*jEl1OX68gJY4F~#;X&b$OaJ!SxkH=BsD}3BNRu_jR0GJX+O{V z`1ts9tcT7b5JMkx@1Iu}*6kgvaLb;apBIyS8z>9CLqRCQPQY(V;_2N+C2spF1D(}Q z4lM?2scT2s5-4{YHQ*0+$-3%{KoSCZ?4_)Ont~HPHgANVlPWHLHvj zvpiJst=dxxUUBAC^cPtK4UI?He@Eo_KM|*&Cghw9(*L#}cdBGl-Y^z4okplJ3FsB3 zlZtp*fuddvq*X_nmVs+wxZ1dj?ZXH6YWH6lNLyTAqEzis^t29zYmZ~eMUM)3I<0F{oE>V*6ba4Hg3|rCNf?vBJO!7wkHJcVRmsI~YD+dV0-~Ea1=VpK zn8}lB+JsNZ2c|?2<%i5oB<@-0j)fm^J*}Uj3O~;WiaOAWKCxaF3Dz2qIX+Y&fx-J46u<{)Y z+ifFer)OMd{IgS*Hlo(LS`Q&;8AN+ZLA!oLhuluW21x*(irTB_xf`&tPQkorYoX#b z_+#m9Ky{vvNR{@xkbCAm-wA#LU6%?p;FcUfo!sv1@+s{L)~F>_i@}{++ZYow*z%sN zwZjTkJKjbzP#5Mrh8gIhXkzKUU72gjyO3mU@SBVETG$hDvT*?)goDv_<1s>)gcG$0wc?s*MpR$=T^qAuq;ew+tCW==K)e zSxLzNzsVJOYh8%LrLxS{sd#C`jT-Bev zmFWkOOZ%3*1t8;F~Yy{0T5BG zwTNwWYCoa0H8tCZ;)oy-xVJn)aVCfF6&M(eAzfD7NWJ)kQvd20lHxv|ogQFYd|pcq zz2thD(0rbC*xx_Gj@Gr3%^Mmj(TNhznH~)6R8u)Q++$1t2o?*%dWawhNbWJcLVbZf z+d77hy78_QBpG_j6IeEI<8k(EPU`B~U=-v=Pgp~P8DRxTDxQoE7u-3KCKxN8s?h}E zBoV^LYvHNvzBT<*WLq!epVdwHM*>?z zf@vDOUX-OUwAg6^!VaA9iSIwI@2vq5(^!yHNtfo6KX2dCOk7@9@iF@HJ0$U-BCV2W zjJy9MJulo@V^UKSg=SOn^=!l)0#Sq%I66D7-*_BkO-DB^e&!t_9J}!6?V6E58@hdj z!51j#mb6y@H3BKj)vym*Co~#k7%YfUwn4ChZAsmuz(UnLTk4$rL-dyUan71ruAcu75Zks7fo1IMm6t1iqL3?oaK`$@Uvv@55U)l|tgZY{5DgN7=vT_W9U#!THx>HWPQz>D@O*0EZ+ z?tIR2L0y~8JeUDoD5NKAK{99*H!R^xe(HdJ1~$X9tZ!z}_D0R_R(yEUKF!U~lN@8# zPLzt2@`ia!$8?4sl8`Z=5k#a&AIICdBD2e*1~iMsnlW}KtcT%$e-(6_|IQZ8@x(vk z;QP0$2z7PHt}5lE$-8mj>A-MHaKQicTr^$~MN%{)F{Qgw*3YDPFVxoGaHS

(FNg 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%0Ap>X;*mVJ z)Q?&A=E45e*0yFgtW4<;KL+Y$2G0}iTj0117>=S8G0N?of6zyBbtsIhivtNNvX-Sey9-shG0e|Q zCKTW?MOCqfh-)RJ1#glm1t(8h>76UgB>gQ#w@YlZQ%UH-K=?P4^M>xQEYp~AXIwa` zOj=OU!8V}o(^kfz<+-6x`J^Xh%bh}f0-ma86O+_v#H6AT&#ld>w0@5n`L4oiW-2qd zNH>NZ7J0;E*N$m8Ixq*D;XhQm4E_A)Yp!)UytW*S-Qn*;af1t(>Ea4`m4nsZCbEooY^B%vC*=zbQzKzV$tto95ZU62_3+niC1 zC**Onm_qT^Q%p1N=|+N({EFxMH#6ho1n1=mLRDhNY8#Bww)1I+Gp`Du&H5!tVCF;a zRh8v-gSH#WN2Vs|b{GE@hrX5y?!-&#b7;}IGXH`Z^Q2+bGa3BLa&elnoj@j!a6n$6E49`vt?~3r|1rF2bSPFptYE<{*J# zY7eECxQx`SOr#eDq2dReISAMp=HVrrybW`yF$R~!JkKi5>{x0e3=b2s7t_CvgD2&$ z^|iEmJ85tz&EMi$8y~l&(H9|S`N7g+e>z#bFZ%{+pcPAr4tl0q-8V-pD5eb!7ASho z_OH-!l1^jIL=Nn6pAW0P)T~$KE%*F^evKu$*I>4R4UNubwkdpoqpkFv7G%Gr9J^wn$7tT8@I1DJ!OJ!?hWhz>|FW^)$P545ay z(ecYgDQ_10L%2O|We3%qF7>~tHilN6pMTK9C4o)+Z`l~aB!eGSv{YK!MD$SmR}O_R z-Si z?Eh-Lp*euXR+RlVKj@xBZwtLTUs{G~EE_dwk2r~JbMZ8KHfub|aL%)9IhWD3=DzhC zu;QyXmIFLZnd=LZkp;}GH95CJRec+gjt;4<7-;Q&+A`j$F-nr@o%S^>9=g}bS39}Z z1v@Y>2BXdgTIkt6q|zK{hSZtMs}Faw01xIbgt;@`aP)oV!);3s(@?f1kZl)regUN; zDDiGp=aK2%4;$-643YIi?mQ${&3(A2mWy2|0@R=%q@KjEQ4JZ;+b2(M^{TvGw1BBp#K52bZg)M literal 0 HcmV?d00001 diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 3a59817dcb06..34d089395bc2 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -15,12 +15,9 @@ summary: 介绍 TiFlash MinTSO 调度器。 ## 设计实现 如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: -``` -if (used_threads + mpptask.estimate_threads >= threads_limit) - // task need to wait -else - // task can run -``` + +![scheduler-v1](/media/tiflash/tiflash_mintso_v1.png) + 尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: ``` mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; @@ -48,9 +45,12 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; * threads_hard_limit 其中 soft limit 主要用来限制系统使用的线程数,但是对于特定的 MPPTask,为了避免死锁可以打破这个限制,而 hard limit 则是为了保护系统,一旦超过 hard limit,TiFlash 可以通过报错来避免系统陷入死锁状态。 -有了 soft limit 和 hard limit 之后,我们需要约定允许 MPPTask 突破 soft limit 的条件。突破 soft limit 主要是为了 -.如果调度器不考虑 MPPTask 之间的依赖关系的话,可能会导致系统出现死锁的状态。 -TiFlash 原有执行模型 Stream Model 是线程调度执行模型,每一个查询会独立申请若干条线程协同执行。 +利用 soft limit 来避免死锁的思想很简单,系统中存在一个特殊的 query,该 query 的所有 MPPTask 在调度时都可以突破 soft limit 的限制,这样只要系统的 thread 不超过 hard limit,系统中就必定存在一个 query 的所有 MPPTask 都可以正常执行,这样系统就不会出现死锁。 + +MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,这样每个 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: + +![scheduler-v1](/media/tiflash/tiflash_mintso_v1.png) + 线程调度模型存在两个缺陷: From 874c97e7cc82a69f81090a789b23feacf28a7d4a Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 14:52:15 +0800 Subject: [PATCH 03/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 34d089395bc2..b5f9e6a453cb 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -16,7 +16,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: -![scheduler-v1](/media/tiflash/tiflash_mintso_v1.png) +![scheduler-v1](/media/tiflash/tiflash_mintso_v1.png =600*600) 尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: ``` @@ -49,7 +49,7 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,这样每个 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: -![scheduler-v1](/media/tiflash/tiflash_mintso_v1.png) +![scheduler-v2](/media/tiflash/tiflash_mintso_v2.png =600*600) 线程调度模型存在两个缺陷: From 314ab823f31eb3b98c707b300aa736064ae2b6a7 Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 14:53:45 +0800 Subject: [PATCH 04/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index b5f9e6a453cb..f42fe3a668f8 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -16,7 +16,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: -![scheduler-v1](/media/tiflash/tiflash_mintso_v1.png =600*600) +![scheduler-v1](/media/tiflash/tiflash_mintso_v1.png =600x600) 尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: ``` @@ -49,7 +49,7 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,这样每个 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: -![scheduler-v2](/media/tiflash/tiflash_mintso_v2.png =600*600) +![scheduler-v2](/media/tiflash/tiflash_mintso_v2.png =600x600) 线程调度模型存在两个缺陷: From 5f7cdce6faff2fe398145e8e21cd40f9df1c257e Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 14:58:46 +0800 Subject: [PATCH 05/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index f42fe3a668f8..1e2dda8e9146 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -16,7 +16,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: -![scheduler-v1](/media/tiflash/tiflash_mintso_v1.png =600x600) + 尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: ``` @@ -49,7 +49,7 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,这样每个 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: -![scheduler-v2](/media/tiflash/tiflash_mintso_v2.png =600x600) + 线程调度模型存在两个缺陷: From 8c516aff634cb9413de31ae0f66a8eb9dd172df7 Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 14:59:48 +0800 Subject: [PATCH 06/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 1e2dda8e9146..63e471db01e9 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -16,7 +16,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: - + 尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: ``` @@ -49,7 +49,7 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,这样每个 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: - + 线程调度模型存在两个缺陷: From 1f1d4ef2c5dcf431aa3ad564a2aa1b593c1af89f Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 15:04:19 +0800 Subject: [PATCH 07/21] aa Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 63e471db01e9..c4bfd7b85af8 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -16,7 +16,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: - + 尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: ``` From 9f7d149e0f09e8026dd54c61b27bd65679e96bfa Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 15:05:20 +0800 Subject: [PATCH 08/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index c4bfd7b85af8..2f4af09dd0aa 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -16,7 +16,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: - + 尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: ``` @@ -49,7 +49,7 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,这样每个 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: - + 线程调度模型存在两个缺陷: From 53cfcdf0f157c72bca34915c78ba504662d4e416 Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 15:14:47 +0800 Subject: [PATCH 09/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 44 +---------------------------- 1 file changed, 1 insertion(+), 43 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 2f4af09dd0aa..059215254307 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -52,46 +52,4 @@ MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统 -线程调度模型存在两个缺陷: - -- 在高并发场景下,过多的线程会引起较多上下文切换,导致较高的线程调度代价。 - -- 线程调度模型无法精准计量查询的资源使用量以及做细粒度的资源管控。 - -在新的执行模型 Pipeline Model 中进行了以下优化: - -- 查询会被划分为多个 pipeline 并依次执行。在每个 pipeline 中,数据块会被尽可能保留在缓存中,从而实现更好的时间局部性,从而提高整个执行过程的效率。 - -- 为了摆脱操作系统原生的线程调度模型,实现更加精细的调度机制,每个 pipeline 会被实例化成若干个 task,使用 task 调度模型,同时使用固定线程池,减少了操作系统申请和调度线程的开销。 - -TiFlash Pipeline Model 的架构如下: - -![TiFlash Pipeline Model Design](/media/tiflash/tiflash-pipeline-model.png) - -如上图所示,Pipeline Model 中有两个主要组成部分:Pipeline Query Executor 和 Task Scheduler。 - -- Pipeline Query Executor - - 负责将从 TiDB 节点发过来的查询请求转换为 pipeline dag。 - - 它会找到查询中的 pipeline breaker 算子,以 pipeline breaker 为边界将查询切分成若干个 pipeline,根据 pipeline 之间的依赖关系,将 pipeline 组装成一个有向无环图。 - - pipeline breaker 用于指代存在停顿/阻塞逻辑的算子,这一类算子会持续接收上游算子传来的数据块,直到所有数据块都被接收后,才会将处理结果返回给下游算子。这类算子会破坏数据处理流水线,所以被称为 pipeline breaker。pipeline breaker 的代表有 Aggregation,它会将上游算子的数据都写入到哈希表后,才对哈希表中的数据做计算返回给下游算子。 - - 在查询被转换为 pipeline dag 后,Pipeline Query Executor 会按照依赖关系依次执行每个 pipeline。pipeline 会根据查询并发度被实例化成若干个 task 提交给 Task Scheduler 执行。 - -- Task Scheduler - - 负责执行由 Pipeline Query Executor 提交过来的 task。task 会根据执行的逻辑的不同,在 Task Scheduler 里的不同组件中动态切换执行。 - - - CPU Task Thread Pool - - 执行 task 中 CPU 密集型的计算逻辑,比如数据过滤、函数计算等。 - - - IO Task Thread Pool - - 执行 task 中 IO 密集型的计算逻辑,比如计算中间结果落盘等。 - - - Wait Reactor - - 执行 task 中的等待逻辑,比如等待网络层将数据包传输给计算层等。 +通过引入 soft limit 与 hard limit,MinTSO 能保证系统线程数的同时有效地避免了系统死锁。不过对于高并发场景,可能会出现大部份 query 都只有部分 MPPTask 被调度的情况,对于只有部分 MPPTask 被调度的 query,它们实际上无法正常执行,从而导致系统执行效率低下。为了避免这种情况,我们给 MinTSO Scheduler 在 query 层面引入了一个限制,即 active_query_soft_limit,该限制的意思是系统最多只有 active_query_soft_limit 个 query 的 MPPTask 可以参与调度,对于其他的 query,其 MPPTask 不参与调度,只有等当前 query 结束之后,新的 query 才能参与调度。当然这个限制只是一个 soft limit,因为对于 MinTSO query 来说,其所有 MPPTask 在系统线程数不超过 hard limit 的时候都可以直接被调度。 From 8f489ed668e8671545823cdb0a5c7421e4862d3f Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 15:23:22 +0800 Subject: [PATCH 10/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 059215254307..e90fb4ecdd7e 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -8,6 +8,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 本文介绍 TiFlash MinTSO scheduler 的原理与实现。 ## 背景 + 在 TiDB 中,对于 MPP query,TiDB 会将 query 拆成一个或多个 MPPTask,并将 MPPTask 发送给对应的 TiFlash 节点。而在 TiFlash 节点内部,对每个 MPPTask 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md) 之前,对于每个 MPPTask,TiFlash 都需要使用若干个线程(具体线程数取决于 MPPTask 的复杂度以及 TiFlash 并发参数的设置)来执行。在高并发场景中,TiFlash 节点会同时接受到多个 MPPTask,如果 TiFlash 不对 MPPTask 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPPTask 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数也是有限的,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会碰到无法申请线程的错误。 为了提升在高并发场景下 TiFlash 的处理能力,我们需要在 TiFlash 中引入一个 task 的 scheduler。 @@ -19,6 +20,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: + ``` mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; +--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ @@ -38,11 +40,13 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; | └─TableFullScan_23 | 10000.00 | mpp[tiflash] | table:b | pushed down filter:empty, keep order:false, stats:pseudo | +--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ ``` + 上面的 query 会在每个 TiFlash 节点中生成 2 个 MPPTask,其中 `ExchangeSender_21` 所在的 MPPTask 依赖于 `ExchangeSender_45` 所在的 MPPTask。假设这个 query 高并发的情况下,调度器调度了每个 query 中 `ExchangeSender_45` 所在的 MPPTask,则系统就会进入死锁的状态。 为了避免系统陷入死锁的状态,我们引入了两层 thread 的限制: * threads_soft_limit * threads_hard_limit + 其中 soft limit 主要用来限制系统使用的线程数,但是对于特定的 MPPTask,为了避免死锁可以打破这个限制,而 hard limit 则是为了保护系统,一旦超过 hard limit,TiFlash 可以通过报错来避免系统陷入死锁状态。 利用 soft limit 来避免死锁的思想很简单,系统中存在一个特殊的 query,该 query 的所有 MPPTask 在调度时都可以突破 soft limit 的限制,这样只要系统的 thread 不超过 hard limit,系统中就必定存在一个 query 的所有 MPPTask 都可以正常执行,这样系统就不会出现死锁。 @@ -51,5 +55,4 @@ MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统 - 通过引入 soft limit 与 hard limit,MinTSO 能保证系统线程数的同时有效地避免了系统死锁。不过对于高并发场景,可能会出现大部份 query 都只有部分 MPPTask 被调度的情况,对于只有部分 MPPTask 被调度的 query,它们实际上无法正常执行,从而导致系统执行效率低下。为了避免这种情况,我们给 MinTSO Scheduler 在 query 层面引入了一个限制,即 active_query_soft_limit,该限制的意思是系统最多只有 active_query_soft_limit 个 query 的 MPPTask 可以参与调度,对于其他的 query,其 MPPTask 不参与调度,只有等当前 query 结束之后,新的 query 才能参与调度。当然这个限制只是一个 soft limit,因为对于 MinTSO query 来说,其所有 MPPTask 在系统线程数不超过 hard limit 的时候都可以直接被调度。 From 64963cd31b4668af7c783b1051c3b9b68da4878c Mon Sep 17 00:00:00 2001 From: xufei Date: Thu, 12 Sep 2024 15:30:19 +0800 Subject: [PATCH 11/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index e90fb4ecdd7e..c886d1196359 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -44,6 +44,7 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; 上面的 query 会在每个 TiFlash 节点中生成 2 个 MPPTask,其中 `ExchangeSender_21` 所在的 MPPTask 依赖于 `ExchangeSender_45` 所在的 MPPTask。假设这个 query 高并发的情况下,调度器调度了每个 query 中 `ExchangeSender_45` 所在的 MPPTask,则系统就会进入死锁的状态。 为了避免系统陷入死锁的状态,我们引入了两层 thread 的限制: + * threads_soft_limit * threads_hard_limit From 70f7033006f6cba5ce2a24d5cf84c15fd44b3371 Mon Sep 17 00:00:00 2001 From: xufei Date: Sat, 14 Sep 2024 16:31:24 +0800 Subject: [PATCH 12/21] Apply suggestions from code review Co-authored-by: joey-yez <104608045+joey-yez@users.noreply.github.com> --- tiflash/tiflash-mintso-scheduler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index c886d1196359..c47b404ce2f9 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -50,9 +50,9 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; 其中 soft limit 主要用来限制系统使用的线程数,但是对于特定的 MPPTask,为了避免死锁可以打破这个限制,而 hard limit 则是为了保护系统,一旦超过 hard limit,TiFlash 可以通过报错来避免系统陷入死锁状态。 -利用 soft limit 来避免死锁的思想很简单,系统中存在一个特殊的 query,该 query 的所有 MPPTask 在调度时都可以突破 soft limit 的限制,这样只要系统的 thread 不超过 hard limit,系统中就必定存在一个 query 的所有 MPPTask 都可以正常执行,这样系统就不会出现死锁。 +使用 soft limit 和 hard limit 避免死锁的思想是:通过 soft limit 限制所有 query 使用的线程资源总量,充分利用资源的基础上,避免线程资源耗尽;通过 hard limit 确保在任何情况下,系统中至少存在一个 query 可以突破 soft limit 的限制,继续获取线程资源并继续运行,避免死锁。只要线程数不超过 hard limit,系统中就必定存在一个 query 的所有 MPPTask 都可以正常执行,这样系统就不会出现死锁。 -MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,这样每个 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: +MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有且只有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,因此,所有 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: From fb8d34b6bd6b34964977887e3fceb7aba39b96ca Mon Sep 17 00:00:00 2001 From: lilin90 Date: Fri, 25 Oct 2024 14:46:56 +0800 Subject: [PATCH 13/21] Add new doc to TOC.md --- TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TOC.md b/TOC.md index eaf011f7223e..e9b5c457bf20 100644 --- a/TOC.md +++ b/TOC.md @@ -676,6 +676,7 @@ - [TiFlash 延迟物化](/tiflash/tiflash-late-materialization.md) - [TiFlash 数据落盘](/tiflash/tiflash-spill-disk.md) - [TiFlash 数据校验](/tiflash/tiflash-data-validation.md) + - [TiFlash MinTSO 调度器](/tiflash/tiflash-mintso-scheduler.md) - [TiFlash 兼容性说明](/tiflash/tiflash-compatibility.md) - [TiFlash Pipeline Model 执行模型](/tiflash/tiflash-pipeline-model.md) - TiDB 分布式执行框架 From d4d0dacf85e18fb27bc7dca56d8de2e38ebf9aff Mon Sep 17 00:00:00 2001 From: xufei Date: Fri, 25 Oct 2024 20:00:51 +0800 Subject: [PATCH 14/21] Apply suggestions from code review Co-authored-by: Lilian Lee --- tiflash/tiflash-mintso-scheduler.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index c47b404ce2f9..b9207d250cc7 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -9,20 +9,23 @@ summary: 介绍 TiFlash MinTSO 调度器。 ## 背景 -在 TiDB 中,对于 MPP query,TiDB 会将 query 拆成一个或多个 MPPTask,并将 MPPTask 发送给对应的 TiFlash 节点。而在 TiFlash 节点内部,对每个 MPPTask 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md) 之前,对于每个 MPPTask,TiFlash 都需要使用若干个线程(具体线程数取决于 MPPTask 的复杂度以及 TiFlash 并发参数的设置)来执行。在高并发场景中,TiFlash 节点会同时接受到多个 MPPTask,如果 TiFlash 不对 MPPTask 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPPTask 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数也是有限的,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会碰到无法申请线程的错误。 +对于 MPP 查询,TiDB 会将查询拆成一个或多个 MPP Task,并将 MPP Task 发送给对应的 TiFlash 节点。在 TiFlash 节点内部,对每个 MPP Task 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md) 之前,对于每个 MPP Task,TiFlash 都需要使用若干个线程来执行,具体线程数取决于 MPP Task 的复杂度以及 TiFlash 并发参数的设置。在高并发场景中,TiFlash 节点会同时接收到多个 MPP Task,如果 TiFlash 不对 MPP Task 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPP Task 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数有限,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会遇到无法申请线程的错误。 -为了提升在高并发场景下 TiFlash 的处理能力,我们需要在 TiFlash 中引入一个 task 的 scheduler。 +为了提升 TiFlash 在高并发场景下的处理能力,需要在 TiFlash 中引入一个 task 调度器。 ## 设计实现 -如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPPTask,调度器根据当前系统已经使用的线程数以及该 MPPTask 预期使用的线程数,决定该 MPPTask 是否能够被调度: +如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPP Task,调度器根据当前系统已经使用的线程数以及该 MPP Task 预期使用的线程数,决定该 MPP Task 是否能够被调度: -尽管上述调度策略能有效控制系统的线程数,但是 MPPTask 并不是一个最小的独立执行单元,不同 MPPTask 之间会有依赖关系: +尽管上述调度策略能有效控制系统的线程数,但是 MPP Task 并不是一个最小的独立执行单元,不同 MPP Task 之间会有依赖关系: -``` +```sql mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; +``` + +``` +--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ | id | estRows | task | access object | operator info | +--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ @@ -41,19 +44,17 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; +--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ ``` -上面的 query 会在每个 TiFlash 节点中生成 2 个 MPPTask,其中 `ExchangeSender_21` 所在的 MPPTask 依赖于 `ExchangeSender_45` 所在的 MPPTask。假设这个 query 高并发的情况下,调度器调度了每个 query 中 `ExchangeSender_45` 所在的 MPPTask,则系统就会进入死锁的状态。 - -为了避免系统陷入死锁的状态,我们引入了两层 thread 的限制: +以上查询会在每个 TiFlash 节点中生成 2 个 MPP Task,其中 `ExchangeSender_21` 所在的 MPP Task 依赖于 `ExchangeSender_45` 所在的 MPP Task。在该查询高并发的情况下,如果调度器调度了每个查询中 `ExchangeSender_45` 所在的 MPP Task,则系统就会进入死锁状态。 -* threads_soft_limit -* threads_hard_limit +为了避免系统陷入死锁状态,TiFlash 引入了两层线程的限制: -其中 soft limit 主要用来限制系统使用的线程数,但是对于特定的 MPPTask,为了避免死锁可以打破这个限制,而 hard limit 则是为了保护系统,一旦超过 hard limit,TiFlash 可以通过报错来避免系统陷入死锁状态。 +* threads_soft_limit:主要用来限制系统使用的线程数。对于特定的 MPP Task,为了避免死锁,可以打破该限制。 +* threads_hard_limit:主要为了保护系统,一旦系统使用的线程数超过 hard limit,TiFlash 会通过报错来避免系统陷入死锁状态。 -使用 soft limit 和 hard limit 避免死锁的思想是:通过 soft limit 限制所有 query 使用的线程资源总量,充分利用资源的基础上,避免线程资源耗尽;通过 hard limit 确保在任何情况下,系统中至少存在一个 query 可以突破 soft limit 的限制,继续获取线程资源并继续运行,避免死锁。只要线程数不超过 hard limit,系统中就必定存在一个 query 的所有 MPPTask 都可以正常执行,这样系统就不会出现死锁。 +使用 soft limit 和 hard limit 避免死锁的原理是:通过 soft limit 限制所有查询使用的线程资源总量,在充分利用资源的基础上,避免线程资源耗尽。通过 hard limit 确保在任何情况下,系统中至少存在一个查询可以突破 soft limit 的限制,继续获取线程资源并继续运行,避免死锁。只要线程数不超过 hard limit,系统中就必定存在一个查询,该查询所有的 MPP Task 都可以正常执行,这样系统就不会出现死锁。 -MinTSO Scheduler 的目标就是在控制系统线程数的同时,确保系统中始终有且只有一个特殊的 query,其所有的 MPPTask 都可以被调度到。 MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 仅根据自身信息对 MPPTask 进行调度,因此,所有 TiFlash 的 MinTSO Scheduler 需要找到同一个“特殊”的 query。在 TiDB 中,每个 query 都会带有一个读的时间戳(TiDB 中称之为 start_ts),MinTSO Scheduler 定义“特殊” query 的标准即为当前 TiFlash 节点上 start_ts 最小的 query,根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊” query 必然是同一个。我们称之为 MinTSO query。MinTSO scheduler 的调度流程如下: +MinTSO Scheduler 的目标是在控制系统线程数的同时,确保系统中始终有且只有一个特殊的查询,其所有的 MPP Task 都可以被调度到。MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 节点仅根据自身信息对 MPP Task 进行调度,因此,所有 TiFlash 节点的 MinTSO Scheduler 需要找到同一个“特殊”的查询。在 TiDB 中,每个 查询都会带有一个读的时间戳 (`start_ts`),MinTSO Scheduler 定义“特殊”查询的标准为当前 TiFlash 节点上 `start_ts` 最小的查询。根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊”查询必然是同一个,将其称之为 MinTSO 查询。MinTSO Scheduler 的调度流程如下: -通过引入 soft limit 与 hard limit,MinTSO 能保证系统线程数的同时有效地避免了系统死锁。不过对于高并发场景,可能会出现大部份 query 都只有部分 MPPTask 被调度的情况,对于只有部分 MPPTask 被调度的 query,它们实际上无法正常执行,从而导致系统执行效率低下。为了避免这种情况,我们给 MinTSO Scheduler 在 query 层面引入了一个限制,即 active_query_soft_limit,该限制的意思是系统最多只有 active_query_soft_limit 个 query 的 MPPTask 可以参与调度,对于其他的 query,其 MPPTask 不参与调度,只有等当前 query 结束之后,新的 query 才能参与调度。当然这个限制只是一个 soft limit,因为对于 MinTSO query 来说,其所有 MPPTask 在系统线程数不超过 hard limit 的时候都可以直接被调度。 +通过引入 soft limit 与 hard limit,MinTSO 调度器在控制系统线程数的同时,有效地避免了系统死锁。不过对于高并发场景,可能会出现大部份查询都只有部分 MPP Task 被调度的情况。只有部分 MPP Task 被调度的查询实际上无法正常执行,从而导致系统执行效率低下。为了避免这种情况,TiFlash 给 MinTSO Scheduler 在查询层面引入了一个限制,即 active_query_soft_limit,该限制的意思是系统最多只有 active_query_soft_limit 个查询的 MPP Task 可以参与调度;对于其它的查询,其 MPP Task 不参与调度,只有等当前查询结束之后,新的查询才能参与调度。当然该限制只是一个 soft limit,因为对于 MinTSO 查询来说,其所有 MPP Task 在系统线程数不超过 hard limit 时都可以直接被调度。 From 036487da6b1c0cfcaeea51ba2eb6d4208ee3320a Mon Sep 17 00:00:00 2001 From: xufei Date: Fri, 25 Oct 2024 20:01:07 +0800 Subject: [PATCH 15/21] Update tiflash/tiflash-mintso-scheduler.md --- tiflash/tiflash-mintso-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index b9207d250cc7..e9909fb1f0e8 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -5,7 +5,7 @@ summary: 介绍 TiFlash MinTSO 调度器。 # TiFlash MinTSO Scheduler -本文介绍 TiFlash MinTSO scheduler 的原理与实现。 +TiFlash MinTSO 调度器是 TiFlash 中一个分布式的基于 MPP Task 的调度器,本文介绍 TiFlash MinTSO scheduler 的原理与实现。 ## 背景 From 7961692f0dbd23b6e8a624df81cdf526501ecafb Mon Sep 17 00:00:00 2001 From: lilin90 Date: Mon, 28 Oct 2024 11:16:57 +0800 Subject: [PATCH 16/21] tiflash: update wording and format --- tiflash/tiflash-mintso-scheduler.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index e9909fb1f0e8..40efa6a15fdc 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -1,23 +1,23 @@ --- -title: TiFlash MinTSO Scheduler -summary: 介绍 TiFlash MinTSO 调度器。 +title: TiFlash MinTSO 调度器 +summary: 了解 TiFlash MinTSO 调度器的原理与实现。 --- -# TiFlash MinTSO Scheduler +# TiFlash MinTSO 调度器 -TiFlash MinTSO 调度器是 TiFlash 中一个分布式的基于 MPP Task 的调度器,本文介绍 TiFlash MinTSO scheduler 的原理与实现。 +TiFlash MinTSO 调度器是 TiFlash 中一个分布式的基于 MPP Task 的调度器。本文介绍 TiFlash MinTSO 调度器的原理与实现。 ## 背景 -对于 MPP 查询,TiDB 会将查询拆成一个或多个 MPP Task,并将 MPP Task 发送给对应的 TiFlash 节点。在 TiFlash 节点内部,对每个 MPP Task 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md) 之前,对于每个 MPP Task,TiFlash 都需要使用若干个线程来执行,具体线程数取决于 MPP Task 的复杂度以及 TiFlash 并发参数的设置。在高并发场景中,TiFlash 节点会同时接收到多个 MPP Task,如果 TiFlash 不对 MPP Task 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPP Task 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数有限,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会遇到无法申请线程的错误。 +对于 MPP 查询,TiDB 会将查询拆成一个或多个 MPP Task,并将 MPP Task 发送给对应的 TiFlash 节点。在 TiFlash 节点内部,对每个 MPP Task 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md)之前,对于每个 MPP Task,TiFlash 都需要使用若干个线程来执行,具体线程数取决于 MPP Task 的复杂度以及 TiFlash 并发参数的设置。在高并发场景中,TiFlash 节点会同时接收到多个 MPP Task,如果 TiFlash 不对 MPP Task 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPP Task 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数有限,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会遇到无法申请线程的错误。 -为了提升 TiFlash 在高并发场景下的处理能力,需要在 TiFlash 中引入一个 task 调度器。 +为了提升 TiFlash 在高并发场景下的处理能力,需要在 TiFlash 中引入一个 Task 调度器。 ## 设计实现 -如背景所述,TiFlash task scheudler 引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPP Task,调度器根据当前系统已经使用的线程数以及该 MPP Task 预期使用的线程数,决定该 MPP Task 是否能够被调度: +如背景所述,TiFlash Task 调度器引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPP Task,调度器根据当前系统已经使用的线程数以及该 MPP Task 预期使用的线程数,决定该 MPP Task 是否能够被调度: - +![TiFlash MinTSO Scheduler v1](/media/tiflash/tiflash_mintso_v1.png) 尽管上述调度策略能有效控制系统的线程数,但是 MPP Task 并不是一个最小的独立执行单元,不同 MPP Task 之间会有依赖关系: @@ -44,17 +44,17 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; +--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ ``` -以上查询会在每个 TiFlash 节点中生成 2 个 MPP Task,其中 `ExchangeSender_21` 所在的 MPP Task 依赖于 `ExchangeSender_45` 所在的 MPP Task。在该查询高并发的情况下,如果调度器调度了每个查询中 `ExchangeSender_45` 所在的 MPP Task,则系统就会进入死锁状态。 +以上查询会在每个 TiFlash 节点中生成 2 个 MPP Task,其中 `ExchangeSender_21` 所在的 MPP Task 依赖于 `ExchangeSender_45` 所在的 MPP Task。在该查询高并发的情况下,如果调度器调度了每个查询中 `ExchangeSender_45` 所在的 MPP Task,系统就会进入死锁状态。 -为了避免系统陷入死锁状态,TiFlash 引入了两层线程的限制: +为了避免系统陷入死锁状态,TiFlash 引入了以下两层线程的限制: * threads_soft_limit:主要用来限制系统使用的线程数。对于特定的 MPP Task,为了避免死锁,可以打破该限制。 * threads_hard_limit:主要为了保护系统,一旦系统使用的线程数超过 hard limit,TiFlash 会通过报错来避免系统陷入死锁状态。 使用 soft limit 和 hard limit 避免死锁的原理是:通过 soft limit 限制所有查询使用的线程资源总量,在充分利用资源的基础上,避免线程资源耗尽。通过 hard limit 确保在任何情况下,系统中至少存在一个查询可以突破 soft limit 的限制,继续获取线程资源并继续运行,避免死锁。只要线程数不超过 hard limit,系统中就必定存在一个查询,该查询所有的 MPP Task 都可以正常执行,这样系统就不会出现死锁。 -MinTSO Scheduler 的目标是在控制系统线程数的同时,确保系统中始终有且只有一个特殊的查询,其所有的 MPP Task 都可以被调度到。MinTSO Scheduler 是一个完全分布式的调度器,每个 TiFlash 节点仅根据自身信息对 MPP Task 进行调度,因此,所有 TiFlash 节点的 MinTSO Scheduler 需要找到同一个“特殊”的查询。在 TiDB 中,每个 查询都会带有一个读的时间戳 (`start_ts`),MinTSO Scheduler 定义“特殊”查询的标准为当前 TiFlash 节点上 `start_ts` 最小的查询。根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊”查询必然是同一个,将其称之为 MinTSO 查询。MinTSO Scheduler 的调度流程如下: +MinTSO 调度器的目标是在控制系统线程数的同时,确保系统中始终有且只有一个特殊的查询,其所有的 MPP Task 都可以被调度到。MinTSO 调度器是一个完全分布式的调度器,每个 TiFlash 节点仅根据自身信息对 MPP Task 进行调度,因此,所有 TiFlash 节点的 MinTSO 调度器需要找到同一个“特殊”的查询。在 TiDB 中,每个查询都会带有一个读的时间戳 (`start_ts`),MinTSO 调度器定义“特殊”查询的标准为当前 TiFlash 节点上 `start_ts` 最小的查询。根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊”查询必然是同一个,将其称之为 MinTSO 查询。MinTSO 调度器的调度流程如下: - +![TiFlash MinTSO Scheduler v2](/media/tiflash/tiflash_mintso_v2.png) 通过引入 soft limit 与 hard limit,MinTSO 调度器在控制系统线程数的同时,有效地避免了系统死锁。不过对于高并发场景,可能会出现大部份查询都只有部分 MPP Task 被调度的情况。只有部分 MPP Task 被调度的查询实际上无法正常执行,从而导致系统执行效率低下。为了避免这种情况,TiFlash 给 MinTSO Scheduler 在查询层面引入了一个限制,即 active_query_soft_limit,该限制的意思是系统最多只有 active_query_soft_limit 个查询的 MPP Task 可以参与调度;对于其它的查询,其 MPP Task 不参与调度,只有等当前查询结束之后,新的查询才能参与调度。当然该限制只是一个 soft limit,因为对于 MinTSO 查询来说,其所有 MPP Task 在系统线程数不超过 hard limit 时都可以直接被调度。 From 882e821fd3feeecce0f0db04fa2c76eada045132 Mon Sep 17 00:00:00 2001 From: lilin90 Date: Mon, 28 Oct 2024 11:18:42 +0800 Subject: [PATCH 17/21] tiflash: update wording for consistency --- tiflash/tiflash-mintso-scheduler.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 40efa6a15fdc..ce198fc6ddcf 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -1,11 +1,11 @@ --- title: TiFlash MinTSO 调度器 -summary: 了解 TiFlash MinTSO 调度器的原理与实现。 +summary: 了解 TiFlash MinTSO 调度器的实现原理。 --- # TiFlash MinTSO 调度器 -TiFlash MinTSO 调度器是 TiFlash 中一个分布式的基于 MPP Task 的调度器。本文介绍 TiFlash MinTSO 调度器的原理与实现。 +TiFlash MinTSO 调度器是 TiFlash 中一个分布式的基于 MPP Task 的调度器。本文介绍 TiFlash MinTSO 调度器的实现原理。 ## 背景 @@ -13,7 +13,7 @@ TiFlash MinTSO 调度器是 TiFlash 中一个分布式的基于 MPP Task 的调 为了提升 TiFlash 在高并发场景下的处理能力,需要在 TiFlash 中引入一个 Task 调度器。 -## 设计实现 +## 实现原理 如背景所述,TiFlash Task 调度器引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPP Task,调度器根据当前系统已经使用的线程数以及该 MPP Task 预期使用的线程数,决定该 MPP Task 是否能够被调度: From d103e7d89bdd73ae5d015b33cd0b2cda39a7cbe8 Mon Sep 17 00:00:00 2001 From: lilin90 Date: Mon, 28 Oct 2024 11:22:13 +0800 Subject: [PATCH 18/21] tiflash: update wording --- tiflash/tiflash-mintso-scheduler.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index ce198fc6ddcf..25acd9d03256 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -9,7 +9,9 @@ TiFlash MinTSO 调度器是 TiFlash 中一个分布式的基于 MPP Task 的调 ## 背景 -对于 MPP 查询,TiDB 会将查询拆成一个或多个 MPP Task,并将 MPP Task 发送给对应的 TiFlash 节点。在 TiFlash 节点内部,对每个 MPP Task 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md)之前,对于每个 MPP Task,TiFlash 都需要使用若干个线程来执行,具体线程数取决于 MPP Task 的复杂度以及 TiFlash 并发参数的设置。在高并发场景中,TiFlash 节点会同时接收到多个 MPP Task,如果 TiFlash 不对 MPP Task 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPP Task 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数有限,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会遇到无法申请线程的错误。 +对于 MPP 查询,TiDB 会将查询拆成一个或多个 MPP Task,并将 MPP Task 发送给对应的 TiFlash 节点。在 TiFlash 节点内部,对每个 MPP Task 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md)之前,对于每个 MPP Task,TiFlash 都需要使用若干个线程来执行,具体线程数取决于 MPP Task 的复杂度以及 TiFlash 并发参数的设置。 + +在高并发场景中,TiFlash 节点会同时接收到多个 MPP Task,如果 TiFlash 不对 MPP Task 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPP Task 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数有限,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会遇到无法申请线程的错误。 为了提升 TiFlash 在高并发场景下的处理能力,需要在 TiFlash 中引入一个 Task 调度器。 @@ -57,4 +59,4 @@ MinTSO 调度器的目标是在控制系统线程数的同时,确保系统中 ![TiFlash MinTSO Scheduler v2](/media/tiflash/tiflash_mintso_v2.png) -通过引入 soft limit 与 hard limit,MinTSO 调度器在控制系统线程数的同时,有效地避免了系统死锁。不过对于高并发场景,可能会出现大部份查询都只有部分 MPP Task 被调度的情况。只有部分 MPP Task 被调度的查询实际上无法正常执行,从而导致系统执行效率低下。为了避免这种情况,TiFlash 给 MinTSO Scheduler 在查询层面引入了一个限制,即 active_query_soft_limit,该限制的意思是系统最多只有 active_query_soft_limit 个查询的 MPP Task 可以参与调度;对于其它的查询,其 MPP Task 不参与调度,只有等当前查询结束之后,新的查询才能参与调度。当然该限制只是一个 soft limit,因为对于 MinTSO 查询来说,其所有 MPP Task 在系统线程数不超过 hard limit 时都可以直接被调度。 +通过引入 soft limit 与 hard limit,MinTSO 调度器在控制系统线程数的同时,有效地避免了系统死锁。不过对于高并发场景,可能会出现大部份查询都只有部分 MPP Task 被调度的情况。只有部分 MPP Task 被调度的查询实际上无法正常执行,从而导致系统执行效率低下。为了避免这种情况,TiFlash 给 MinTSO 调度器在查询层面引入了一个限制,即 active_query_soft_limit,该限制的意思是系统最多只有 active_query_soft_limit 个查询的 MPP Task 可以参与调度;对于其它的查询,其 MPP Task 不参与调度,只有等当前查询结束之后,新的查询才能参与调度。当然该限制只是一个 soft limit,因为对于 MinTSO 查询来说,其所有 MPP Task 在系统线程数不超过 hard limit 时都可以直接被调度。 From b3aa9bc51280aba1c61b0b8be640940f5cd447b8 Mon Sep 17 00:00:00 2001 From: xufei Date: Mon, 28 Oct 2024 14:33:37 +0800 Subject: [PATCH 19/21] Apply suggestions from code review Co-authored-by: Grace Cai --- tiflash/tiflash-mintso-scheduler.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 25acd9d03256..25db1acb226e 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -5,26 +5,26 @@ summary: 了解 TiFlash MinTSO 调度器的实现原理。 # TiFlash MinTSO 调度器 -TiFlash MinTSO 调度器是 TiFlash 中一个分布式的基于 MPP Task 的调度器。本文介绍 TiFlash MinTSO 调度器的实现原理。 +TiFlash MinTSO 调度器是 TiFlash 中针对 [MPP](/glossary.md#mpp) Task 的分布式调度器。本文介绍 TiFlash MinTSO 调度器的实现原理。 ## 背景 -对于 MPP 查询,TiDB 会将查询拆成一个或多个 MPP Task,并将 MPP Task 发送给对应的 TiFlash 节点。在 TiFlash 节点内部,对每个 MPP Task 进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md)之前,对于每个 MPP Task,TiFlash 都需要使用若干个线程来执行,具体线程数取决于 MPP Task 的复杂度以及 TiFlash 并发参数的设置。 +在处理 MPP 查询时,TiDB 会将查询拆分成一个或多个 MPP Task,并将这些 MPP Task 发送给对应的 TiFlash 节点进行编译与执行。在 TiFlash 使用 [pipeline 执行模型](/tiflash/tiflash-pipeline-model.md)之前,对于每个 MPP Task,TiFlash 都需要使用若干个线程来执行,具体线程数取决于 MPP Task 的复杂度以及 TiFlash 并发参数的设置。 -在高并发场景中,TiFlash 节点会同时接收到多个 MPP Task,如果 TiFlash 不对 MPP Task 的执行有所控制,则 TiFlash 需要向系统申请的线程数会随着 MPP Task 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面操作系统本身支持的线程数有限,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会遇到无法申请线程的错误。 +在高并发场景中,TiFlash 节点会同时接收到多个 MPP Task,如果不对 MPP Task 的执行进行控制,TiFlash 需要向系统申请的线程数会随着 MPP Task 数量的增加而线性增加。过多的线程一方面会影响 TiFlash 的执行效率,另一方面由于操作系统本身支持的线程数有限,当 TiFlash 申请的线程数超过操作系统的限制时,TiFlash 就会遇到无法申请线程的错误。 -为了提升 TiFlash 在高并发场景下的处理能力,需要在 TiFlash 中引入一个 Task 调度器。 +为了提升 TiFlash 在高并发场景下的处理能力,需要在 TiFlash 中引入一个 MPP Task 调度器。 ## 实现原理 -如背景所述,TiFlash Task 调度器引入的初衷是控制运行时使用的线程数。一个简单的想法是指定 TiFlash 可以申请的最大线程数,对于每个 MPP Task,调度器根据当前系统已经使用的线程数以及该 MPP Task 预期使用的线程数,决定该 MPP Task 是否能够被调度: +如背景所述,TiFlash Task 调度器引入的初衷是控制 MPP 查询运行时使用的线程数。一种简单的调度策略是指定 TiFlash 可以申请的最大线程数。对于每个 MPP Task,调度器根据当前系统已经使用的线程数以及该 MPP Task 预期使用的线程数,决定该 MPP Task 是否能够被调度: ![TiFlash MinTSO Scheduler v1](/media/tiflash/tiflash_mintso_v1.png) 尽管上述调度策略能有效控制系统的线程数,但是 MPP Task 并不是一个最小的独立执行单元,不同 MPP Task 之间会有依赖关系: ```sql -mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; +EXPLAIN SELECT count(*) FROM t0 a JOIN t0 b ON a.id = b.id; ``` ``` @@ -46,17 +46,17 @@ mysql> explain select count(*) from t0 a join t0 b on a.id = b.id; +--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ ``` -以上查询会在每个 TiFlash 节点中生成 2 个 MPP Task,其中 `ExchangeSender_21` 所在的 MPP Task 依赖于 `ExchangeSender_45` 所在的 MPP Task。在该查询高并发的情况下,如果调度器调度了每个查询中 `ExchangeSender_45` 所在的 MPP Task,系统就会进入死锁状态。 +例如,以上查询会在每个 TiFlash 节点中生成 2 个 MPP Task,其中 `ExchangeSender_45` 所在的 MPP Task 依赖于 `ExchangeSender_21` 所在的 MPP Task。在该查询高并发的情况下,如果调度器调度了每个查询中 `ExchangeSender_45` 所在的 MPP Task,系统就会进入死锁状态。 为了避免系统陷入死锁状态,TiFlash 引入了以下两层线程的限制: * threads_soft_limit:主要用来限制系统使用的线程数。对于特定的 MPP Task,为了避免死锁,可以打破该限制。 * threads_hard_limit:主要为了保护系统,一旦系统使用的线程数超过 hard limit,TiFlash 会通过报错来避免系统陷入死锁状态。 -使用 soft limit 和 hard limit 避免死锁的原理是:通过 soft limit 限制所有查询使用的线程资源总量,在充分利用资源的基础上,避免线程资源耗尽。通过 hard limit 确保在任何情况下,系统中至少存在一个查询可以突破 soft limit 的限制,继续获取线程资源并继续运行,避免死锁。只要线程数不超过 hard limit,系统中就必定存在一个查询,该查询所有的 MPP Task 都可以正常执行,这样系统就不会出现死锁。 +使用 soft limit 和 hard limit 避免死锁的原理是:通过 soft limit 限制所有查询使用的线程资源总量,在充分利用资源的基础上,避免线程资源耗尽。通过 hard limit 确保在任何情况下,系统中至少存在一个查询可以突破 soft limit 的限制,继续获取线程资源并运行,避免死锁。只要线程数不超过 hard limit,系统中就必定存在一个查询,该查询所有的 MPP Task 都可以正常执行,这样系统就不会出现死锁。 -MinTSO 调度器的目标是在控制系统线程数的同时,确保系统中始终有且只有一个特殊的查询,其所有的 MPP Task 都可以被调度到。MinTSO 调度器是一个完全分布式的调度器,每个 TiFlash 节点仅根据自身信息对 MPP Task 进行调度,因此,所有 TiFlash 节点的 MinTSO 调度器需要找到同一个“特殊”的查询。在 TiDB 中,每个查询都会带有一个读的时间戳 (`start_ts`),MinTSO 调度器定义“特殊”查询的标准为当前 TiFlash 节点上 `start_ts` 最小的查询。根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊”查询必然是同一个,将其称之为 MinTSO 查询。MinTSO 调度器的调度流程如下: +MinTSO 调度器的目标是在控制系统线程数的同时,确保系统中始终有且只有一个特殊的查询,其所有的 MPP Task 都可以被调度。MinTSO 调度器是一个完全分布式的调度器,每个 TiFlash 节点仅根据自身信息对 MPP Task 进行调度,因此,所有 TiFlash 节点的 MinTSO 调度器需要识别出同一个“特殊”查询。在 TiDB 中,每个查询都会带有一个读的时间戳 (`start_ts`),MinTSO 调度器定义“特殊”查询的标准为当前 TiFlash 节点上 `start_ts` 最小的查询。根据全局最小一定是局部最小的原理,所有的 TiFlash 选出的“特殊”查询必然是同一个,称为 MinTSO 查询。MinTSO 调度器的调度流程如下: ![TiFlash MinTSO Scheduler v2](/media/tiflash/tiflash_mintso_v2.png) -通过引入 soft limit 与 hard limit,MinTSO 调度器在控制系统线程数的同时,有效地避免了系统死锁。不过对于高并发场景,可能会出现大部份查询都只有部分 MPP Task 被调度的情况。只有部分 MPP Task 被调度的查询实际上无法正常执行,从而导致系统执行效率低下。为了避免这种情况,TiFlash 给 MinTSO 调度器在查询层面引入了一个限制,即 active_query_soft_limit,该限制的意思是系统最多只有 active_query_soft_limit 个查询的 MPP Task 可以参与调度;对于其它的查询,其 MPP Task 不参与调度,只有等当前查询结束之后,新的查询才能参与调度。当然该限制只是一个 soft limit,因为对于 MinTSO 查询来说,其所有 MPP Task 在系统线程数不超过 hard limit 时都可以直接被调度。 +通过引入 soft limit 与 hard limit,MinTSO 调度器在控制系统线程数的同时,有效地避免了系统死锁。不过对于高并发场景,可能会出现大多数查询都只有部分 MPP Task 被调度的情况。只有部分 MPP Task 被调度的查询无法正常执行,从而导致系统执行效率低下。为了避免这种情况,TiFlash 在查询层面为 MinTSO 调度器引入了一个限制,即 active_query_soft_limit,该限制要求系统最多只有 active_query_soft_limit 个查询的 MPP Task 可以参与调度;对于其它的查询,其 MPP Task 不参与调度,只有等当前查询结束之后,新的查询才能参与调度。该限制只是一个 soft limit,因为对于 MinTSO 查询来说,其所有 MPP Task 在系统线程数不超过 hard limit 时都可以直接被调度。 From ca5ec767e51baf7a3e2a438be8f7123ec53f6d64 Mon Sep 17 00:00:00 2001 From: xufei Date: Mon, 28 Oct 2024 17:13:36 +0800 Subject: [PATCH 20/21] save work Signed-off-by: xufei --- tiflash/tiflash-mintso-scheduler.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 25db1acb226e..11a57b335dce 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -50,8 +50,8 @@ EXPLAIN SELECT count(*) FROM t0 a JOIN t0 b ON a.id = b.id; 为了避免系统陷入死锁状态,TiFlash 引入了以下两层线程的限制: -* threads_soft_limit:主要用来限制系统使用的线程数。对于特定的 MPP Task,为了避免死锁,可以打破该限制。 -* threads_hard_limit:主要为了保护系统,一旦系统使用的线程数超过 hard limit,TiFlash 会通过报错来避免系统陷入死锁状态。 +* thread_soft_limit:主要用来限制系统使用的线程数。对于特定的 MPP Task,为了避免死锁,可以打破该限制。 +* thread_hard_limit:主要为了保护系统,一旦系统使用的线程数超过 hard limit,TiFlash 会通过报错来避免系统陷入死锁状态。 使用 soft limit 和 hard limit 避免死锁的原理是:通过 soft limit 限制所有查询使用的线程资源总量,在充分利用资源的基础上,避免线程资源耗尽。通过 hard limit 确保在任何情况下,系统中至少存在一个查询可以突破 soft limit 的限制,继续获取线程资源并运行,避免死锁。只要线程数不超过 hard limit,系统中就必定存在一个查询,该查询所有的 MPP Task 都可以正常执行,这样系统就不会出现死锁。 @@ -59,4 +59,4 @@ MinTSO 调度器的目标是在控制系统线程数的同时,确保系统中 ![TiFlash MinTSO Scheduler v2](/media/tiflash/tiflash_mintso_v2.png) -通过引入 soft limit 与 hard limit,MinTSO 调度器在控制系统线程数的同时,有效地避免了系统死锁。不过对于高并发场景,可能会出现大多数查询都只有部分 MPP Task 被调度的情况。只有部分 MPP Task 被调度的查询无法正常执行,从而导致系统执行效率低下。为了避免这种情况,TiFlash 在查询层面为 MinTSO 调度器引入了一个限制,即 active_query_soft_limit,该限制要求系统最多只有 active_query_soft_limit 个查询的 MPP Task 可以参与调度;对于其它的查询,其 MPP Task 不参与调度,只有等当前查询结束之后,新的查询才能参与调度。该限制只是一个 soft limit,因为对于 MinTSO 查询来说,其所有 MPP Task 在系统线程数不超过 hard limit 时都可以直接被调度。 +通过引入 soft limit 与 hard limit,MinTSO 调度器在控制系统线程数的同时,有效地避免了系统死锁。不过对于高并发场景,可能会出现大多数查询都只有部分 MPP Task 被调度的情况。只有部分 MPP Task 被调度的查询无法正常执行,从而导致系统执行效率低下。为了避免这种情况,TiFlash 在查询层面为 MinTSO 调度器引入了一个限制,即 active_set_soft_limit,该限制要求系统最多只有 active_set_soft_limit 个查询的 MPP Task 可以参与调度;对于其它的查询,其 MPP Task 不参与调度,只有等当前查询结束之后,新的查询才能参与调度。该限制只是一个 soft limit,因为对于 MinTSO 查询来说,其所有 MPP Task 在系统线程数不超过 hard limit 时都可以直接被调度。 From 850385794f6f991e262817391fbc2ad0699e5c92 Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Mon, 4 Nov 2024 10:30:58 +0800 Subject: [PATCH 21/21] Update wording --- tiflash/tiflash-mintso-scheduler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tiflash/tiflash-mintso-scheduler.md b/tiflash/tiflash-mintso-scheduler.md index 11a57b335dce..2b47dce0791c 100644 --- a/tiflash/tiflash-mintso-scheduler.md +++ b/tiflash/tiflash-mintso-scheduler.md @@ -46,7 +46,7 @@ EXPLAIN SELECT count(*) FROM t0 a JOIN t0 b ON a.id = b.id; +--------------------------------------------+----------+--------------+---------------+----------------------------------------------------------+ ``` -例如,以上查询会在每个 TiFlash 节点中生成 2 个 MPP Task,其中 `ExchangeSender_45` 所在的 MPP Task 依赖于 `ExchangeSender_21` 所在的 MPP Task。在该查询高并发的情况下,如果调度器调度了每个查询中 `ExchangeSender_45` 所在的 MPP Task,系统就会进入死锁状态。 +例如,以上查询会在每个 TiFlash 节点中生成 2 个 MPP Task,其中执行器 `ExchangeSender_45` 所在的 MPP Task 依赖于 `ExchangeSender_21` 所在的 MPP Task。在该查询高并发的情况下,如果调度器调度了每个查询中 `ExchangeSender_45` 所在的 MPP Task,系统就会进入死锁状态。 为了避免系统陷入死锁状态,TiFlash 引入了以下两层线程的限制: