From 95458bafc9dc99ac8fcd68aa8f48a9fc564e6a31 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 3 Sep 2010 22:09:14 +0930 Subject: [PATCH] tdb2: document problems with moving or enlarging hash table. --- ccan/tdb2/doc/design.lyx | 186 ++++++++++++++++++++++++++- ccan/tdb2/doc/design.lyx,v | 256 ++++++++++++++++++++++++++++++++++++- ccan/tdb2/doc/design.pdf | Bin 185894 -> 226890 bytes ccan/tdb2/doc/design.txt | 81 ++++++++---- 4 files changed, 489 insertions(+), 34 deletions(-) diff --git a/ccan/tdb2/doc/design.lyx b/ccan/tdb2/doc/design.lyx index 51378c33..276832ea 100644 --- a/ccan/tdb2/doc/design.lyx +++ b/ccan/tdb2/doc/design.lyx @@ -35,7 +35,7 @@ \paperpagestyle default \tracking_changes true \output_changes true -\author "" +\author "Rusty Russell,,," \author "" \end_header @@ -50,7 +50,13 @@ Rusty Russell, IBM Corporation \end_layout \begin_layout Date -26-July-2010 + +\change_deleted 0 1283307542 +26-July +\change_inserted 0 1283307544 +1-September +\change_unchanged +-2010 \end_layout \begin_layout Abstract @@ -1324,6 +1330,16 @@ TDB contains a number of hash chains in the header; the number is specified \end_layout \begin_layout Subsubsection + +\change_inserted 0 1283336713 +\begin_inset CommandInset label +LatexCommand label +name "sub:Hash-Size-Solution" + +\end_inset + + +\change_unchanged Proposed Solution \end_layout @@ -1342,22 +1358,32 @@ http://rusty.ozlabs.org/?p=89 and http://rusty.ozlabs.org/?p=94 This was annoyin , it became clear that it is hard to beat a straight linear hash table which doubles in size when it reaches saturation. - There are three details which become important: + +\change_deleted 0 1283307675 +There are three details which become important: \end_layout \begin_layout Enumerate + +\change_deleted 0 1283307675 On encountering a full bucket, we use the next bucket. \end_layout \begin_layout Enumerate + +\change_deleted 0 1283307675 Extra hash bits are stored with the offset, to reduce comparisons. \end_layout \begin_layout Enumerate + +\change_deleted 0 1283307675 A marker entry is used on deleting an entry. \end_layout \begin_layout Standard + +\change_deleted 0 1283307675 The doubling of the table must be done under a transaction; we will not reduce it on deletion, so it will be an unusual case. It will either be placed at the head (other entries will be moved out the @@ -1368,6 +1394,8 @@ The doubling of the table must be done under a transaction; we will not \end_layout \begin_layout Standard + +\change_deleted 0 1283307675 The locking for this is slightly more complex than the chained case; we currently have one lock per bucket, and that means we would need to expand the lock if we overflow to the next bucket. @@ -1376,8 +1404,43 @@ The locking for this is slightly more complex than the chained case; we \end_layout \begin_layout Standard + +\change_deleted 0 1283307675 One possible optimization is to only re-check the hash size on an insert or a lookup miss. + +\change_inserted 0 1283307770 + Unfortunately, altering the hash table introduces serious locking complications +: the entire hash table needs to be locked to enlarge the hash table, and + others might be holding locks. + Particularly insidious are insertions done under tdb_chainlock. +\end_layout + +\begin_layout Standard + +\change_inserted 0 1283336187 +Thus an expanding layered hash will be used: an array of hash groups, with + each hash group exploding into pointers to lower hash groups once it fills, + turning into a hash tree. + This has implications for locking: we must lock the entire group in case + we need to expand it, yet we don't know how deep the tree is at that point. +\end_layout + +\begin_layout Standard + +\change_inserted 0 1283336586 +Note that bits from the hash table entries should be stolen to hold more + hash bits to reduce the penalty of collisions. + We can use the otherwise-unused lower 3 bits. + If we limit the size of the database to 64 exabytes, we can use the top + 8 bits of the hash entry as well. + These 11 bits would reduce false positives down to 1 in 2000 which is more + than we need: we can use one of the bits to indicate that the extra hash + bits are valid. + This means we can choose not to re-hash all entries when we expand a hash + group; simply use the next bits we need and mark them invalid. +\change_unchanged + \end_layout \begin_layout Subsection @@ -1504,6 +1567,8 @@ The single list lock limits our allocation rate; due to the other issues \begin_layout Subsubsection Proposed Solution +\change_deleted 0 1283336858 + \end_layout \begin_layout Standard @@ -1518,6 +1583,20 @@ The free list must be split to reduce contention. This implies that the number of free lists is related to the size of the hash table, but as it is rare to walk a large number of free list entries we can use far fewer, say 1/32 of the number of hash buckets. +\change_inserted 0 1283336910 + +\end_layout + +\begin_layout Standard + +\change_inserted 0 1283337052 +It seems tempting to try to reuse the hash implementation which we use for + records here, but we have two ways of searching for free entries: for allocatio +n we search by size (and possibly zone) which produces too many clashes + for our hash table to handle well, and for coalescing we search by address. + Thus an array of doubly-linked free lists seems preferable. +\change_unchanged + \end_layout \begin_layout Standard @@ -1639,6 +1718,68 @@ reference "sub:Records-Incur-A" I anticipate that the number of entries in each free zone would be small, but it might be worth using one free entry to hold pointers to the others for cache efficiency. +\change_inserted 0 1283309850 + +\end_layout + +\begin_layout Standard + +\change_inserted 0 1283337216 +\begin_inset CommandInset label +LatexCommand label +name "freelist-in-zone" + +\end_inset + +If we want to avoid locking complexity (enlarging the free lists when we + enlarge the file) we could place the array of free lists at the beginning + of each zone. + This means existing array lists never move, but means that a record cannot + be larger than a zone. + That in turn implies that zones should be variable sized (say, power of + 2), which makes the question +\begin_inset Quotes eld +\end_inset + +what zone is this record in? +\begin_inset Quotes erd +\end_inset + + much harder (and +\begin_inset Quotes eld +\end_inset + +pick a random zone +\begin_inset Quotes erd +\end_inset + +, but that's less common). + It could be done with as few as 4 bits from the record header. +\begin_inset Foot +status open + +\begin_layout Plain Layout + +\change_inserted 0 1283310945 +Using +\begin_inset Formula $2^{16+N*3}$ +\end_inset + +means 0 gives a minimal 65536-byte zone, 15 gives the maximal +\begin_inset Formula $2^{61}$ +\end_inset + + byte zone. + Zones range in factor of 8 steps. +\change_unchanged + +\end_layout + +\end_inset + + +\change_unchanged + \end_layout \begin_layout Subsection @@ -1840,6 +1981,19 @@ miss it reduces 99.9% of false memcmp). As an aside, as the lower bits are already incorporated in the hash table resolution, the upper bits should be used here. + +\change_inserted 0 1283336739 + Note that it's not clear that these bits will be a win, given the extra + bits in the hash table itself (see +\begin_inset CommandInset ref +LatexCommand ref +reference "sub:Hash-Size-Solution" + +\end_inset + +). +\change_unchanged + \end_layout \begin_layout Enumerate @@ -1917,6 +2071,16 @@ struct tdb_free_record { \begin_layout LyX-Code uint64_t total_length; +\change_inserted 0 1283337133 + +\end_layout + +\begin_layout LyX-Code + +\change_inserted 0 1283337139 + uint64_t prev, next; +\change_unchanged + \end_layout \begin_layout LyX-Code @@ -1931,7 +2095,21 @@ struct tdb_free_record { }; \end_layout -\begin_layout LyX-Code +\begin_layout Standard + +\change_inserted 0 1283337235 +We might want to take some bits from the used record's top_hash (and the + free record which has 32 bits of padding to spare anyway) if we use variable + sized zones. + See +\begin_inset CommandInset ref +LatexCommand ref +reference "freelist-in-zone" + +\end_inset + +. +\change_unchanged \end_layout diff --git a/ccan/tdb2/doc/design.lyx,v b/ccan/tdb2/doc/design.lyx,v index e44b3fc4..47220267 100644 --- a/ccan/tdb2/doc/design.lyx,v +++ b/ccan/tdb2/doc/design.lyx,v @@ -1,10 +1,20 @@ -head 1.6; +head 1.8; access; symbols; locks; strict; comment @# @; +1.8 +date 2010.09.02.02.29.05; author rusty; state Exp; +branches; +next 1.7; + +1.7 +date 2010.09.01.10.58.12; author rusty; state Exp; +branches; +next 1.6; + 1.6 date 2010.08.02.00.21.43; author rusty; state Exp; branches; @@ -41,9 +51,9 @@ desc @ -1.6 +1.8 log -@Commit changes +@Remove bogus footnote @ text @#LyX 1.6.5 created this file. For more info see http://www.lyx.org/ @@ -83,7 +93,7 @@ text \paperpagestyle default \tracking_changes true \output_changes true -\author "" +\author "Rusty Russell,,," \author "" \end_header @@ -98,7 +108,13 @@ Rusty Russell, IBM Corporation \end_layout \begin_layout Date -26-July-2010 + +\change_deleted 0 1283307542 +26-July +\change_inserted 0 1283307544 +1-September +\change_unchanged +-2010 \end_layout \begin_layout Abstract @@ -1372,6 +1388,16 @@ TDB contains a number of hash chains in the header; the number is specified \end_layout \begin_layout Subsubsection + +\change_inserted 0 1283336713 +\begin_inset CommandInset label +LatexCommand label +name "sub:Hash-Size-Solution" + +\end_inset + + +\change_unchanged Proposed Solution \end_layout @@ -1390,22 +1416,32 @@ http://rusty.ozlabs.org/?p=89 and http://rusty.ozlabs.org/?p=94 This was annoyin , it became clear that it is hard to beat a straight linear hash table which doubles in size when it reaches saturation. - There are three details which become important: + +\change_deleted 0 1283307675 +There are three details which become important: \end_layout \begin_layout Enumerate + +\change_deleted 0 1283307675 On encountering a full bucket, we use the next bucket. \end_layout \begin_layout Enumerate + +\change_deleted 0 1283307675 Extra hash bits are stored with the offset, to reduce comparisons. \end_layout \begin_layout Enumerate + +\change_deleted 0 1283307675 A marker entry is used on deleting an entry. \end_layout \begin_layout Standard + +\change_deleted 0 1283307675 The doubling of the table must be done under a transaction; we will not reduce it on deletion, so it will be an unusual case. It will either be placed at the head (other entries will be moved out the @@ -1416,6 +1452,8 @@ The doubling of the table must be done under a transaction; we will not \end_layout \begin_layout Standard + +\change_deleted 0 1283307675 The locking for this is slightly more complex than the chained case; we currently have one lock per bucket, and that means we would need to expand the lock if we overflow to the next bucket. @@ -1424,8 +1462,43 @@ The locking for this is slightly more complex than the chained case; we \end_layout \begin_layout Standard + +\change_deleted 0 1283307675 One possible optimization is to only re-check the hash size on an insert or a lookup miss. + +\change_inserted 0 1283307770 + Unfortunately, altering the hash table introduces serious locking complications +: the entire hash table needs to be locked to enlarge the hash table, and + others might be holding locks. + Particularly insidious are insertions done under tdb_chainlock. +\end_layout + +\begin_layout Standard + +\change_inserted 0 1283336187 +Thus an expanding layered hash will be used: an array of hash groups, with + each hash group exploding into pointers to lower hash groups once it fills, + turning into a hash tree. + This has implications for locking: we must lock the entire group in case + we need to expand it, yet we don't know how deep the tree is at that point. +\end_layout + +\begin_layout Standard + +\change_inserted 0 1283336586 +Note that bits from the hash table entries should be stolen to hold more + hash bits to reduce the penalty of collisions. + We can use the otherwise-unused lower 3 bits. + If we limit the size of the database to 64 exabytes, we can use the top + 8 bits of the hash entry as well. + These 11 bits would reduce false positives down to 1 in 2000 which is more + than we need: we can use one of the bits to indicate that the extra hash + bits are valid. + This means we can choose not to re-hash all entries when we expand a hash + group; simply use the next bits we need and mark them invalid. +\change_unchanged + \end_layout \begin_layout Subsection @@ -1552,6 +1625,8 @@ The single list lock limits our allocation rate; due to the other issues \begin_layout Subsubsection Proposed Solution +\change_deleted 0 1283336858 + \end_layout \begin_layout Standard @@ -1566,6 +1641,20 @@ The free list must be split to reduce contention. This implies that the number of free lists is related to the size of the hash table, but as it is rare to walk a large number of free list entries we can use far fewer, say 1/32 of the number of hash buckets. +\change_inserted 0 1283336910 + +\end_layout + +\begin_layout Standard + +\change_inserted 0 1283337052 +It seems tempting to try to reuse the hash implementation which we use for + records here, but we have two ways of searching for free entries: for allocatio +n we search by size (and possibly zone) which produces too many clashes + for our hash table to handle well, and for coalescing we search by address. + Thus an array of doubly-linked free lists seems preferable. +\change_unchanged + \end_layout \begin_layout Standard @@ -1687,6 +1776,68 @@ reference "sub:Records-Incur-A" I anticipate that the number of entries in each free zone would be small, but it might be worth using one free entry to hold pointers to the others for cache efficiency. +\change_inserted 0 1283309850 + +\end_layout + +\begin_layout Standard + +\change_inserted 0 1283337216 +\begin_inset CommandInset label +LatexCommand label +name "freelist-in-zone" + +\end_inset + +If we want to avoid locking complexity (enlarging the free lists when we + enlarge the file) we could place the array of free lists at the beginning + of each zone. + This means existing array lists never move, but means that a record cannot + be larger than a zone. + That in turn implies that zones should be variable sized (say, power of + 2), which makes the question +\begin_inset Quotes eld +\end_inset + +what zone is this record in? +\begin_inset Quotes erd +\end_inset + + much harder (and +\begin_inset Quotes eld +\end_inset + +pick a random zone +\begin_inset Quotes erd +\end_inset + +, but that's less common). + It could be done with as few as 4 bits from the record header. +\begin_inset Foot +status open + +\begin_layout Plain Layout + +\change_inserted 0 1283310945 +Using +\begin_inset Formula $2^{16+N*3}$ +\end_inset + +means 0 gives a minimal 65536-byte zone, 15 gives the maximal +\begin_inset Formula $2^{61}$ +\end_inset + + byte zone. + Zones range in factor of 8 steps. +\change_unchanged + +\end_layout + +\end_inset + + +\change_unchanged + \end_layout \begin_layout Subsection @@ -1888,6 +2039,19 @@ miss it reduces 99.9% of false memcmp). As an aside, as the lower bits are already incorporated in the hash table resolution, the upper bits should be used here. + +\change_inserted 0 1283336739 + Note that it's not clear that these bits will be a win, given the extra + bits in the hash table itself (see +\begin_inset CommandInset ref +LatexCommand ref +reference "sub:Hash-Size-Solution" + +\end_inset + +). +\change_unchanged + \end_layout \begin_layout Enumerate @@ -1965,6 +2129,16 @@ struct tdb_free_record { \begin_layout LyX-Code uint64_t total_length; +\change_inserted 0 1283337133 + +\end_layout + +\begin_layout LyX-Code + +\change_inserted 0 1283337139 + uint64_t prev, next; +\change_unchanged + \end_layout \begin_layout LyX-Code @@ -1979,7 +2153,21 @@ struct tdb_free_record { }; \end_layout -\begin_layout LyX-Code +\begin_layout Standard + +\change_inserted 0 1283337235 +We might want to take some bits from the used record's top_hash (and the + free record which has 32 bits of padding to spare anyway) if we use variable + sized zones. + See +\begin_inset CommandInset ref +LatexCommand ref +reference "freelist-in-zone" + +\end_inset + +. +\change_unchanged \end_layout @@ -2331,6 +2519,60 @@ At some later point, a sync would allow recovery of the old data into the @ +1.7 +log +@Moving hash table does not work. +@ +text +@a1436 12 +\begin_inset Foot +status collapsed + +\begin_layout Plain Layout + +\change_inserted 0 1283336450 +If we make the hash offsets zone-relative, then this only restricts the + zone size, not the overall database size. +\end_layout + +\end_inset + +@ + + +1.6 +log +@Commit changes +@ +text +@d38 1 +a38 1 +\author "" +d53 7 +a59 1 +26-July-2010 +d1333 10 +d1361 3 +a1363 1 + There are three details which become important: +d1367 2 +d1373 2 +d1379 2 +d1385 2 +d1397 2 +d1407 2 +d1411 45 +d1582 2 +d1598 14 +d1733 62 +d1996 13 +d2086 10 +d2110 15 +a2124 1 +\begin_layout LyX-Code +@ + + 1.5 log @Soft transaction commit diff --git a/ccan/tdb2/doc/design.pdf b/ccan/tdb2/doc/design.pdf index bfe3350c30806d0af14d308133b140a795f747e6..87242edc6e390f67b705f0fac8313d0be0d33ae3 100644 GIT binary patch delta 84661 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 z z1>d_S`qZ4#4=byNV>I{Jr$DMQ=Lh$&Ez6xeeazgXcFjMu`xy8rS#O0YjD>cx%>SsX zoaR2`esZtz=8P1%qWHE-8s_Po*&|GL$FYe$Wbp*uNqwJy#ogn4Q%~htou0n^#dx|b zA#>4YEaC;jsnJFna%Xw-#B_Wv>QQkhU(UrZ|}C&l`)^awAnhDF0-lc z*P-8j_lHdJg^^4XfwenT{ zp0l}QYJ%gR?mX9&0meJirfjkRmw}%7ySkyB<5gqa_im>%D2>Ax|_V@U*lau ze|%G-`R$(gOtT*k0tGEQ4I}m|do_;+oVYvkv++qMFYJKScN_UGiI-(A$-iEt&|Y8lS(O&eYC7alA$}QyscEuj8r_rN#G^*Y}`!9V8b%d~jEeS?URcnK7+6 z^Nn*yo5*$zxBNVE{lj-Xp`VLwvso?*M|*>2=Vv#Yn9kkUSpOFK^X!a=@&_LC_?qmx zWGim3pv}Hr>y_W;d)D@^)SVL@dw%Dux9`*RyX#GdSE&f;m36Jhy{_mr`{?x_3!<96 zM|ORIK6pG$#ar$s-R0)-4^-tzJyLXiL&w$`=DP$g+dstPzwWxT+s=|aaH0S&ChOlr zz4Yc(M+~K5Q`_r3R>AZ<`2yTNm$DM;_X%K~ri#lj=H)7^@4`#J*!aq^*BG8!yG^r* zIjpDu%S;r@PN3N3IQ1%Up<6Tcg#FcoJvk#Ho-Bi&R(!F3?TFu374@hHuSQ{7Pek*_EoA!Ls1N31{i1AQWZ~5yl&$)A` z;+ZWM;TKB3~ zY5t&cti1Z|-CupP7P@$y(m)>nV=E%sz(wQb-AM zrz>AwEBBLr-D@?@IlWw_clQLQ-fOB*z&yc0mACM`)T$PxxM9Wbwl|Ah#v^2J)jlw> zRI82NsNg+kU?A>*@hG1H7j6|BPR-|LMIWqwy|g<0iQ@~Q*)b=#w2;nI!J*bEusd7J*x#*LRj5hPDK;v3>k*m~#9EpH4&B%lP2#OOJ0P>gs96 z-WkX?x=2@|n#yyBqpzvID(}mUmk|NCZ5LNer8>hU15%5JMmLun@lUN;?u5=1+~d~p zpn71FXhhRJKSx;na&9TMBzcPY&4C8TWE<;vgzp7?L}oelT#>)4WrD%&zJo@{ha0FjZEozSZ zDu?ZOQ(1*q3t?C3t#R;i-hW5*WhCLH5I(dF=70E;-2WZYmjfYve%Mlk9=_&G54>tM zB>xkH24CaKN&o(V*gtgY=b2BoPg+l{qqFB)bg^d(r&=FfHo6j4YR*g(rGJ9eY}bm( z&(D1lr{Z#MT_21Xw8#5@QCk~eXov_^tyupUVN&VhC2^xnE4;z$)o5l?L#~COPq8@c z@%(VB=RLLvi^6r>F!#!pc$=hV$5B2bm92d91F;qddj<(oM_-)F?G2mU5>jHZDwP`GN164 zi>tCd?o%IDYyW(=GSkneQ3ot1xb}r)q+KS=t=Q#LlpQ)w_%0mR{p?bT5gYGDQ$ef1 zk|J;%ntf>$qML{F)54o)hRZ`{Y(1>ddQ{!?!3ty1UOYz1B{ahZ_#O(w)AVSA^v`lF z)k|wN*{?2p>yMcl$=cF}-{oBE`=m=HDL9&tPw&1<#vZS7it)xv7oYHG#qemI(j@9U zv>bA_sI~eaA%%*rKsGw{D^@DPk4*gdbCbN0{ihFp6?N&Agz43t8SJVVq1(H18k5*f z?)la7s+Nwd6RKxa8=S@SMv~buejn2vll@lO9dj-SFtet!;Nf)I$k_FpKBpLNg|Lv} z)FOl)9_YBG9&_V}y=nNP2PQ6E$byU63V$cIlldJhH9=-dRt^2Iahz6Kx&plr@n%$# zduVvoc9&2FUHM2=&yz93;PeJrSM1zjLp@PXDBSe*jPcSSeI#YdG9<7!ckihSC*REp z+_X*BitsGf>DpJJD;c`%w31Zlufpv0X7^yN+Jciz+*;M$xP_I67Y?0eMhgkn{QSWD ze8Sq$zfp*=x9E{8bnp(DWqjZUN6`;m@>cSIFU;<<5Q`vnbH&YF0oIWf>L&>SsVnry zer*L84s(B{taO-i(P!MNz7%LhdEBYvk;lMMeLxy4I&&Q@PLqJ7`^ z6giWn!PM8I79s%E`J0Pr>D`Vl@{6Ar!w_hx+^(vHk8MaDePDviKHcWE%e~Z4L4@qQ zKIe6P@oKl0dz)T*8-`0X zv~cf}#vb~Q{^FQ)gX-v}{iXEc>FRJWEw_tElKoWk1x4xLkVA5vB^#rg8`Es3Z_i>9 zK72e|(1@?oQmU{#W?8MR*MIACcy+cC{eZ5!6{JqcC9GodkD_`dYebL|_6Lq0Bj-D1 zj($xr5!);srDG5`q`G8v+8(1WQ89G$^rRnq^<``I3`2R!&AW#N@iL#HnvhQ0F_!bg zi<4)wJJK+m)hP}Jt{=l-waI;i)YWHr$@~wR72zIsukbixkW8*{Jgxkfu4Pa; zJR)f$^xW-B`pf-Yi~H$Jf;^8Ef2vj?M@HYy;H`JP8^{Q{ZPzt2`}yF_uWCzsef@X8 zayRDuM7uymxTfW6#b-bE?91c6Mo!~FooP%$+kVf%s8CDaq14NvQgOdDI*sDK2g$?~ zme(k!U2fS|N;|65ha=Pbv0yI*S*25MRo-y#B2Rl7Ld8<{q~fag9DAbm<&^++@{=0X zO2-5mD-=Q~N6S}|jCgu*)bCrDS+mah^3Z=v_z{%Kj3%7ZB(G0!GY;2DXj$HTu)4ap zVLj>#MQ4`XHMM!>fHg#iLc>9uIImtQpAS$`1E$+tzl zARc5Pdgs%^)%2~X7DxGjE1f)$TZ=`Pww9?urz!NB49#;Owt=fmnh-yt@M?2v^=0&$ zH}Ari_pja)S|~eGZ^>C4aCbIGH_~}Iv!XcZSyuf!44|G?+5E#(Qf4RK1ca7B%BG{d zLHvbR6fjf?o@nB2JTJG z@>hac=Aqk8Js!eaiB8|fF^yL`uBCxD3@A!LHt+Y6Lj=>UEWT7ZcMFx&mqR}c!pUwF zjxAL>8tQZ9j_BW54JkZ+^u1}=?sT!#fVfaQ@XJ0ur{9LmDLqy64n8Kcb-y=4+U(6f zW&TI}=GAkog=zbE$MN4vZYFB*9}GY5-tVRG_UP-9g~&;KNc{a@;^__FvY<;bYg`vT z1!V=jxZLY|_*e&yPiUs=V4e+O`G;p1jedrCBA?w>M1(@|=`F>|lwaxQf=M0a!ZHy? zu{jYsEtG=&@!b+H_Yfc+YA+x7dj>Du&d0V}2LIoLLc znBW-GjEy}CwR4dkwUp+olkeS|G_m7dq8&W}KUoJ3Nl}W=SixZ1}`+1Yk|AEXt zi{vL+RToEaw8~lD@-xW`IQ_L=24A(Pwpq5OE7t@i!2d)syoVuroui)C?{NLt{+k~f zzwWQuMOI^S@rrS3>YJ1L0u)iIzL~7ws1**;CsF7u5{g_YM zRE*VpS0%LRJ&eR&zGYp%ygFGusZ@4{Tb?&TOY7TDL9J)+j;z=Dvzy-1YSQ|dK5J#v z8~4mkfl{+hZJwIIOL1}Wa!_r{UJf2eo%+ly_hg`mm6Fs4xF+TNDQMz$$3NJ((eq{MRwtcsp74NItb8k&UHOi%YJ%mOy;%pg8btxW!0C2?p;^k1>9Uwjk~#36W^Cv`-C}1uBx;e-)H$y!05;o z^u&)-Eh(wdBVk*Ed9Tw|I4pR=Q^NvpmPS!Fcgnvn?b7qPV{A0?+Nemp_lWanNl6F4 z@l`kXRo=C`T>1ZpA3?lW3$6(99fe!?_M&CB@7DhNa!v+(qH1tpx6JQA?cX~>p#1k8 zAvEk{bATX24A>H{8l9EK$%@NuM|_D{S;?JpIcXVj%-?dN&E> z6^0Um6CTM+ZMOmA^Bp}(D`71s!zYUa3W0l9))+}iKG{D2X^p{v%Li&pF}F zZZTLls}Oc9V1v85MM0VxKKb}5>`{n@X|hw{j3PF;BD)lRP>hB{pCrH!O4tw;0!j=% z_cRxdDJ3=%gIzkQVdG~G@XIoGWT62PiOcbTue?Ab=bS;q;v6Sfs~nAN9)`r=uRYYT zV{Q_B^(DHHBTp5Abt>2p^LwBsJ^wlE{fZr#7llON*yqFWgGx4-P_PQuRa?>5?aKa~(UvM**63mwtx7 z)q_VX%YaQA*%1yrSb@S9iSXGbw!(Ae`ylvyGdmplvIaief`+9hMB%84S=g!-U3mM| z9tb|yhDKZiL6?cj4=}EsEx{M0$*c2VtqwLsw;yP_T-^tYccS6S`(iLv?IgU~$re}F z64%X!+-!$L2>o5hXloUjDL(8$(FP^HQFawiPm)r|++n4cRGQVtsYV94zH_Nn^m#mxOwfO`?l;6EB$b)K8guUk9#@&1 z=XYx6TKhf2Mv;!Kd)kdgM&pUtq5KLoZZkDMS*_*{oQ2J zrzE{;(@o3dCWnIB>)!YtP~3fj&XLNSJv?F> z7o^zuzbmnB@!!hOeEdi_;a2Qp_h#=X)@MH-awX>`vpriAK53Hoysdoj@y7{I>l7zM z_+rXavRt_#=*&n%%Bz&whg^7QDzhiChHp&18!+Y3zFXX5NNIcr zRvJLVSNqVgOXEBo_?jKzS%8F*Y7?+=(wpkw$bL4MZ%72rXfA`z-mt;0Eni{70XF1| z2w3a%)+$(HkR2f;5HoEsOgF?7;|TyPe?^@7Uq)?)R|Fd$!*j@@vmsc;h`9PU#(n*~i$BXjQOvOZ(bj z=J7w7+ShHczyuoMV+Tj2v;Q`%J&A^$-%LYzMCk^EMz{|H`NXrEG7tyLd}2T>kD{ny zmBA(meBIEB2G2ABKbU7jjwk}jB6T#d_HY|)^MwsjtN_n)=4~fzy?`#18=-+<^RI01 znbA2|dyySBefJJNvBZYtX#??=PpM)5_t#*BWpp9)2TBN%+8!Hrc_RWFkClV0K`?4J zLd^-zs{VK{Bn3v^4a<#)5ju`JZyy3Xr{}$RKeD5HG~N(|45L&O!y_~_RRc~@oTPn_ zS=h|u6g9s8vgVi-zx@s zM}7**;rx*Sm+zNP)%R3!QEIB^Ud{IL)v^#|~+KRHuLSWAJg zQl#MCPdP}nJVcHt?mw48M54({uQgtZ4_KPtW(F_KC%0pA z@G^XII~E5o3%;+}82~TGharGJzq?3b_%KpCa;3m`IH2H94Gv^>Mgh->k=hXr<{1MD z{xp*TnLjsstifZ+?WCoF!hh_lwKR|gOyKVx;2sbGBe^q-G!Q1aGmJD4Cb=_=G|*ad zXBcUqwd9Uy8A*`YkqsiD7|ER(kRcAV^Q6Ef!AR~rsEiaJ(eVCOfgl4$#q6j6xDN)i zqXOVN7|f0efZSj(J1PK1gTd^mAPc4nv!epoFBr^@3c$`|Fgq#$JCDKar~qgN27KNG zR3HFO05}E)eBkt3A+WRHnw(<`;t}DFY@Lvwax12^E-O z44$M6m|_e#6o2}GImUovv6BPJfP=A<1IplKShll&IW0yChPu&+I0Qh`f0-KoJnswB zZm=QD`vERL{89l){{~sFg=vKUEktA>B5?B8d~h)y;5tJ605rS3Sc*UfC}5bbpoHO| zrHXh4hz&Me9zga&5IeARA_S?nS47htGIpAllCd|JF(8$*8?O^ePjTNkKPVjzlFiQ0 zSG^A_cqeGJ9Plt?z7RpZuyXC1Fweuo4Vm^rhkG*7^MX8>nf$4h(#uSVh>-D}Od(sb z455!6$1T1IEj0uSh6lch8)rzMsA0HfH&{oh@77KB;m0}3YxGC3o)Q<6zS`V<>1Pr0 z;vjw62*GjTbWL$!v$B1_=4T`3*WF#i68QFguKsFRc;wAtj zmA3eg_CyIJfFxp;)XpveaD|cH*(5~#0!Z_Fb&2@3^R0t5fGZ5Zoj)~Tn@R6%5CB)0 zoy&+|T##Y?y+8iZR|etd2Nr$X7y4r-8L`uP*NMFV<#)dX#{Hi{4rTCgKneu)rtqF&Jk zTA@SUyE1pi$T0glrynOUqseP%uTWpQ6!z%SWg%LQ%(;{0@!}0yu9unT6B!t~TvM0V zeBU)Q4%$YCGQQ;ZgBG}s#C?uHb9<%C2gKcZ9d42KS{tA3(fP5@Mo-xE_7K0+SaIFA zkY1VzMtdD-b5V_VAEhMAHH_<~!v5XP;}hmW0wxa!p9H_FxTruisg@V}!?dQ`G0`lN zI&!WtFdmV-@#&XF-b0DP(T`paI{Ky`IGoh_v8#zpJ_lKJg3vIuS)}sM4*BCT{`ICX z+dd*Vw*TyqZTIj$b_n=_^ZOBGIIYPyJN?>{OxHGcLy*De^wgoj-8id z*2LW*vjbqn-2v>wpJrfp?1Zd{RvZKD!=Dp<aryh0yVUS}O)<1u^9X6%LG`Op6afmufRXyb!|653~;Z_qbP^36 zf)KJppj}1wADvSeAywoaJ9HdbB9;Ru0NJ+(Dn&MgK#u9B2*R=#sPpMCkVZUy2>(8) z4e1bu_7FV?5k#B=YCr}>KrIa?w1EtWLVHTNxF9kJSrP-!g6D?bAd(UgTPZIOBnKfF zNl>U?1*U#`!W0D|3M7jc%0P55K!g<^SS(R2m<@_A#FgL&lXw;fvRVRAJ`#loeSv-W zh}@9^Whpd(c>@6%NRc$ig836g_8)+n5sV;;t>hp?4k3w0AO_f}m73@!4?|eQUw<foL3oWJ|T>AZ-YRm)t)1rFBOj2u0ZL z`qvJC!!5gm_Mi#_XxQ(A3YY=rPmBieW^kVW5@&FP|1xJlB1qf{P+}~J-T)B6lGqI} zG1zT#Lm-k3fFf8DxdAAGC2<>IW5E9-zk?Nckl7(NfC*zr937Z042hTnYlR^(b6|!r ze;G4T(;eg?vR^qF!XMd0`b%;Vh>VxyBLH~AlBhL+H!O)+0}#WKm^FZ4EQwizSpz@D z{YNw)uUHbZ2ILh>V%C7X60js{4W)9U5FG$4iGmY704#}v6I}r8UlI<6 z#{MPYU})@L5)OvO{w3jHXzX7O4u;15<=|jw><$O#u_m&A%%5-}PzDT!`4g@r+M~Hs zz#es%i6RFSA#bGWG=QxFMd&`_V+anc{3Ik=3M)Y@5E5bp@?U(wd7e~;#t>&?kmc0| z)f6hwUI=kH13I?+1Th#3Rj42FHv!;7Bs<6zHDDmDO#wvcsYA*T;$#Mr4>cfZ2r)bh z8UaQ#h8!^mg;OV?gAk%_0g^zl3WTs)f-$^xfVh+AAhuF#UC0JP!mPkRUqn#C2&F!d z41W9)jWqoPYB3prhHd8oJTd+hLk^q*C{J|}RO+un;>bHiU>J{{hJp}28&JmV28ksY zLOzI-Ey(GbgYGX3p^j~4jwBgDeaNuGHq_F`%q|7a#5~Sz~=#l>!XmZLDRM@zK>^2^2@c{b`pMzErH;)}Vi3q*$@@7s?z5*IAg@VT0hwY&|IBZj45L;=82XqcXD8oS;a1a2T zc>(%%GXm5|dqd6;vNsa+0jEU-nY;>pLkyxo&4Ld^4p7Ril)(4`F5AO{E; zi3NpL)Igt->rgnt1cTmyVrL>$cR&SDz6WuQ2O^dU&?yM9PXI}?0LTDBjv^3yX-yzx z3Ly@O0IDQ|0S`WK7Ze`3Nd!Ihd!Xsf5a=?597zH~i7!nMTp08mu}TKbfl4CCfm?tg z-AMrrIl`e!5Yn3pl6NDZ8xT^T1|*3^Li-_PB^`9nwg%4{8wJo|=|0Hn=YwohG&GIO zJOF&xs$2y55(CX6teHSIAZ8*6R~)p2=sX1Uj(12LF@T|BB>NGN$#n-Zf{?bX?R67F zZry|EkXP~0Gi2d0kb5HmszNHWff}a}BHZtL3ZW7Irr%3Qg%l)09?0cqpy5{#*FbFV zLgPq$4rl_N?maS*3;O9N5v|D4e9%UR3FvV@8O+Ot=O7!y0=o340M_}Y0Cd@A)95tl zIUu;icl@Q`r4bhdGH&glal0GnD}5h&g$$Jegl6cbCdN+2kugyeTj{R{5E??{UP0*6 zLzzU^K&=u8EKER&mPS1ULXe|XpsMl_5edbsLGpbT#0(+R)j+WAQJ{rHHWZCy)_|Jc zY)BnKylX*H>?x!GA(!hw(jPn`gecYnseu2BmiFgBj1aN_@}+CJkSc@>HGm{ogxwGl z-3VGK#)GjloGzErdrYJmX5-vVKe zQr=Ri93pJDBY`d;2v`zv1soYmB3uAnuq46-G{BN50T>+nm-&JNzVkNI8sH$7#LEB< z;z;p2fP=VgM*ACdB|&ZnBLLaO{iU?v{p?>#ivyV*00lUR+hO|F00(iTKplWS90>~n z^5IBUgb3jzCQgKKITGj+F`Pt~i5UKuE`wPh(PdzEuq3(+%np`Bmx(l(6bC2L;J<8{ zIM9yTz_#H2vSnF50`4ze26IB9%fKYy{-w*ff9W#rU%HI@moDQ-Y#A&9jzojO^5Fi` zVB&i1xGe;rGmb=xfzCJ*Ck8s>{-MM`AyQbHXhv}VFk-Mu|1e^(O#d)quulIlVz5yE zFk%_-{C_DiP#5=?5(9m4|4?EuJSjd+G(Wh17%>?BA4Uv@|A!HS;s0U8VEBI+F_jx>~dv~O}5g5R* zddLpZeglM%HvpP@Y5=6ZGys~eISAUhi~^lNyJRGB2vlqbaKNzCNO2Pg;Mfj>vSZEA zJ0iVBBN8o860&Cmq!x&eLe~l`z}ZodWlBVemb5{x5F+~yWP{tG8RYtVkP>$QW-zA% zXjSt8WI+r>9Lej19uq&T{^JuMU4X@Z9|u`5aiR&|fy!0gP!n=!5` z8_!wII@h&Z&H3E2%c|v(NYRc@G}T`6R}lVL@Jv2a(C*)?qOk|CigVMTYyn&$Ku~?a z^tgP4*h;_m0Rp^zFCNk9hkhY=Vm}c6SVEFNgDJ3D6h-0&Kp5)v9B6Dg2pxf7=rJ3T zGX%Xrs29Kj0oo*jJQ{}l5T>sn3$~dka{et?n}drGx>RHYl7tZa60qXmH$lVXQLxyo z%RrXSJ7SGKhy)>^k!b0w_ryri(N)l?{{tinAynUht>*(&OnDrP|K%Id23!q5 z3!R3LiA_)n92Y?#V+#nE8xcj&^Ux^r`WI+J`2|8j@fE;z;$8rg@dyGbP=-fLzCxWy zE(-N~#~`+g;DCK3L$PfKmpqriV9)q_i&G(VKcIU^BLgVg_7bOm0KQ4fgxW*&b+-^cW)yqr=mtaq zA-*i2&GtbQ+=7z8>w2r!->>Ntz;DWe=f!}aALW591 zsC2}N3kcbc{7plsCS;u(WPw{OihMz#ejtTBAgk{Uc#04?Y69u!MFCHl0tM)pKR=kq z?S9^rsAlB70LTJ;#SnigR68+%xXoot5YGcBwo(xq6d#1t9Rx`$S`=VO)Ivb+Hq15A zp*j%i!=U-sSTO2qdeky90kWlU8Bk!Cr3n*9WI~}J5F!Qt;|fQfXsI-R z=ryVtrkN2(w%Acyh@B*gfnW`+6z;DV1K^+J?f@f!BY7>rMBqpc4X_Y6k_Q6}1n!Rm zBVi4c#*utfpd60m!~r^kBl$;w!Qi$%x^3zMC=8C|E&>XJBe{!!!r(~G9w1yelCuX0 z7mnnL0se*~IeS17j^yhBNqCY01%wMvvY){5#A9(g{w5$?c#`=9I^#*!6R3$N8Bd@K zo@6_LE_jmV1jFM=h7$~rC)rKlY2rxUCU7)yBxe)2nFJik8wT@^BRQVn(QqW!7%UHt z$1?usk@DuMbuPNAmT-ir`4TK3EYP$=3&xaHLl&1Rx4W^7Vlz9Ld)QqHsI0 z4Qn6@w-eT|2BL7J05A}RBQYr=vm>!(APGle%Rmy2#FmM~?l(c+eg_XmB{5{s8%HA2 zpf`@h#6fQyiMSG(9VvtiI^#&Zl}PhQycKlDk$5ZMtl*yGA1|Cp`9J~Tw@*&wd?Xf2 z{`>F>bv z$n*Q&_x*$Gntk>;`|KI^TI;^=we~p=DE3Yw<#>Rx_n7Yi$KFY#;0GXkr;vglfb5+@ z3VuMccOnD$0m|N$O@RNwvj0e{z;by&vv&dn_yNw|2@v21JbNcVfFA(u9RdVDAlf?t z0{j4C@2V%jK>uIK0hr8xFqRFN%)cKwA7<-2YE!jXMwJs!}0C<=WJK!4c#6wtVKM-$3$UqLTM_}OC zJsLP711-Vk!GK@gBnN$jhv{$v?lPVdBm)o60aORz!s-G6Hb_nl!hwfP@qo}_OeVk} zj5F{IwGK2OMEE#XNqiUu8PKeL4gz?k(kozO**SQ|S_C=}5Mn6!0Y8181(bXNYJ(l{ z1KlL_K%7Vw06GBF2gsf;K_0Mof?1n{40tb)4AV951kOJ-kC>)HnX`CQL5YJzK_FpXc>rwtE7X0g1 z{$smf2v`0THwYdCc}Vi3!*F;(`_TJS9|-TAUwrVgcYg7~%ig)g2geF{9`FNs1-t|J zAsqwQGx&kK0u~H@;I4ojfgiXlU`F73?t1U_0W$(Wkk>mi13$3WJ2L}6(ARr2d*HA4 zru3Kn1L_?x=3nLywC=|IOQP?smF4$So>EJF@72+svrD?aQ(5Wr@@iLS6?Bj7go$#hc%;Fn=F z0mj`<2Bu`B2ugK|?tdn?l?;3ru{Xe|!PdaMe1ZU^`^pdu( z2OC!h?ZF&vKzJXufLVMO1wDpgYJz5AGPWSR8m&A3a$yUMe2*2CwE?WiW)Cz0d5i(( z@)ooKD{ugs03c_o&C~$}!Sno8ME*0;zX9ccO!VKd@;?iQ2U4r22jYbX0ULquYS?Q# z^+AACR_A<&%>ZKoKR^Ot&4VAX8L;HR4`>Ql@!$t6bZ5U0!SK$0AA;c>ta%8AfCm6S zz&-#*fFHmefE>X0u{fOta9%J9>B`I6L>%? z_aXBEuH1*r2fP9(`1%y!2gGvkARaWmdk66VS?(Rg17^7^I|M&~mbfEkY6@zHF}MRJg5?P;KR+{2 zGi>v&36wgsz}}mKKEkFvfYk_y3|p`(PY`}BV9#OjuOWXy#lxC}`~?>Otx3qg=;FUM z`OjrQbO3gf02@NsVer-e$1CXjzMzyF=y9p<>ZX&m9w6Iief;4pCffUgfo zJ;^X_e}GP6+JS(Kp67eumk_rH8N$O90)YM|2T(CAClL5_?}rK6x=>u2)z@oG*seCH~jK)-sdp>%GX%tL9A z>kD0phW~K6?%Pha5u*)cCb`(7j*)8;W=P;V#ntN~co|(+H43&0_*wZJCz5Pe5Y(A+ zYt`Scd#EYLd6pnD=UP1%E~g=ggygjJHtIZCXsWel&W(s5N7A#LFl; zil2>-J#`{fx2k1+dQ)dgxVEc-E2*_h&ziET$Bxcw@2Mo8^T4z(mfkScdN==DYx7cK zC%YSX^$%e~cW)KI`zPZ-`0nms@Gb&`f9GGJ-NO|?(IxQH@sXg`{y}MeHU!pS@>eWC zeTU`jh(+gur|O*WN{c+NMYvs@RV(g|sCVef{WaU@rQ3 z&AP+>`VV!yZW`KcWE!MTvQ%V;wvBqRArd+tX*^yfZ1=y|WwT_ZyZuRDjJHHy6{n=G z>SVIbUFZ;L)@Fr@oa2u*bo@4u$2VmGJu`W#QQqRT($Pnywd?2f;N~D~o=$*^o~w#B zDvbp$t0S&5^uuHGHt-k1II1#7xt2rZ0`gypyB@~DQ~!Kho)18Irv7h6n5QccB≀ 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 E0FJ}r$^ZZW delta 44564 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 R(`qy1%~hd7?Iv~d{vS{H-;e+R diff --git a/ccan/tdb2/doc/design.txt b/ccan/tdb2/doc/design.txt index 2f0d22cd..88334a8a 100644 --- a/ccan/tdb2/doc/design.txt +++ b/ccan/tdb2/doc/design.txt @@ -2,7 +2,7 @@ TDB2: A Redesigning The Trivial DataBase Rusty Russell, IBM Corporation -26-July-2010 +1-September-2010 Abstract @@ -551,7 +551,7 @@ long), that LDB uses 10,000 for this hash. In general it is impossible to know what the 'right' answer is at database creation time. -3.4.1 Proposed Solution +3.4.1 Proposed Solution After comprehensive performance testing on various scalable hash variants[footnote: @@ -559,31 +559,40 @@ http://rusty.ozlabs.org/?p=89 and http://rusty.ozlabs.org/?p=94 This was annoying because I was previously convinced that an expanding tree of hashes would be very close to optimal. ], it became clear that it is hard to beat a straight linear hash -table which doubles in size when it reaches saturation. There are -three details which become important: +table which doubles in size when it reaches saturation. -1. On encountering a full bucket, we use the next bucket. +1. -2. Extra hash bits are stored with the offset, to reduce - comparisons. +2. -3. A marker entry is used on deleting an entry. +3. -The doubling of the table must be done under a transaction; we -will not reduce it on deletion, so it will be an unusual case. It -will either be placed at the head (other entries will be moved -out the way so we can expand). We could have a pointer in the -header to the current hashtable location, but that pointer would -have to be read frequently to check for hashtable moves. -The locking for this is slightly more complex than the chained -case; we currently have one lock per bucket, and that means we -would need to expand the lock if we overflow to the next bucket. -The frequency of such collisions will effect our locking -heuristics: we can always lock more buckets than we need. -One possible optimization is to only re-check the hash size on an -insert or a lookup miss. + + + Unfortunately, altering the hash table introduces serious +locking complications: the entire hash table needs to be locked +to enlarge the hash table, and others might be holding locks. +Particularly insidious are insertions done under tdb_chainlock. + +Thus an expanding layered hash will be used: an array of hash +groups, with each hash group exploding into pointers to lower +hash groups once it fills, turning into a hash tree. This has +implications for locking: we must lock the entire group in case +we need to expand it, yet we don't know how deep the tree is at +that point. + +Note that bits from the hash table entries should be stolen to +hold more hash bits to reduce the penalty of collisions. We can +use the otherwise-unused lower 3 bits. If we limit the size of +the database to 64 exabytes, we can use the top 8 bits of the +hash entry as well. These 11 bits would reduce false positives +down to 1 in 2000 which is more than we need: we can use one of +the bits to indicate that the extra hash bits are valid. This +means we can choose not to re-hash all entries when we expand a +hash group; simply use the next bits we need and mark them +invalid. 3.5 TDB Freelist Is Highly Contended @@ -660,6 +669,13 @@ to the size of the hash table, but as it is rare to walk a large number of free list entries we can use far fewer, say 1/32 of the number of hash buckets. +It seems tempting to try to reuse the hash implementation which +we use for records here, but we have two ways of searching for +free entries: for allocation we search by size (and possibly +zone) which produces too many clashes for our hash table to +handle well, and for coalescing we search by address. Thus an +array of doubly-linked free lists seems preferable. + There are various benefits in using per-size free lists (see [sub:TDB-Becomes-Fragmented] ) but it's not clear this would reduce contention in the common case where all processes are allocating/freeing the same size. @@ -718,6 +734,19 @@ I anticipate that the number of entries in each free zone would be small, but it might be worth using one free entry to hold pointers to the others for cache efficiency. +If we want to avoid locking complexity +(enlarging the free lists when we enlarge the file) we could +place the array of free lists at the beginning of each zone. This +means existing array lists never move, but means that a record +cannot be larger than a zone. That in turn implies that zones +should be variable sized (say, power of 2), which makes the +question “what zone is this record in?” much harder (and “pick a +random zone”, but that's less common). It could be done with as +few as 4 bits from the record header.[footnote: +Using 2^{16+N*3}means 0 gives a minimal 65536-byte zone, 15 gives +the maximal 2^{61} byte zone. Zones range in factor of 8 steps. +] + 3.6 TDB Becomes Fragmented Much of this is a result of allocation strategy[footnote: @@ -822,7 +851,9 @@ block: this is diminishing returns after a handful of bits (at 10 bits, it reduces 99.9% of false memcmp). As an aside, as the lower bits are already incorporated in the hash table - resolution, the upper bits should be used here. + resolution, the upper bits should be used here. Note that it's + not clear that these bits will be a win, given the extra bits + in the hash table itself (see [sub:Hash-Size-Solution]). 5. 'magic' does not need to be enlarged: it currently reflects one of 5 values (used, free, dead, recovery, and @@ -865,13 +896,17 @@ struct tdb_free_record { uint64_t total_length; + uint64_t prev, next; + ... uint64_t tailer; }; - +We might want to take some bits from the used record's top_hash +(and the free record which has 32 bits of padding to spare +anyway) if we use variable sized zones. See [freelist-in-zone]. 3.8 Transaction Commit Requires 4 fdatasync -- 2.39.2