1:"$Sreact.fragment"
2:I[9766,[],""]
3:I[98924,[],""]
5:I[27346,["316","static/chunks/ad2866b8-635304a38afc0b68.js","239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","869","static/chunks/869-f328dfc4a7854a42.js","217","static/chunks/217-b882ca4bd6228d18.js","531","static/chunks/531-c61cd8adb4f12f15.js","368","static/chunks/368-fb0c58a608326176.js","309","static/chunks/app/%5Blang%5D/docs/%5B%5B...slug%5D%5D/page-a405d0666d803277.js"],"ScrollArea"]
6:I[29505,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"default"]
8:I[24431,[],"OutletBoundary"]
a:I[15278,[],"AsyncMetadataOutlet"]
c:I[24431,[],"ViewportBoundary"]
e:I[24431,[],"MetadataBoundary"]
f:"$Sreact.suspense"
11:I[57150,[],""]
:HL["/_next/static/css/c9fbdf6b51c9cc9f.css","style"]
0:{"P":null,"b":"FATp18w24-oXdWnXMc_-_","p":"","c":["","en","docs","guides","advanced-policies"],"i":false,"f":[[["",{"children":[["lang","en","d"],{"children":["docs",{"children":[["slug","guides/advanced-policies","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true]}],["",["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["lang","en","d"],["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c9fbdf6b51c9cc9f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],"$L4"]}],{"children":["docs",["$","$1","c",{"children":[null,["$","div",null,{"className":"flex items-start gap-8","children":[["$","aside","leftbar",{"className":"md:flex hidden flex-[1.5] min-w-[238px] sticky top-16 flex-col h-[93.75vh] overflow-y-auto","children":["$","$L5",null,{"className":"py-4","children":["$","$L6",null,{}]}]}],["$","div",null,{"className":"flex-[6]","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["slug","guides/advanced-policies","oc"],["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L7",null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true}
12:I[97397,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","160","static/chunks/app/%5Blang%5D/layout-91542d54d0202719.js"],"ClientDictionary"]
4:["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_6f2fcd __variable_33c22e font-regular antialiased tracking-wide","suppressHydrationWarning":true,"children":["$","$L12",null,{"dict":{"metadata":{"title":"USM: High Velocity Linux Memory Manager Development","description":"Craft custom, high-performance memory policies in userspace without touching the kernel. USM is a framework for the rapid development of memory management policies in Linux."},"home":{"follow_github":"Star us on GitHub","main_header":"USM: High Velocity Linux Memory Manager Development","sub_header":"Craft custom, high-performance memory policies without touching the kernel. Go from idea to implementation in hours, not months, solving real-world bottlenecks like fragmentation and suboptimal caching.","get_started":"Get Started","see_the_why":"See the Showcase","problem_title":"The Problem: A 'One-Size-Fits-All' Kernel","problem_subtitle":"The general-purpose Linux Memory Manager isn't optimized for specialized workloads, leading to performance spikes, memory fragmentation, and instability under pressure.","solution_title":"The Solution: A Microkernel-Inspired Architecture","solution_subtitle":"USM solves this by moving memory management policy into an isolated userspace process, leaving only a minimal, safe mechanism in the kernel. This allows for rapid, safe development of application-aware strategies.","aha_title":"This is a Complete Memory Allocator","aha_subtitle":"Writing a memory policy is now as simple as implementing a C function. Below is a complete, working 'first-fit' allocator."},"contributors":{"title":"Contributors","subtitle":"Meet the team contributing to the USM project."},"contact":{"title":"Contact Us","subtitle":"Get in touch with the project supervisors.","alain_tchana_role":"Professor, Ensimag - Grenoble INP - UGA","papa_assane_fall_role":"Researcher, Inria"},"navbar":{"search":{"search_documentation":"Search documentation...","no_results_found":"No results found for","type_something":"Type something to search..."},"theme":{"light":"Light","dark":"Dark","system":"System"},"links":{"documentation":"Documentation","guides":"Guides","contact":"Contact","contributors":"Contributors","blog":"Blog","community":"Community"}},"blog":{"title":"USM Blog","sub_title":"Updates, deep dives, and news from the USM team.","published_on":"Published on","posted_by":"Posted by","back_to_blog":"Back to Blog"},"footer":{"built_by":"Built by","source_code_available":"The source code is available on","deploy":"Deploy","sponsor":"Sponsor"},"docs":{"on_this_page":"On this page","previous":"Previous","next":"Next"},"leftbar":{"getting_started":"Getting Started","introduction":"Introduction","core_concepts":"Core Concepts","test":"Tests","environment_setup":"Environment Setup","guides":"Guides","first_allocation_policy":"Your First Allocation Policy","first_eviction_policy":"Your First Eviction Policy","Christine":"Coordinative Scheduling with Christine","PTEMagnet":"PTEMagnet as a USM Policy","advanced_policies":"Advanced Policies","api_reference":"API Reference","api_policy_ops":"Policy Interfaces (_ops)","api_data_structures":"Data Structures","api_configuration_file":"Configuration File","community":"Community","contributing":"Contributing","roadmap":"Roadmap","using_media":"DEV: Adding Media (Images & Videos)","tools":"Tools","process_visualizer":"USM Visualizer","visualizer":{"launch":"Run","placeholder":"Enter command (e.g. ./littleTest 8)"}},"error":{"oops":"Oops!","something_went_wrong":"Something went wrong","sub_text":"An unexpected error occurred. Please try again later.","reload_page":"Reload Page","back_to_homepage":"Back to Homepage"},"not_found":{"404":"404","page_not_found":"Page Not Found","sub_text":"The page you are looking for does not exist.","back_to_homepage":"Back to Homepage","go_back":"Go Back"}},"children":"$L13"}]}]}]
14:I[30358,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","160","static/chunks/app/%5Blang%5D/layout-91542d54d0202719.js"],"ThemeProvider"]
15:I[31856,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"Sheet"]
16:I[31856,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"SheetTrigger"]
17:I[31856,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"SheetContent"]
18:I[54679,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"DialogTitle"]
19:I[31856,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"SheetHeader"]
1a:I[31856,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"SheetClose"]
1b:I[79191,["316","static/chunks/ad2866b8-635304a38afc0b68.js","239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","869","static/chunks/869-f328dfc4a7854a42.js","217","static/chunks/217-b882ca4bd6228d18.js","531","static/chunks/531-c61cd8adb4f12f15.js","368","static/chunks/368-fb0c58a608326176.js","309","static/chunks/app/%5Blang%5D/docs/%5B%5B...slug%5D%5D/page-a405d0666d803277.js"],"default"]
1c:I[52619,["316","static/chunks/ad2866b8-635304a38afc0b68.js","239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","869","static/chunks/869-f328dfc4a7854a42.js","217","static/chunks/217-b882ca4bd6228d18.js","531","static/chunks/531-c61cd8adb4f12f15.js","368","static/chunks/368-fb0c58a608326176.js","309","static/chunks/app/%5Blang%5D/docs/%5B%5B...slug%5D%5D/page-a405d0666d803277.js"],""]
13:["$","$L14",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":[["$","nav",null,{"className":"w-full border-b h-16 sticky top-0 z-50 bg-background/95 backdrop-blur-sm","children":["$","div",null,{"className":"sm:container mx-auto w-[95vw] h-full flex items-center justify-between","children":[["$","div",null,{"className":"flex items-center gap-4","children":[["$","div",null,{"className":"md:hidden","children":["$","$L15",null,{"children":[["$","$L16",null,{"asChild":true,"children":["$","button",null,{"className":"items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9 flex","ref":"$undefined","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-align-left","children":[["$","line","1fp77t",{"x1":"21","x2":"3","y1":"6","y2":"6"}],["$","line","v6grx8",{"x1":"15","x2":"3","y1":"12","y2":"12"}],["$","line","1awlsn",{"x1":"17","x2":"3","y1":"18","y2":"18"}],"$undefined"]}]}]}],["$","$L17",null,{"className":"flex flex-col gap-4 px-0","side":"left","children":[["$","$L18",null,{"className":"sr-only","children":"Menu"}],["$","$L19",null,{"children":["$","$L1a",null,{"className":"px-5","asChild":true,"children":["$","$L1b",null,{"href":"/","className":"flex items-center gap-2.5","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":1.5,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-cpu w-6 h-6 text-muted-foreground","children":[["$","rect","14l7u7",{"width":"16","height":"16","x":"4","y":"4","rx":"2"}],["$","rect","5aljv4",{"width":"6","height":"6","x":"9","y":"9","rx":"1"}],["$","path","13l42r",{"d":"M15 2v2"}],["$","path","15mkzm",{"d":"M15 20v2"}],["$","path","1gxd5l",{"d":"M2 15h2"}],["$","path","1bbxkp",{"d":"M2 9h2"}],["$","path","19e6y8",{"d":"M20 15h2"}],["$","path","19tzq7",{"d":"M20 9h2"}],["$","path","165o2o",{"d":"M9 2v2"}],["$","path","i2bqo8",{"d":"M9 20v2"}],"$undefined"]}],["$","h2",null,{"className":"text-md font-bold font-code","children":"USM Docs"}]]}]}]}],["$","div",null,{"className":"flex flex-col gap-4 overflow-y-auto","children":[["$","div",null,{"className":"flex flex-col gap-2.5 mt-3 mx-2 px-5","children":[["$","$L1a","documentation/docs/getting-started/introduction",{"asChild":true,"children":["$","$L1b","documentation/docs/getting-started/introduction",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/docs/getting-started/introduction","absolute":true,"children":"Documentation"}]}],["$","$L1a","guides/docs/guides/first-allocation-policy",{"asChild":true,"children":["$","$L1b","guides/docs/guides/first-allocation-policy",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/docs/guides/first-allocation-policy","absolute":"$undefined","children":"Guides"}]}],["$","$L1a","contact/contact",{"asChild":true,"children":["$","$L1b","contact/contact",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/contact","absolute":"$undefined","children":"Contact"}]}],["$","$L1a","contributors/contributors",{"asChild":true,"children":["$","$L1b","contributors/contributors",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/contributors","absolute":"$undefined","children":"Contributors"}]}],["$","$L1a","blog/blog",{"asChild":true,"children":["$","$L1b","blog/blog",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/blog","absolute":"$undefined","children":"Blog"}]}]]}],["$","div",null,{"className":"mx-2 px-5","children":["$","$L6",null,{"isSheet":true}]}],["$","div",null,{"className":"p-6 pb-4 flex gap-2.5","children":["$","$L1c",null,{"href":"https://github.com/sponsors/todo-repo","className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3","children":["$L1d","Sponsor"]}]}]]}]]}]]}]}],"$L1e","$L1f"]}],"$L20"]}]}],"$L21","$L22"]}]
23:I[55854,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"default"]
24:I[53047,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"default"]
25:I[53990,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","531","static/chunks/531-c61cd8adb4f12f15.js","515","static/chunks/515-158a157ad3fe69ad.js","841","static/chunks/841-fbf5ef0791d48d49.js","812","static/chunks/app/%5Blang%5D/docs/layout-4ad3aa5dc32b2744.js"],"ModeToggle"]
26:I[18032,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","48","static/chunks/app/%5Blang%5D/error-f455d4961d40cd2c.js"],"default"]
27:I[33774,["239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","226","static/chunks/app/%5Blang%5D/not-found-bf7b0c977c712ed0.js"],"default"]
1d:["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-heart h-4 w-4 mr-2 text-red-600 fill-current","children":[["$","path","c3ymky",{"d":"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"}],"$undefined"]}]
1e:["$","$L1b",null,{"href":"/","className":"flex items-center gap-2.5","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":1.5,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-cpu w-6 h-6 text-muted-foreground","children":[["$","rect","14l7u7",{"width":"16","height":"16","x":"4","y":"4","rx":"2"}],["$","rect","5aljv4",{"width":"6","height":"6","x":"9","y":"9","rx":"1"}],["$","path","13l42r",{"d":"M15 2v2"}],["$","path","15mkzm",{"d":"M15 20v2"}],["$","path","1gxd5l",{"d":"M2 15h2"}],["$","path","1bbxkp",{"d":"M2 9h2"}],["$","path","19e6y8",{"d":"M20 15h2"}],["$","path","19tzq7",{"d":"M20 9h2"}],["$","path","165o2o",{"d":"M9 2v2"}],["$","path","i2bqo8",{"d":"M9 20v2"}],"$undefined"]}],["$","h2",null,{"className":"text-md font-bold font-code","children":"USM Docs"}]]}]
1f:["$","div",null,{"className":"hidden md:flex items-center gap-5 text-sm font-medium text-muted-foreground","children":[["$","$L1b","documentation/docs/getting-started/introduction",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/docs/getting-started/introduction","absolute":true,"children":"Documentation"}],["$","$L1b","guides/docs/guides/first-allocation-policy",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/docs/guides/first-allocation-policy","absolute":"$undefined","children":"Guides"}],["$","$L1b","contact/contact",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/contact","absolute":"$undefined","children":"Contact"}],["$","$L1b","contributors/contributors",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/contributors","absolute":"$undefined","children":"Contributors"}],["$","$L1b","blog/blog",{"className":"flex items-center gap-1 hover:text-primary transition-colors","activeClassName":"text-primary dark:font-medium font-semibold","href":"/blog","absolute":"$undefined","children":"Blog"}]]}]
20:["$","div",null,{"className":"flex items-center gap-3","children":[["$","$L23",null,{"dict":"$4:props:children:props:children:props:dict"}],["$","div",null,{"className":"flex items-center","children":[["$","$L24",null,{}],["$","$L1c",null,{"href":"https://github.com/todo-repo/usm","target":"_blank","className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-github h-[1.1rem] w-[1.1rem]","children":[["$","path","tonef",{"d":"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}],["$","path","9comsn",{"d":"M9 18c-4.51 2-5-2-7-2"}],"$undefined"]}]}],["$","$L25",null,{"dict":"$4:props:children:props:children:props:dict"}]]}]]}]
21:["$","main",null,{"className":"sm:container mx-auto h-auto scroll-smooth","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$26","errorStyles":[],"errorScripts":[],"template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","$L27",null,{}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]
22:["$","footer",null,{"className":"border-t w-full h-16","children":["$","div",null,{"className":"container flex items-center sm:justify-between justify-center sm:gap-0 gap-4 h-full text-muted-foreground text-sm flex-wrap sm:py-0 py-3 max-sm:px-4","children":[["$","div",null,{"className":"flex items-center gap-3","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-cpu sm:block hidden w-5 h-5 text-muted-foreground","children":[["$","rect","14l7u7",{"width":"16","height":"16","x":"4","y":"4","rx":"2"}],["$","rect","5aljv4",{"width":"6","height":"6","x":"9","y":"9","rx":"1"}],["$","path","13l42r",{"d":"M15 2v2"}],["$","path","15mkzm",{"d":"M15 20v2"}],["$","path","1gxd5l",{"d":"M2 15h2"}],["$","path","1bbxkp",{"d":"M2 9h2"}],["$","path","19e6y8",{"d":"M20 15h2"}],["$","path","19tzq7",{"d":"M20 9h2"}],["$","path","165o2o",{"d":"M9 2v2"}],["$","path","i2bqo8",{"d":"M9 20v2"}],"$undefined"]}],["$","p",null,{"className":"text-center","children":["Built by"," ",["$","$L1c",null,{"className":"px-1 underline underline-offset-2","href":"/contact","target":"_blank","children":"Researchers"}],". ","The source code is available on"," ",["$","$L1c",null,{"className":"px-1 underline underline-offset-2","href":"https://github.com/HTester4/flusm.git","target":"_blank","children":"GitHub"}],"."]}]]}],["$","div",null,{"className":"gap-4 items-center hidden md:flex","children":["$","$L1c",null,{"href":"https://github.com/sponsors/todo-repo","className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-9 rounded-md px-3","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-heart h-4 w-4 mr-2 text-red-600 fill-current","children":[["$","path","c3ymky",{"d":"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"}],"$undefined"]}],"Sponsor"]}]}]]}]}]
d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
9:null
28:I[21771,["316","static/chunks/ad2866b8-635304a38afc0b68.js","239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","869","static/chunks/869-f328dfc4a7854a42.js","217","static/chunks/217-b882ca4bd6228d18.js","531","static/chunks/531-c61cd8adb4f12f15.js","368","static/chunks/368-fb0c58a608326176.js","309","static/chunks/app/%5Blang%5D/docs/%5B%5B...slug%5D%5D/page-a405d0666d803277.js"],"default"]
7:["$","div",null,{"className":"flex items-start gap-10","children":[["$","div",null,{"className":"flex-[5] pt-10","children":["$","div",null,{"className":"prose prose-zinc dark:prose-invert prose-code:font-normal prose-code:font-code dark:prose-code:bg-stone-900/25 prose-code:bg-stone-50 prose-pre:bg-background prose-headings:scroll-m-20 w-[85vw] sm:w-full sm:mx-auto prose-code:text-sm prose-code:leading-6 dark:prose-code:text-white prose-code:text-stone-800 prose-code:p-[0.085rem] prose-code:rounded-md prose-code:border pt-2 !min-w-full prose-img:rounded-md prose-img:border prose-code:before:content-none prose-code:after:content-none prose-code:px-1.5 prose-code:overflow-x-auto !max-w-[500px] prose-img:my-3 prose-h2:my-4 prose-h2:mt-8","children":[["$","h1",null,{"className":"text-3xl !-mt-1.5","children":"Advanced Policy Concepts"}],["$","p",null,{"className":"-mt-4 text-muted-foreground text-[16.5px]","children":"Explore advanced USM features like asynchronous fault handling, application hints, and flexible huge pages."}],["$","div",null,{"children":[["$","p",null,{"children":"Once you've mastered basic allocation and eviction, you can leverage USM's more advanced features to achieve state-of-the-art performance for specialized workloads. This guide introduces three powerful concepts discussed in the USM research paper."}],"\n",["$","h3",null,{"id":"1-asynchronous-fault-handling-for-uthreads","children":[["$","$L1c",null,{"href":"#1-asynchronous-fault-handling-for-uthreads","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"1. Asynchronous Fault Handling for uThreads"]}],"\n",["$","p",null,{"children":[["$","strong",null,{"children":"The Problem:"}]," In systems that use user-level threading (uThreads), like Shenango or Junction, a major page fault that requires slow I/O (e.g., reading from disk) can be disastrous. The kernel thread (",["$","code",null,{"children":"kThread"}],") executing the faulting ",["$","code",null,{"children":"uThread"}]," will block, preventing other ready-to-run ",["$","code",null,{"children":"uThreads"}]," scheduled on that same ",["$","code",null,{"children":"kThread"}]," from making progress."]}],"\n",["$","p",null,{"children":[["$","strong",null,{"children":"The USM Solution:"}]," An advanced USM policy can handle faults asynchronously."]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":["The ",["$","code",null,{"children":"usm_alloc"}]," function is triggered for a faulting ",["$","code",null,{"children":"uThread"}],"."]}],"\n",["$","li",null,{"children":"Instead of blocking on I/O, the policy initiates the data transfer in the background."}],"\n",["$","li",null,{"children":["It immediately returns control to the ",["$","code",null,{"children":"LocalManager"}]," (the ",["$","code",null,{"children":"uThread"}]," scheduler)."]}],"\n",["$","li",null,{"children":["The ",["$","code",null,{"children":"LocalManager"}]," can then schedule a ",["$","em",null,{"children":"different"}],", non-blocked ",["$","code",null,{"children":"uThread"}]," onto the ",["$","code",null,{"children":"kThread"}],", keeping the CPU core busy with useful work."]}],"\n"]}],"\n",["$","p",null,{"children":["As the paper shows, this strategy can improve the performance of co-located CPU-intensive tasks by up to ",["$","strong",null,{"children":"2.26x"}],"."]}],"\n",["$","div",null,{"className":"my-5 relative group","children":[["$","div",null,{"className":"absolute top-3 right-2.5 z-10 opacity-0 group-hover:opacity-100 transition-opacity duration-200","children":["$","$L28",null,{"content":"// Conceptual Asynchronous Policy\r\nint async_aware_alloc(struct usm_event *event, struct usm_event *async_rq) {\r\n // Check if the fault requires slow I/O (e.g., it's a swap-in)\r\n if (is_swap_fault(event)) {\r\n // Don't block. Instead, populate the async_rq (asynchronous request)\r\n // structure to tell USM to handle this in the background.\r\n setup_async_swap_in(async_rq, event);\r\n\r\n // Return a special code to tell the LocalManager to schedule\r\n // the next uThread immediately.\r\n return USM_YIELD;\r\n }\r\n\r\n // ... handle fast-path, in-memory allocations synchronously ...\r\n return regular_alloc(event);\r\n}\n"}]}],"$L29"]}],"\n","$L2a","\n","$L2b","\n","$L2c","\n","$L2d","\n","$L2e","\n","$L2f","\n","$L30","\n","$L31","\n","$L32","\n","$L33","\n","$L34","\n","$L35"]}],"$L36","$L37"]}]}],"$L38"]}]
44:I[80622,[],"IconMark"]
29:["$","div",null,{"className":"relative","children":["$","pre",null,{"className":"language-c","children":["$","code",null,{"className":"language-c code-highlight","children":[["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token comment","children":"// Conceptual Asynchronous Policy"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token keyword","children":"int"}]," ",["$","span",null,{"className":"token function","children":"async_aware_alloc"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"usm_event"}]," ",["$","span",null,{"className":"token operator","children":"*"}],"event",["$","span",null,{"className":"token punctuation","children":","}]," ",["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"usm_event"}]," ",["$","span",null,{"className":"token operator","children":"*"}],"async_rq",["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token punctuation","children":"{"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Check if the fault requires slow I/O (e.g., it's a swap-in)"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"if"}]," ",["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token function","children":"is_swap_fault"}],["$","span",null,{"className":"token punctuation","children":"("}],"event",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token punctuation","children":"{"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Don't block. Instead, populate the async_rq (asynchronous request)"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// structure to tell USM to handle this in the background."}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"setup_async_swap_in"}],["$","span",null,{"className":"token punctuation","children":"("}],"async_rq",["$","span",null,{"className":"token punctuation","children":","}]," event",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":"\r\n"}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Return a special code to tell the LocalManager to schedule"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// the next uThread immediately."}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"return"}]," USM_YIELD",["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token punctuation","children":"}"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":"\r\n"}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// ... handle fast-path, in-memory allocations synchronously ..."}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"return"}]," ",["$","span",null,{"className":"token function","children":"regular_alloc"}],["$","span",null,{"className":"token punctuation","children":"("}],"event",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token punctuation","children":"}"}],"\n"]}]]}]}]}]
2a:["$","h3",null,{"id":"2-application-specific-hints","children":[["$","$L1c",null,{"href":"#2-application-specific-hints","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"2. Application-Specific Hints"]}]
2b:["$","p",null,{"children":[["$","strong",null,{"children":"The Problem:"}]," An OS memory manager is fundamentally \"blind.\" It has no understanding of the application's data. It might evict a critical index page from a database while keeping a rarely used data cache page in memory, simply because the data cache was touched more recently."]}]
2c:["$","p",null,{"children":[["$","strong",null,{"children":"The USM Solution:"}]," USM provides a hinting library (",["$","code",null,{"children":"lib_usm"}],") that allows an application to send arbitrary, custom information directly to its memory policy."]}]
2d:["$","p",null,{"children":["$","strong",null,{"children":"Example Use Case: A Smarter Database Eviction Policy"}]}]
2e:["$","ol",null,{"children":["\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Application Code:"}]," The database, when loading its index, uses ",["$","code",null,{"children":"lib_usm"}]," to \"tag\" that memory region."]}],"\n",["$","div",null,{"className":"my-5 relative group","children":[["$","div",null,{"className":"absolute top-3 right-2.5 z-10 opacity-0 group-hover:opacity-100 transition-opacity duration-200","children":["$","$L28",null,{"content":"// Database Application Code\r\nindex_buffer = mmap(...);\r\nusm_hint(index_buffer, \"PRIORITY=HIGH; EVICTION=DENY\");\r\n\r\ndata_cache = mmap(...);\r\nusm_hint(data_cache, \"PRIORITY=LOW; EVICTION=ALLOW\");\n"}]}],["$","div",null,{"className":"relative","children":["$","pre",null,{"className":"language-c","children":["$","code",null,{"className":"language-c code-highlight","children":[["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token comment","children":"// Database Application Code"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":["index_buffer ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token function","children":"mmap"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token punctuation","children":"."}],["$","span",null,{"className":"token punctuation","children":"."}],["$","span",null,{"className":"token punctuation","children":"."}],["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token function","children":"usm_hint"}],["$","span",null,{"className":"token punctuation","children":"("}],"index_buffer",["$","span",null,{"className":"token punctuation","children":","}]," ",["$","span",null,{"className":"token string","children":"\"PRIORITY=HIGH; EVICTION=DENY\""}],["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":"\r\n"}],["$","span",null,{"className":"code-line","children":["data_cache ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token function","children":"mmap"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token punctuation","children":"."}],["$","span",null,{"className":"token punctuation","children":"."}],["$","span",null,{"className":"token punctuation","children":"."}],["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token function","children":"usm_hint"}],["$","span",null,{"className":"token punctuation","children":"("}],"data_cache",["$","span",null,{"className":"token punctuation","children":","}]," ",["$","span",null,{"className":"token string","children":"\"PRIORITY=LOW; EVICTION=ALLOW\""}],["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\n"]}]]}]}]}]]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Policy Code:"}]," The ",["$","code",null,{"children":"usm_evict_fallback"}]," function receives these hints. When choosing a victim page, it can now make an intelligent, application-aware decision."]}],"\n",["$","div",null,{"className":"my-5 relative group","children":[["$","div",null,{"className":"absolute top-3 right-2.5 z-10 opacity-0 group-hover:opacity-100 transition-opacity duration-200","children":["$","$L28",null,{"content":"// Eviction Policy Code\r\nstruct page* choose_victim_page() {\r\n // Iterate through used pages and check their hints.\r\n for each page in usedList {\r\n const char* hint = get_hint_for_page(page);\r\n if (hint && strcmp(hint, \"EVICTION=ALLOW\") == 0) {\r\n return page; // Found a low-priority victim!\r\n }\r\n }\r\n // ... fallback to other logic if no low-priority pages are found ...\r\n}\n"}]}],["$","div",null,{"className":"relative","children":["$","pre",null,{"className":"language-c","children":["$","code",null,{"className":"language-c code-highlight","children":["$L39","$L3a","$L3b","$L3c","$L3d","$L3e","$L3f","$L40","$L41","$L42","$L43"]}]}]}]]}],"\n"]}],"\n"]}]
2f:["$","h3",null,{"id":"3-flexible-huge-pages-fhp","children":[["$","$L1c",null,{"href":"#3-flexible-huge-pages-fhp","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"3. Flexible Huge Pages (FHP)"]}]
30:["$","p",null,{"children":[["$","strong",null,{"children":"The Problem:"}]," Hardware huge pages (e.g., 2MB or 1GB) can improve performance by reducing TLB misses, but their large, fixed sizes can lead to significant internal fragmentation if an application doesn't need the full page."]}]
31:["$","p",null,{"children":[["$","strong",null,{"children":"The USM Solution:"}]," A policy can create its own \"Flexible Huge Pages\" of any arbitrary size (e.g., 64KB, 128KB)."]}]
32:["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","strong",null,{"children":"How it Works:"}]," The ",["$","code",null,{"children":"usm_alloc"}]," function, upon receiving the ",["$","em",null,{"children":"first"}]," page fault in a new memory region, doesn't just allocate one page. It preemptively allocates and maps ",["$","code",null,{"children":"N"}]," contiguous ",["$","em",null,{"children":"virtual"}]," pages."]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"The Benefit:"}]," This drastically reduces the number of page fault events the kernel has to process, lowering overhead. The ",["$","code",null,{"children":"get_pages_prep"}]," function in ",["$","code",null,{"children":"policiesSet1.c"}]," is a real-world example of this batch-allocation logic."]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"The Result:"}]," The paper shows this can improve the performance of fault-sensitive applications like Redis and ",["$","code",null,{"children":"memflt"}]," by ",["$","strong",null,{"children":"8-88%"}],"."]}],"\n"]}]
33:["$","h2",null,{"id":"explaining-videos","children":[["$","$L1c",null,{"href":"#explaining-videos","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Explaining videos"]}]
34:["$","div",null,{"className":"my-6 border bg-background rounded-lg overflow-hidden shadow-md","children":[["$","div",null,{"className":"bg-muted px-4 py-2 flex items-center gap-2 border-b","children":[["$","div",null,{"className":"flex items-center gap-1.5","children":[["$","span",null,{"className":"w-3 h-3 bg-border rounded-full"}],["$","span",null,{"className":"w-3 h-3 bg-border rounded-full"}],["$","span",null,{"className":"w-3 h-3 bg-border rounded-full"}]]}],["$","div",null,{"className":"flex-grow text-center text-sm text-muted-foreground font-mono capitalize","children":"Code entry "}]]}],["$","video",null,{"src":"/videos/Advanced/1.webm","poster":"$undefined","controls":true,"muted":true,"autoPlay":false,"loop":false,"playsInline":true,"className":"w-full h-auto bg-black"}]]}]
35:["$","div",null,{"className":"my-6 border bg-background rounded-lg overflow-hidden shadow-md","children":[["$","div",null,{"className":"bg-muted px-4 py-2 flex items-center gap-2 border-b","children":[["$","div",null,{"className":"flex items-center gap-1.5","children":[["$","span",null,{"className":"w-3 h-3 bg-border rounded-full"}],["$","span",null,{"className":"w-3 h-3 bg-border rounded-full"}],["$","span",null,{"className":"w-3 h-3 bg-border rounded-full"}]]}],["$","div",null,{"className":"flex-grow text-center text-sm text-muted-foreground font-mono capitalize","children":"Code entry and compilation"}]]}],["$","video",null,{"src":"/videos/Advanced/2.webm","poster":"$undefined","controls":true,"muted":true,"autoPlay":false,"loop":false,"playsInline":true,"className":"w-full h-auto bg-black"}]]}]
36:["$","div",null,{"className":"mt-8 pt-6 border-t","children":["$","$L1c",null,{"href":"https://github.com/lado-saha/usm-docs/tree/main/contents/docs/en/guides/advanced-policies/index.mdx","target":"_blank","rel":"noopener noreferrer","className":"text-sm text-muted-foreground hover:text-primary transition-colors flex items-center gap-2","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-pencil w-4 h-4","children":[["$","path","1a8usu",{"d":"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}],["$","path","1mk7zo",{"d":"m15 5 4 4"}],"$undefined"]}],"Edit this page on GitHub"]}]}]
37:["$","div",null,{"className":"grid grid-cols-2 flex-grow sm:py-10 py-7 gap-3","children":[["$","div",null,{"children":["$","$L1b",null,{"className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 no-underline w-full flex flex-col pl-3 !py-8 !items-start","href":"/docs/guides/first-eviction-policy","children":[["$","span",null,{"className":"flex items-center text-muted-foreground text-xs","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-chevron-left w-[1rem] h-[1rem] mr-1","children":[["$","path","1wnfg3",{"d":"m15 18-6-6 6-6"}],"$undefined"]}],"Previous"]}],["$","span",null,{"className":"mt-1 ml-1","children":"Your First Eviction Policy"}]]}]}],["$","div",null,{"children":["$","$L1b",null,{"className":"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 no-underline w-full flex flex-col pr-3 !py-8 !items-end","href":"/docs/guides/using-media","children":[["$","span",null,{"className":"flex items-center text-muted-foreground text-xs","children":["Next",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-chevron-right w-[1rem] h-[1rem] ml-1","children":[["$","path","mthhwq",{"d":"m9 18 6-6-6-6"}],"$undefined"]}]]}],["$","span",null,{"className":"mt-1 mr-1","children":"DEV: Adding Media (Images & Videos)"}]]}]}]]}]
b:{"metadata":[["$","title","0",{"children":"Advanced Policy Concepts"}],["$","meta","1",{"name":"description","content":"Explore advanced USM features like asynchronous fault handling, application hints, and flexible huge pages."}],["$","meta","2",{"property":"og:title","content":"USM: High Velocity Linux Memory Manager Development"}],["$","meta","3",{"property":"og:description","content":"Craft custom, high-performance memory policies in userspace without touching the kernel. USM is a framework for the rapid development of memory management policies in Linux."}],["$","meta","4",{"property":"og:site_name","content":"USM Docs"}],["$","meta","5",{"property":"og:locale","content":"en"}],["$","meta","6",{"property":"og:image:type","content":"image/jpeg"}],["$","meta","7",{"property":"og:image:width","content":"1200"}],["$","meta","8",{"property":"og:image:height","content":"630"}],["$","meta","9",{"property":"og:image","content":"http://localhost:3000/opengraph-image.jpg?1f4cd24de62e2382"}],["$","meta","10",{"property":"og:type","content":"website"}],["$","meta","11",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","12",{"name":"twitter:title","content":"USM: High Velocity Linux Memory Manager Development"}],["$","meta","13",{"name":"twitter:description","content":"Craft custom, high-performance memory policies in userspace without touching the kernel. USM is a framework for the rapid development of memory management policies in Linux."}],["$","meta","14",{"name":"twitter:image:type","content":"image/jpeg"}],["$","meta","15",{"name":"twitter:image:width","content":"1200"}],["$","meta","16",{"name":"twitter:image:height","content":"630"}],["$","meta","17",{"name":"twitter:image","content":"http://localhost:3000/opengraph-image.jpg?1f4cd24de62e2382"}],["$","link","18",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","$L44","19",{}]],"error":null,"digest":"$undefined"}
10:"$b:metadata"
39:["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token comment","children":"// Eviction Policy Code"}],"\r\n"]}]
3a:["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"page"}],["$","span",null,{"className":"token operator","children":"*"}]," ",["$","span",null,{"className":"token function","children":"choose_victim_page"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token punctuation","children":"{"}],"\r\n"]}]
3b:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Iterate through used pages and check their hints."}],"\r\n"]}]
3c:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"for"}]," each page in usedList ",["$","span",null,{"className":"token punctuation","children":"{"}],"\r\n"]}]
3d:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"const"}]," ",["$","span",null,{"className":"token keyword","children":"char"}],["$","span",null,{"className":"token operator","children":"*"}]," hint ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token function","children":"get_hint_for_page"}],["$","span",null,{"className":"token punctuation","children":"("}],"page",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}]
3e:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"if"}]," ",["$","span",null,{"className":"token punctuation","children":"("}],"hint ",["$","span",null,{"className":"token operator","children":"&&"}]," ",["$","span",null,{"className":"token function","children":"strcmp"}],["$","span",null,{"className":"token punctuation","children":"("}],"hint",["$","span",null,{"className":"token punctuation","children":","}]," ",["$","span",null,{"className":"token string","children":"\"EVICTION=ALLOW\""}],["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token operator","children":"=="}]," ",["$","span",null,{"className":"token number","children":"0"}],["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token punctuation","children":"{"}],"\r\n"]}]
3f:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"return"}]," page",["$","span",null,{"className":"token punctuation","children":";"}]," ",["$","span",null,{"className":"token comment","children":"// Found a low-priority victim!"}],"\r\n"]}]
40:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token punctuation","children":"}"}],"\r\n"]}]
41:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token punctuation","children":"}"}],"\r\n"]}]
42:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// ... fallback to other logic if no low-priority pages are found ..."}],"\r\n"]}]
43:["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token punctuation","children":"}"}],"\n"]}]
45:I[31615,["316","static/chunks/ad2866b8-635304a38afc0b68.js","239","static/chunks/239-b0aaac5106d996a5.js","619","static/chunks/619-f072ac750404f9da.js","41","static/chunks/41-ad140fb6f3297f70.js","836","static/chunks/836-049faba5b3fbd25b.js","869","static/chunks/869-f328dfc4a7854a42.js","217","static/chunks/217-b882ca4bd6228d18.js","531","static/chunks/531-c61cd8adb4f12f15.js","368","static/chunks/368-fb0c58a608326176.js","309","static/chunks/app/%5Blang%5D/docs/%5B%5B...slug%5D%5D/page-a405d0666d803277.js"],"default"]
38:["$","div",null,{"className":"lg:flex hidden toc flex-[1] min-w-[200px] py-9 sticky top-16 h-[96.95vh]","children":["$","div",null,{"className":"flex flex-col gap-3 w-full pl-2","children":[["$","h3",null,{"className":"font-semibold text-sm","children":"On this page"}],["$","$L5",null,{"className":"pb-2 pt-0.5 overflow-y-auto","children":["$","$L45",null,{"data":[{"level":3,"text":"1. Asynchronous Fault Handling for uThreads","href":"#1-asynchronous-fault-handling-for-uthreads"},{"level":3,"text":"2. Application-Specific Hints","href":"#2-application-specific-hints"},{"level":3,"text":"3. Flexible Huge Pages (FHP)","href":"#3-flexible-huge-pages-fhp"},{"level":2,"text":"Explaining videos","href":"#explaining-videos"}]}]}]]}]}]