From a299c4a1e1d18be0fc094fbbc62d82effd44ff79 Mon Sep 17 00:00:00 2001 From: amir Date: Mon, 9 Mar 2026 13:21:45 +0100 Subject: [PATCH] LF MPMC queue improvements Small improvements of the LF MPMC queue Making the LF MPMC queue generic and in a seperate header file --- .gitignore | 1 + arena.c | 71 +---------------------- arena.h | 47 +-------------- arena_base.h | 74 +++++++++++++++++++++++- base.h | 69 ++++++++++++++++++++++ binaries/changelog.txt | 4 +- binaries/file_hasher_v3.5.exe | Bin 0 -> 214528 bytes lf_mpmc.h | 105 ++++++++++++++++++++++++++-------- platform_windows.c | 7 +-- 9 files changed, 230 insertions(+), 148 deletions(-) create mode 100644 binaries/file_hasher_v3.5.exe diff --git a/.gitignore b/.gitignore index fd00ec0..4ae4fd8 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ file_hasher.rdi file_hasher.exe file_hashes.txt file_list.txt +temp.c diff --git a/arena.c b/arena.c index 8f552a2..8c03d99 100644 --- a/arena.c +++ b/arena.c @@ -1,6 +1,6 @@ -#include "arena.h" -#include "base.h" +#pragma once +#include "arena.h" /* ============================================================ Helper functions ============================================================ */ @@ -820,70 +820,3 @@ mem_arena_temp arena_scratch_get(mem_arena **conflicts, u32 num_conflicts) { } void arena_scratch_release(mem_arena_temp scratch) { arena_temp_end(scratch); } - -#if defined(_WIN32) || defined(_WIN64) - -#include - -u32 plat_get_pagesize(void) { - SYSTEM_INFO sysinfo = {0}; - GetSystemInfo(&sysinfo); - - return sysinfo.dwPageSize; -} - -void *plat_mem_reserve(u64 size) { - return VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_READWRITE); -} - -b32 plat_mem_commit(void *ptr, u64 size) { - void *ret = VirtualAlloc(ptr, size, MEM_COMMIT, PAGE_READWRITE); - return ret != NULL; -} - -b32 plat_mem_decommit(void *ptr, u64 size) { - return VirtualFree(ptr, size, MEM_DECOMMIT); -} - -b32 plat_mem_release(void *ptr, u64 size) { - return VirtualFree(ptr, size, MEM_RELEASE); -} - -#elif defined(__linux__) - -#ifndef _DEFAULT_SOURCE -#define _DEFAULT_SOURCE -#endif - -#include -#include - -u32 plat_get_pagesize(void) { return (u32)sysconf(_SC_PAGESIZE); } - -void *plat_mem_reserve(u64 size) { - void *out = mmap(NULL, size, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (out == MAP_FAILED) { - return NULL; - } - return out; -} - -b32 plat_mem_commit(void *ptr, u64 size) { - i32 ret = mprotect(ptr, size, PROT_READ | PROT_WRITE); - return ret == 0; -} - -b32 plat_mem_decommit(void *ptr, u64 size) { - i32 ret = mprotect(ptr, size, PROT_NONE); - if (ret != 0) - return false; - ret = madvise(ptr, size, MADV_DONTNEED); - return ret == 0; -} - -b32 plat_mem_release(void *ptr, u64 size) { - i32 ret = munmap(ptr, size); - return ret == 0; -} - -#endif diff --git a/arena.h b/arena.h index 282ab70..a0ddb4d 100644 --- a/arena.h +++ b/arena.h @@ -1,45 +1,7 @@ #pragma once + #include "base.h" -// #define _CRT_SECURE_NO_WARNINGS -// -// #include -// #include -// #include -// #include -// #include -// -// /* ------------------------------------------------------------ -// Base types -// ------------------------------------------------------------ */ -// -// typedef uint8_t u8; -// typedef uint32_t u32; -// typedef uint64_t u64; -// typedef int32_t i32; -// typedef int b32; -// -// /* ------------------------------------------------------------ -// Size helpers -// ------------------------------------------------------------ */ -// -// #define KiB(x) ((u64)(x) * 1024ULL) -// #define MiB(x) (KiB(x) * 1024ULL) -// -// /* ------------------------------------------------------------ -// Alignment helpers -// ------------------------------------------------------------ */ -// -// #define ALIGN_UP_POW2(x, a) (((x) + ((a) - 1)) & ~((a) - 1)) -// -// /* ------------------------------------------------------------ -// Assert -// ------------------------------------------------------------ */ -// -// #ifndef ASSERT -// #define ASSERT(x) assert(x) -// #endif -// /* =============================================================================== ARENA USAGE GUIDE @@ -417,10 +379,3 @@ void arena_scratch_release(mem_arena_temp scratch); #define ARENA_PUSH_NZ(arena, size) arena_push((arena), (size), false) #define arena_pop(arena_ptr) arena_pop_to((arena_ptr), 1) - -u32 plat_get_pagesize(void); - -void *plat_mem_reserve(u64 size); -b32 plat_mem_commit(void *ptr, u64 size); -b32 plat_mem_decommit(void *ptr, u64 size); -b32 plat_mem_release(void *ptr, u64 size); diff --git a/arena_base.h b/arena_base.h index ce3f6f9..692fcf6 100644 --- a/arena_base.h +++ b/arena_base.h @@ -1,5 +1,4 @@ -#ifndef BASE_H -#define BASE_H +#pragma once #include #include @@ -58,4 +57,73 @@ typedef double f64; #define ASSERT(x) assert(x) #endif -#endif // Base.h +/* ------------------------------------------------------------ + Some helper functions + ------------------------------------------------------------ */ + +#if defined(_WIN32) || defined(_WIN64) + +#include + +static u32 plat_get_pagesize(void) { + SYSTEM_INFO sysinfo = {0}; + GetSystemInfo(&sysinfo); + + return sysinfo.dwPageSize; +} + +static void *plat_mem_reserve(u64 size) { + return VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_READWRITE); +} + +static b32 plat_mem_commit(void *ptr, u64 size) { + void *ret = VirtualAlloc(ptr, size, MEM_COMMIT, PAGE_READWRITE); + return ret != NULL; +} + +static b32 plat_mem_decommit(void *ptr, u64 size) { + return VirtualFree(ptr, size, MEM_DECOMMIT); +} + +static b32 plat_mem_release(void *ptr, u64 size) { + return VirtualFree(ptr, size, MEM_RELEASE); +} + +#elif defined(__linux__) + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif + +#include +#include + +static u32 plat_get_pagesize(void) { return (u32)sysconf(_SC_PAGESIZE); } + +static void *plat_mem_reserve(u64 size) { + void *out = mmap(NULL, size, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (out == MAP_FAILED) { + return NULL; + } + return out; +} + +static b32 plat_mem_commit(void *ptr, u64 size) { + i32 ret = mprotect(ptr, size, PROT_READ | PROT_WRITE); + return ret == 0; +} + +static b32 plat_mem_decommit(void *ptr, u64 size) { + i32 ret = mprotect(ptr, size, PROT_NONE); + if (ret != 0) + return false; + ret = madvise(ptr, size, MADV_DONTNEED); + return ret == 0; +} + +static b32 plat_mem_release(void *ptr, u64 size) { + i32 ret = munmap(ptr, size); + return ret == 0; +} + +#endif diff --git a/base.h b/base.h index 61557e0..5d4af68 100644 --- a/base.h +++ b/base.h @@ -90,3 +90,72 @@ typedef double f64; #endif #define NDEBUG // Comment to enable asserts + +/* ------------------------------------------------------------ + Some helper functions + ------------------------------------------------------------ */ + +#if defined(_WIN32) || defined(_WIN64) + +static u32 plat_get_pagesize(void) { + SYSTEM_INFO sysinfo = {0}; + GetSystemInfo(&sysinfo); + + return sysinfo.dwPageSize; +} + +static void *plat_mem_reserve(u64 size) { + return VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_READWRITE); +} + +static b32 plat_mem_commit(void *ptr, u64 size) { + void *ret = VirtualAlloc(ptr, size, MEM_COMMIT, PAGE_READWRITE); + return ret != NULL; +} + +static b32 plat_mem_decommit(void *ptr, u64 size) { + return VirtualFree(ptr, size, MEM_DECOMMIT); +} + +static b32 plat_mem_release(void *ptr, u64 size) { + return VirtualFree(ptr, size, MEM_RELEASE); +} + +#elif defined(__linux__) + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif + +#include +#include + +static u32 plat_get_pagesize(void) { return (u32)sysconf(_SC_PAGESIZE); } + +static void *plat_mem_reserve(u64 size) { + void *out = mmap(NULL, size, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (out == MAP_FAILED) { + return NULL; + } + return out; +} + +static b32 plat_mem_commit(void *ptr, u64 size) { + i32 ret = mprotect(ptr, size, PROT_READ | PROT_WRITE); + return ret == 0; +} + +static b32 plat_mem_decommit(void *ptr, u64 size) { + i32 ret = mprotect(ptr, size, PROT_NONE); + if (ret != 0) + return false; + ret = madvise(ptr, size, MADV_DONTNEED); + return ret == 0; +} + +static b32 plat_mem_release(void *ptr, u64 size) { + i32 ret = munmap(ptr, size); + return ret == 0; +} + +#endif diff --git a/binaries/changelog.txt b/binaries/changelog.txt index ddceca4..d886bdb 100644 --- a/binaries/changelog.txt +++ b/binaries/changelog.txt @@ -20,8 +20,10 @@ Reorder helper functions v3.4: Rewriting hash_worker() to export file_hashes.txt -v4.0: Instead of writing directly to file_hashes.txt, hash_workers now are using a local arena, writing everything once at the end +3.5: Instead of writing directly to file_hashes.txt, hash_workers now are using a local arena, writing everything once at the end Using #pragma once to ensure that a given header file is included only once in a single compilation unit Forcing xxhash to use the stack instead of the heap Making the hashing buffer reusable instead of malloc every file Implementing a general purpose arena to replace small allocations +Small improvements of the LF MPMC queue +Making the LF MPMC queue generic and in a seperate header file diff --git a/binaries/file_hasher_v3.5.exe b/binaries/file_hasher_v3.5.exe new file mode 100644 index 0000000000000000000000000000000000000000..4915febcbf988c625ef37b66c648588c9ceca800 GIT binary patch literal 214528 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�e;fDU2FIwcxz20^1%(`sNbSho(m1$s z%=fIx3iJgYfD>CRnovxT^)RyLSzSRbVikphSwG^vOI-t96?on=IAD6|W!HWr3oR^e zy#Xub+2(Ha`sE&(hh6p16v&z*)$US%{*Se~-^qG&37pM%v^pU=^r~DvJU8uSTb>MT ze`$&4D?ztrR0vt%_$4sPv@6F4_~D`kJLeNUSQh7!87%AcyN;x%_{)!^XNZ`*e>~@L znqrnl>BdGM`Y6X`0bbD~$HcuX5$W1+E!!lziXr!og2wa)_l^?Oyu~Gns5%BeO$q!_ zu9Gqp$UxMA=5VEyxS)3w2svok8=iFhoSDT(7^GgcjkCP%m^2&_+B(vau7}U$l2pz{ zbss=~0`Wih%LV;vdV)KS-QB_k%`V3+)n*Wv=~7ejIC$@DtC8 z43TP0<``B3DtcqUityt}Wz2X*Y2vzjpdi?h8t5aHJ7X8(bvQ6uo-@#umn5`N4-~Nc zfVCr47zLEX(QsONt20-U<1M1Z9_+Mh^$0P@CD+aFdutDewHE!f76`GK<(IPd`+%l} zD-<5eRJhUHL5=@Tv9jDwmPVLsic;vNmx}i>T@P?u(~ZnB!7u&HckTiTg860qVNq(o zmRsmN80_@K(#;W%>D~XVeqd#6nW+0u6Cj*;P(S(w=4kUKd9{D+RqB|qYhbkQ1^oNL zx?tD^f{`A+M>;Gw-z=iJa2aS;iW%(pTx)W6#Inp=J`_SSlaWH^CuyBz52Vu>slh_En+Hs&$h~GRmGxj9C#&iDWnqqSrgP=UDiwQvL3(1t zCG8-riZsJ0pW#Wdjt79;%`-=-ho2}t1m`MU*93pK*99w23?$sf+scd**Tu(S%vz>V zzVMh0&vwQQT=6{k?JSQS`ecIe!+@G44oys_jMTk2vF+ zW$bo`Cm(@j5ziS;-GX;&rC#yx(yX^e1n>cl$dnan?{^pYQWf}!;Q%35)4-E7Ae&)E z0`*o3k7Bk!M3?xJWoz#0D#c(daT4g%AttQy?Bm8hc=QG7q=3e zY;1?7z`3mUQ%n>K{fNw0IOjor!un8ipoPRa05M@|jld-ox&yye!_ZAwLp=#l?W((( zDfv#_zp(25xmEXERri_Zn#5`Iow{G{JbB$eKUv*Vthz6=>MmDx4>x~!s=BLs*DYre zdtuB7*#k_+1u`AyFddh13m4{~<083^hjWVgG1C*Z!t+8kE?25z@hK@+y`)^KOJ+jd zl?d(Ra`HLyJ98E1rC>rrH{YB8DCLx}txg>Tc*t9+bX9yPN+MUiH(w;W@`Bq~_@7Ai zL}5%PR}CM!BzyP56^&h__KIny0-$YFYFMfTQpTNMAi}`9L@BqNl#dP+*udgTplr54 z7ZT89e3JOc|2jitZ1It`iQik*ui-dHl-J`287Fc$mDURf=i`ztf@OvvcX8u2Yw(D=yGH)IZy5P# zYvkfr!)T)r2R=@JyM`??Z{a<}a~`C_GG;c@sqEK#uA7Xb7QOlt$1ycIjyIiZ9Ix=h zIJWT<*0W5p(~xoGOQ-3M^qTI7Fm^7>z-yl1q61%dcfI(3?Rxa|Q*@nmcyBGzRmnO313-;4x>EpZ_u0-$X^hlz9wS@0 zIJrivE>mk%%MWXGCqH3*pgHlFwMLl=Q<~GHUm0>pN5X=4doaFxpK%Jl8J=V9*~xiT z0UIm;uShmJ&1%$bHR@4~4mMvA{x_3)UYC4b;9$=&t3{x#haNi=yg6n!7~8_B#rw?G zVvZb?ihoM$#k8)r)XZdynLBxmM2ia2Gvl8w8B3Z|+<5j!Y^FzBg@DtY4%y*7jBb{a*>yXjOZPI@^ zoj5&N0U|By#F=4L;I%54qAKWX{&%7RNbN1wQS-E_=mgtf@HVF~c5h*TZk>%?q=&Pr z(QUV4*Tr*wr>P_OJ~^NYEPW5bP#^%uWpB}CkzFAwf-T)ZDUr!(b$=4nibu7P?2tEL za)7C}2(KfYvz4Fl)c$6g^v)X89oVzou8N|j|1*(GNU?oZG09J{SESgLn)wQ(HCH^D z3pZ!C`PNZssL5Y!$)Ae!a|AWW{*evk4tq0|@S}~3o%v7lk~O0d{ki;7eG15Q9byTyJwCyH( z7IK8)KNqemPIaLTvxQRhr^j>lWs#=1a*)qqM;bh1=(xaMi+Jv`-&QP%A|>@uo(s%{ z-{(&Kyl{LtJ@U(j@B5HD^3U|DuUVHpJnKf9Oj95=Hr;TFdsuNgj3_5-o%)!0%zTf_ zjO_EYIGCMMf3QAuAQvs7U+{Iwy)v1*nJW&NmdJZBzrz-9j@@PT#6?dyFQ@|fBg1Cj zCC82TVrUrJ7RF?O6>lV+M?5WgGt9YEDI7}iIt{5FLdq1fizl66LI=ax&{J7FJo`xm zO6>w#t)8QD{ZTht!?ETK`XpfJA?V0qU&!;auZk0sONa`8@VM7#sW3kAM!rqQi3cvA zvsOIS8Rv@W3zs)dG3ug~F1u}t;qEA)h7UXt-1dWbhJPfUvz<8zc~%#L%BMf>D)~hL z5+q}@ssB!p`*iA^l52P~Llw_U@9BAluk@Cewcy`al?r3OH}W+N&ivHa!`;<$cWCK7 zt{2!|w%TJNg4OE7a$+Hi#N)`wub%9TPYGv!JAv<0?JM7uE;&m|{ins(6C4ARUvIF} zvE*YM3uwQLNgksPn#gXOh;~KCgv+&;9y`ZbW+(Ld2A8p+aDB-04}6_G;wx zrrjNera@{7#5Ss?1}2)icdt~_nA+gZ!eBT;+%<36wk4k;(_aRYx+3niZzBQ>icsb} zu!oGADkf6}VpKYOoQ{~Pvkgm9CaBV{E%^Ww`R(uySs%|HqtzAsCXKM9#KAERx-r>- z7GncdkYoBDnz+YY@;&+nBx-f@h4S+J11tWjHr@VNG?gjRo=d+%d+D!vYJA}e!thlv zux)x(1Rn_6-M}MM+|qyGs^x&u8a$S4>Tr*y{y|d*R8s@Gn#!Olul*~J@xITvy)~++ z#PIOjpXiKVY1GAJNRt|U9pjHg(){O4YIJu@Xz=urbTog-g{Jmy@r_qf>b74xy!unHIz#%p5Z zCf~D?-+v^-6DO?13Y0%ZsNxsE6a?vb5M8qE#6eEja}U0ZDps2>ju$!u9|u~U=(vZL z{#FXfbpMw5U>Y=^amxopsE_CT03|}n2UfJgio(t>sp)Q2OJ<^$e^Ma0^tUP6o&Vq|j%)HsX~wiPT}{D*Bq`7_*bNoW zM?ZpqM-yaOp||h|sI=qHo$;yRft^#0m1-|eY)rej!QF2{yj5Vosuj+_k^?vxON(72 za4D1^wY5^DgCeiWTDcn2ijqZ|RFQ}jnVJ?GF`31h0GO&Zomj)lrKzB`X|arW&WnB6 z;dXUFtQah(z?mt6<{r$?mU*w;AlRnswkXQ7U9^n&@4aSCCCUY7t|4QDzm^Ao z4KrNP0EM%5vU$j+fHe>2?f&29;p+GQlX=jBbu2*FTznrd1Ulh#P#W(?gsaIJsnxCa zEO19N`aE{|ky)9Ln3Y#fIxBi&TJ#-XGcERgOiw)La>q&M<}R6=-|_7`bMsYaCqkA7 z^Z)m`xmvtFteH!n%)=D2<|qBtuKAh87X>HWZ`XS;tF+)`?0eSyRM-z!7#&JgH3=#= zTc9H6O+{IY7ThVj3+k=XTh=*$w6?krX8G0>^{aNZrexW?qUfZQ{7_J1f;vPzQr0$a zdr}Qq6owK+AdkMnHbFAe6?3{S-`0oa-*Jo!qF@`PK4e}~3eGTrrmI96;xD1FlV!SB zW$p$+r?JhAcLMtkcOem@z&YYgmi)u)Xw?9FZ5$4Tt)WS%O%nTqY7=1Q6#q1sD^-Nfcd*jsnJ!5Plig^w3iv>+2rauvMQ0J39koTrIAW z6ju<3X*`L>y=$~E)!|tQ{UR55%cnMq1UEJlRah$<_XK-(ejml55WhMQRmG>MMRo-| z65TPLaRN-)7-)mU3Bhug77JV2m-Olb`81po6iN9r+JqUSNIa4VB> zTP(Xf1A6+dcDqRU@Ej*+~S7E&8jeJ842qCjF-=5g$K33Y`Y3pn&Pg&TPz8!6c z6#NaNJ64h>j9?5j5Jse$AF=6q=2Smu4qPs>GiZ(x)G0k224bFSq#c}C;_E2U!cb_o zlBop&%%!)O|5znLGcq4}oBd@>%GFC7O2`n5zfDuZneuomVK!OFCxut1YSj}5M#kM zj>$IjVtTKwu4t=9(WKM`wsMC8uU3l!>+rQ~DVv!?2K6L42IEy-GH}+hYb(mWnfLGL zo8-d&A%$(=X;-$@;+=#E&l68Jh<07ZZu0=dGf|0c#-fbq(-dITHb(6=UXe8bi6GAK z8puz=nVXy?OE#A*oop4iLryi80 z@*KoJX&xDG;}HxoT0G7TJ^|oElg38xfpcgOn#0&-jsxzZLEcXobDA3S5qDdO)9}mQ)`Y99+1cCaLs&=AxXm!7$Vxz41V>I|Oh~t4!17$TkT6pm`t~A8*IE%oi#PC4D*}Reo z1tX#2SN18l(V~Ww*w0)*z6hGm<%Yq9a_j+FODjZ!=zOX044YJ}MRbpHzG}xU_C&VL zI@vax)wWq$!`_v9>Yr6)5YZ%|NudFXTnc$f)336=Gy^>@=nj_CZE|(@tBV_|swa-S z8ZEzsvSM=JQ{L=7@O!^AaLn^$;6XFh8aZH_9QkybPmWw$&Ct=q{m$4+_WzG#KejzF z_BGvOuLVu0u|IZ_v4fYuC!5W^aI6rwopS6JkA|Qjt0EuT2{hnOV-9bVTk8`_G$3&% zQ~cK%-rQB@;oE5t{)Jqi5pIe(k0`*FxYmLal+2|K{Q(%;0Q2{(!&R*WXeyqw5SA&IkV8-oIk_Z0M^`AA@H{HHgh+WyeLoILA6fpIqbWX1hQKf^nVyjO7~a>pE#B^aqvcL*-1w8X3x<~ zfeVlr4J@Aja5VpXy?ZnPBxTlUwAI_pcw#hSU7)T0?qK8`P3q0Szd5+D99E7cxv*rF zH?C8%%8@c@pD$30EG(Bj9OTFKbV z3?QRfpC>iEJ2jj(MEu=n)m%ywT=sbhd_n!V%WD>-vhokqKxcz*YsxTJI0uCh=14kP zQT9fKHgOk~^n>{H547SHoY>taZz1>k^?`-nLW0tOq@=slM|cNc;SQgDr*wBjx4#42 zm=gxWPmF^-oY~S@acsIi@B#5=>1@PbDD!b1e&$5+lg>t(bvvjm;w#&PvCS$qTRp#a zNp`IV!?CWd*Loaah{RY<@n3`);#J}b1oleZ%cN=&f1w)h=~|r}$V^+ROwh+NK|3&P zT;HswCb5PT?3xUP3l1$nW*D4s}5O(8!Kp5*0PZOE2}7e(iu^Bpx4LL z43`Dm5D5e_daR%~*p$b|z&lL-b-;x`yV^xO0e@dU5Sz3qaM*&AL^st^9!!pN6chvv z%7kfkACX#3QLXNf8Y0>eOe;f-=sP;B@mWjXV{ithVcp})WPCF7s(qziK?RIYDq!KX z`n#!^#b=lwDu-tMI%K9+Q34|@-_{w^&b0MI0a21CjwQ{esoVXOjV(%#n$WLI;EJ&0TB{7S zd{eJ-7g*)8PhQS&EQbg~ zGVr*@dW3SR%YT$-cLOI5_Yj!3ke+4}b%S2vl-Q#8@x1O9@(4OEev4nB@RyR>xKjCH zuK6sb>1{_%q_QES#Yur5^QofrtflEKsbk=?G}ftHzHn8_*c8{xaoD;r`b^iFBI@h&K)hPh9uJfj~w}3W2*e#Xj|xZS|j4 zbG$TQcc$*{T;DJtX76;xX?VDbRkzJJAPz%q&c;1vU_YI<6G~}c%%KuJC3s%Z++Vty z-gCHWHdf*b+!wwgRYGzD5hDdOuof-c4uV~rj&E4Oa`ijc6jC3j3XwE4eSO2_DXxZ6 zz4n;Nye=85ui1Wd+B<*x{f4{>aWZ-omfLZ7T3wM3(gwS5jC1SyTuymx0??)jz)d=K z^O9nHP5(WAoIAeXo;P)RUJwLMdnJ zc2`4&r(s448w2KEWj7b&1nULMpVSTbkD8P1B^rS@bVr^`e5qC@^$)m$7=Kk-4$5M_ zFF~PjHq~xX`4yq5ZCHJn;pqhSV9%I=6++`YqxLfH&+w9iYaC+f1~LB{<0gWdwUM~J zxwLyD?4klfmk5)-{$uSC4)7gv_yl2HY3|qXIIP=|A|Nv}1GQ?aIa>PIV&mLwsZ}hF zVnRywC2)SQJtIa4w?e5D=>shZpIvQKT#fRnxAH_HuwNyrd)TmeLnq9E#k;_WySRz4 z6^MEL>O3vI1~9yUqM+xm;r}@43G- z8v1L`tyHaZO>R1eqagTMif(^Px4*6zBIeuT1xs-5U&cP#V>Ul4q^DN@OX+NQYO1I1 zV?U_IqZ^lJ)RYwYuXP)j<6+QDS=`5UbZ^U~lrfk@-MnPjnzQR;SGkUwL>@7$cpkQC zsQ|hgXS}dk$si!EG9&|j*rwU%tUp2qw{21yP&79+FtDbyD4^*GTU}y9Z!_I&cnnA$ z7PY4n`C;WuyiivstZ_oBT&IRC%0AXq$pL62L7XKN_(o6ygj?YK8wgi77b!Q(+ykT) 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 F{2lOvTW0_O literal 0 HcmV?d00001 diff --git a/lf_mpmc.h b/lf_mpmc.h index fb52c8a..0d69996 100644 --- a/lf_mpmc.h +++ b/lf_mpmc.h @@ -1,26 +1,37 @@ #pragma once -/*note: - After producers finishes, push N poison pills where N = number of consumer -threads. - -for (size_t i = 0; i < num_threads; i++) { - mpmc_push(&g_file_queue, NULL); -} - */ #include "base.h" -typedef struct { +#define CACHELINE 64 + +#if defined(_MSC_VER) +#define CACHE_ALIGN __declspec(align(CACHELINE)) +#else +#define CACHE_ALIGN __attribute__((aligned(CACHELINE))) +#endif + +#if defined(__GNUC__) || defined(__clang__) +#define likely(x) __builtin_expect((x), 1) +#define unlikely(x) __builtin_expect((x), 0) +#else +#define likely(x) (x) +#define unlikely(x) (x) +#endif + +static void cpu_pause(void) { +#if defined(_MSC_VER) || defined(__x86_64__) || defined(__i386__) + _mm_pause(); +#endif +} +typedef struct CACHE_ALIGN { atomic_size_t seq; void *data; char pad[64 - sizeof(atomic_size_t) - sizeof(void *)]; } MPMCSlot; typedef struct { - atomic_size_t head; - char pad1[64]; - atomic_size_t tail; - char pad2[64]; + CACHE_ALIGN atomic_size_t head; + CACHE_ALIGN atomic_size_t tail; size_t capacity; size_t mask; @@ -38,12 +49,19 @@ typedef struct { // files can lead to ODR violations (multiple definition errors if included in // more than one file) +/* ----------------------------------------------------------- */ +/* INIT */ +/* ----------------------------------------------------------- */ static void mpmc_init(MPMCQueue *q, size_t max_capacity) { - if ((max_capacity & (max_capacity - 1)) != 0) { - fprintf(stderr, "capacity must be power of two\n"); + if (!max_capacity) { + fprintf(stderr, "capacity must positive\n"); exit(1); } + u32 pagesize = plat_get_pagesize(); + + max_capacity = ALIGN_UP_POW2(max_capacity, pagesize); + q->capacity = max_capacity; q->mask = max_capacity - 1; @@ -56,11 +74,10 @@ static void mpmc_init(MPMCQueue *q, size_t max_capacity) { exit(1); } - q->commit_step = (64ull * 1024 * 1024) / sizeof(MPMCSlot); + q->commit_step = pagesize; atomic_flag_clear(&q->commit_lock); q->committed = q->commit_step; - VirtualAlloc(q->slots, q->commit_step * sizeof(MPMCSlot), MEM_COMMIT, PAGE_READWRITE); @@ -73,6 +90,9 @@ static void mpmc_init(MPMCQueue *q, size_t max_capacity) { atomic_init(&q->tail, 0); } +/* ----------------------------------------------------------- */ +/* COMMIT MORE MEMORY */ +/* ----------------------------------------------------------- */ static void mpmc_commit_more(MPMCQueue *q) { if (atomic_flag_test_and_set(&q->commit_lock)) @@ -111,6 +131,9 @@ static void mpmc_commit_more(MPMCQueue *q) { atomic_flag_clear(&q->commit_lock); } +/* ----------------------------------------------------------- */ +/* PUSH */ +/* ----------------------------------------------------------- */ static void mpmc_push(MPMCQueue *q, void *item) { MPMCSlot *slot; size_t pos; @@ -123,7 +146,7 @@ static void mpmc_push(MPMCQueue *q, void *item) { size_t committed = atomic_load_explicit(&q->committed, memory_order_relaxed); - if (pos >= committed) { + if (unlikely(pos >= committed)) { mpmc_commit_more(q); continue; } @@ -133,7 +156,7 @@ static void mpmc_push(MPMCQueue *q, void *item) { size_t seq = atomic_load_explicit(&slot->seq, memory_order_acquire); intptr_t diff = (intptr_t)seq - (intptr_t)pos; - if (diff == 0) { + if (likely(diff == 0)) { if (atomic_compare_exchange_weak_explicit(&q->tail, &pos, pos + 1, memory_order_relaxed, @@ -155,6 +178,9 @@ static void mpmc_push(MPMCQueue *q, void *item) { atomic_store_explicit(&slot->seq, pos + 1, memory_order_release); } +/* ----------------------------------------------------------- */ +/* POP */ +/* ----------------------------------------------------------- */ static void *mpmc_pop(MPMCQueue *q) { MPMCSlot *slot; size_t pos; @@ -169,7 +195,7 @@ static void *mpmc_pop(MPMCQueue *q) { size_t seq = atomic_load_explicit(&slot->seq, memory_order_acquire); intptr_t diff = (intptr_t)seq - (intptr_t)(pos + 1); - if (diff == 0) { + if (likely(diff == 0)) { if (atomic_compare_exchange_weak_explicit(&q->head, &pos, pos + 1, memory_order_relaxed, @@ -183,13 +209,10 @@ static void *mpmc_pop(MPMCQueue *q) { } else { // slot is still transitioning (written by another thread) if (++spins > 10) { - SwitchToThread(); // yield CPU spins = 0; - } else { - - _mm_pause(); // busy waiting + cpu_pause(); } } } @@ -200,3 +223,37 @@ static void *mpmc_pop(MPMCQueue *q) { return data; } + +/* ----------------------------------------------------------- */ +/* PUSH POISON */ +/* ----------------------------------------------------------- */ +/*note: + After producers finishes, push N poison pills where N = number of consumer +threads, this is necessary to stop the consumers. +*/ + +static void mpmc_producers_finished(MPMCQueue *q, u8 consumer_count) { + for (u8 i = 0; i < consumer_count; i++) { + mpmc_push(q, NULL); + } +} + +/* ----------------------------------------------------------- */ +/* MPMC Cleanup */ +/* ----------------------------------------------------------- */ +static void mpmc_finish(MPMCQueue *q) { + if (!q) + return; + + if (q->slots) { + VirtualFree(q->slots, 0, MEM_RELEASE); + q->slots = NULL; + } + + q->capacity = 0; + q->mask = 0; + + atomic_store_explicit(&q->head, 0, memory_order_relaxed); + atomic_store_explicit(&q->tail, 0, memory_order_relaxed); + atomic_store_explicit(&q->committed, 0, memory_order_relaxed); +} diff --git a/platform_windows.c b/platform_windows.c index 550f731..d55968a 100644 --- a/platform_windows.c +++ b/platform_windows.c @@ -1,4 +1,3 @@ -#include "arena.h" #include "platform.h" // ----------------------------- Globals ------------------------------------ @@ -475,7 +474,7 @@ int main(int argc, char **argv) { arena_free(&gp_arena, (u8 **)&buf, len); // Add some extra threads to overlap I/O more aggressively - size_t num_threads = hw_threads * 2; + u8 num_threads = hw_threads * 2; if (num_threads < 2) num_threads = 2; @@ -527,9 +526,7 @@ int main(int argc, char **argv) { WaitForMultipleObjects((DWORD)scan_threads, scan_tids, TRUE, INFINITE); - for (size_t i = 0; i < num_threads; i++) { - mpmc_push(&g_file_queue, NULL); - } + mpmc_producers_finished(&g_file_queue, num_threads); atomic_store(&g_scan_done, 1);