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","first-eviction-policy"],"i":false,"f":[[["",{"children":[["lang","en","d"],{"children":["docs",{"children":[["slug","guides/first-eviction-policy","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/first-eviction-policy","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 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":"Your First Eviction Policy"}],["$","p",null,{"className":"-mt-4 text-muted-foreground text-[16.5px]","children":"Learn how to handle memory pressure by implementing a simple FIFO eviction policy that swaps pages to disk."}],["$","div",null,{"children":[["$","p",null,{"children":["When your allocation policy runs out of free pages, the system doesn't have to fail. USM allows you to define an ",["$","strong",null,{"children":"eviction policy"}]," that can free up memory by moving less-used pages to a swap device (like a file on disk)."]}],"\n",["$","p",null,{"children":"This guide explains how to implement a simple \"First-In, First-Out\" (FIFO) eviction policy."}],"\n",["$","h3",null,{"id":"the-eviction-mechanism-usm_evict_fallback","children":[["$","$L1c",null,{"href":"#the-eviction-mechanism-usm_evict_fallback","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"The Eviction Mechanism: ",["$","code",null,{"children":"usm_evict_fallback"}]]}],"\n",["$","p",null,{"children":["The primary mechanism for emergency eviction is the ",["$","code",null,{"children":"usm_evict_fallback"}]," function pointer."]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","strong",null,{"children":"How it works:"}]," When your ",["$","code",null,{"children":"usm_alloc"}]," function finds the ",["$","code",null,{"children":"freeList"}]," is empty, instead of immediately failing, it can call ",["$","code",null,{"children":"usm_evict_fallback"}],"."]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"Your Job:"}]," You must write a function that can serve as this fallback. This function's job is to select a \"victim\" page from the ",["$","code",null,{"children":"usedList"}],", swap it out to disk, and return its physical page to the ",["$","code",null,{"children":"freeList"}],"."]}],"\n"]}],"\n",["$","h3",null,{"id":"step-1-the-swap-out-logic","children":[["$","$L1c",null,{"href":"#step-1-the-swap-out-logic","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Step 1: The Swap-Out Logic"]}],"\n",["$","p",null,{"children":["The example code in ",["$","code",null,{"children":"policiesSet1.c"}]," and ",["$","code",null,{"children":"policiesSet1BP.c"}]," provides the building blocks for eviction. The core logic resides in the ",["$","code",null,{"children":"swap_out"}]," function, which performs these actions:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["Takes a ",["$","code",null,{"children":"to_swap"}]," struct containing the victim page."]}],"\n",["$","li",null,{"children":["Calls ",["$","code",null,{"children":"usm_clear_and_set"}]," to update the application's page table. This atomically removes the mapping to the physical page and replaces it with a special \"swap entry\" that encodes the location of the page on disk."]}],"\n",["$","li",null,{"children":["Writes the page's data to a swap file using ",["$","code",null,{"children":"fwrite"}],"."]}],"\n",["$","li",null,{"children":["Returns the physical page to the ",["$","code",null,{"children":"freeList"}],", making it available for new allocations."]}],"\n"]}],"\n","$L28","\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","\n","$L36","\n","$L37","\n","$L38","\n","$L39","\n","$L3a","\n","$L3b","\n","$L3c","\n","$L3d","\n","$L3e","\n","$L3f","\n","$L40","\n","$L41"]}],"$L42","$L43"]}]}],"$L44"]}] 45: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"] 77:I[81356,["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"],"Image"] 78:I[80622,[],"IconMark"] 28:["$","h3",null,{"id":"step-2-implementing-the-fallback-handler","children":[["$","$L1c",null,{"href":"#step-2-implementing-the-fallback-handler","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Step 2: Implementing the Fallback Handler"]}] 29:["$","p",null,{"children":["Let's write our emergency eviction function. This function will implement the FIFO logic by selecting the ",["$","em",null,{"children":"oldest"}]," page from the ",["$","code",null,{"children":"usedList"}]," (which is at the head of the list)."]}] 46:T620,// This function is our emergency eviction handler. void handle_evict_request(struct usm_event *event) { printf("[devPol/Mayday] Calling emergency evict. func.!\n"); // Create a structure to hold swap information. struct to_swap *toSwapNode = (struct to_swap *)malloc(sizeof(struct to_swap)); // Lock the used list to safely select a victim. pthread_mutex_lock(&policiesSet1Ulock); if(list_empty(&usedList)) { pthread_mutex_unlock(&policiesSet1Ulock); printf("[devPol/Mayday/Mayday] Nuthin' to evict here!\n"); free(toSwapNode); return; } // FIFO Logic: Select the oldest page, which is the first one in the used list. struct optEludeList *victimPageNode = list_first_entry(&usedList, struct optEludeList, iulist); // "Hold" the page by removing it from the used list. list_del(&victimPageNode->iulist); pthread_mutex_unlock(&policiesSet1Ulock); // Populate the swap node with details from the victim page. toSwapNode->page = victimPageNode->usmPage; toSwapNode->proc = victimPageNode->usmPage->process; toSwapNode->swapped_address = victimPageNode->usmPage->virtualAddress; toSwapNode->swapDevice = choose_swap_device(toSwapNode->proc); toSwapNode->snode = list_entry(getSwapNode(toSwapNode->swapDevice), struct swap_node, iulist); toSwapNode->snode->toSwapHolder = toSwapNode; // Call the core swap_out function to write to disk and free the page. toSwapNode->swapDevice->swap_dev_ops.swap_out(toSwapNode); } 2a:["$","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":["$","$L45",null,{"content":"$46"}]}],["$","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":"// This function is our emergency eviction handler."}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token keyword","children":"void"}]," ",["$","span",null,{"className":"token function","children":"handle_evict_request"}],["$","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 punctuation","children":"{"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"printf"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token string","children":"\"[devPol/Mayday] Calling emergency evict. func.!\\n\""}],["$","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":"// Create a structure to hold swap information."}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"to_swap"}]," ",["$","span",null,{"className":"token operator","children":"*"}],"toSwapNode ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token keyword","children":"struct"}]," ","$L47"," ","$L48","$L49","$L4a","$L4b","$L4c","$L4d","$L4e"," ","$L4f","$L50","$L51","$L52","\r\n"]}],"$L53","$L54","$L55","$L56","$L57","$L58","$L59","$L5a","$L5b","$L5c","$L5d","$L5e","$L5f","$L60","$L61","$L62","$L63","$L64","$L65","$L66","$L67","$L68","$L69","$L6a","$L6b","$L6c","$L6d","$L6e","$L6f"]}]}]}]]}] 2b:["$","h3",null,{"id":"step-3-registering-the-fallback-handler","children":[["$","$L1c",null,{"href":"#step-3-registering-the-fallback-handler","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Step 3: Registering the Fallback Handler"]}] 2c:["$","p",null,{"children":["In your swap policy's ",["$","code",null,{"children":"_setup"}]," function, you simply assign the address of your new function to the global ",["$","code",null,{"children":"usm_evict_fallback"}]," pointer."]}] 2d:["$","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":["$","$L45",null,{"content":"static int policiesSet1_setup(unsigned int pagesNumber) {\r\n // ... other swap setup ...\r\n\r\n // Register the fallback handler.\r\n usm_evict_fallback = &handle_evict_request;\r\n\r\n return 0;\r\n}\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 keyword","children":"static"}]," ",["$","span",null,{"className":"token keyword","children":"int"}]," ",["$","span",null,{"className":"token function","children":"policiesSet1_setup"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token keyword","children":"unsigned"}]," ",["$","span",null,{"className":"token keyword","children":"int"}]," pagesNumber",["$","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":"// ... other swap setup ..."}],"\r\n"]}],["$","span",null,{"className":"code-line","children":"\r\n"}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Register the fallback handler."}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" usm_evict_fallback ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token operator","children":"&"}],"handle_evict_request",["$","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 keyword","children":"return"}]," ",["$","span",null,{"className":"token number","children":"0"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token punctuation","children":"}"}],"\n"]}]]}]}]}]]}] 2e:["$","h3",null,{"id":"step-4-integrating-with-the-allocator","children":[["$","$L1c",null,{"href":"#step-4-integrating-with-the-allocator","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Step 4: Integrating with the Allocator"]}] 2f:["$","p",null,{"children":"Finally, your allocation policy needs to be updated to call this fallback when it runs out of memory."}] 30:["$","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":["$","$L45",null,{"content":"static inline int basic_alloc_uniq(struct usm_event *event) {\r\n int retried = 0;\r\nretry:\r\n pthread_mutex_lock(&policiesSet1Flock);\r\n\r\n if (list_empty(&freeList)) {\r\n pthread_mutex_unlock(&policiesSet1Flock);\r\n if (retried) return 1; // Failed even after eviction\r\n\r\n // Out of memory, call the emergency fallback!\r\n usm_evict_fallback(event);\r\n retried = 1;\r\n goto retry; // Try the allocation again.\r\n }\r\n\r\n // ... rest of the allocation logic ...\r\n}\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 keyword","children":"static"}]," ",["$","span",null,{"className":"token keyword","children":"inline"}]," ",["$","span",null,{"className":"token keyword","children":"int"}]," ",["$","span",null,{"className":"token function","children":"basic_alloc_uniq"}],["$","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 punctuation","children":"{"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"int"}]," retried ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token number","children":"0"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":["retry",["$","span",null,{"className":"token operator","children":":"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"pthread_mutex_lock"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"policiesSet1Flock",["$","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 keyword","children":"if"}]," ",["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token function","children":"list_empty"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"freeList",["$","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":"pthread_mutex_unlock"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"policiesSet1Flock",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"if"}]," ",["$","span",null,{"className":"token punctuation","children":"("}],"retried",["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token keyword","children":"return"}]," ",["$","span",null,{"className":"token number","children":"1"}],["$","span",null,{"className":"token punctuation","children":";"}]," ",["$","span",null,{"className":"token comment","children":"// Failed even after eviction"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":"\r\n"}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Out of memory, call the emergency fallback!"}],"\r\n"]}],"$L70","$L71","$L72","$L73","$L74","$L75","$L76"]}]}]}]]}] 31:["$","h2",null,{"id":"demonstration-testing-the-eviction-policy","children":[["$","$L1c",null,{"href":"#demonstration-testing-the-eviction-policy","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Demonstration: Testing the Eviction Policy"]}] 32:["$","p",null,{"children":"Let's see the eviction policy in action by running a system with limited memory and high memory pressure."}] 33:["$","h3",null,{"id":"running-the-instanceusm-with-eviction-configuration","children":[["$","$L1c",null,{"href":"#running-the-instanceusm-with-eviction-configuration","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Running the InstanceUSM with Eviction Configuration"]}] 34:["$","p",null,{"children":["$","strong",null,{"children":"Image 1 - InstanceUSM avec configuration d'éviction :"}]}] 35:["$","p",null,{"children":[["$","$L77",null,{"src":"/images/Eviction/1.png","alt":"Memory Pressure Test","width":800,"height":350,"quality":40}],"\r\n",["$","em",null,{"children":"Launch of project-2 with eviction configuration"}]]}] 36:["$","h3",null,{"id":"installing-memory-stress-testing-tools","children":[["$","$L1c",null,{"href":"#installing-memory-stress-testing-tools","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Installing Memory Stress Testing Tools"]}] 37:["$","p",null,{"children":"Before testing the eviction policy, we need to install appropriate stress testing tools that will consume memory beyond our configured limits."}] 38:["$","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":"Automatic Installation of stress-ng and Dependencies"}]]}],["$","video",null,{"src":"/images/Eviction/Video2.webm","poster":"$undefined","controls":true,"muted":true,"autoPlay":false,"loop":false,"playsInline":true,"className":"w-full h-auto bg-black"}]]}] 39:["$","h3",null,{"id":"starting-the-usm-manager","children":[["$","$L1c",null,{"href":"#starting-the-usm-manager","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Starting the USM Manager"]}] 3a:["$","p",null,{"children":[["$","$L77",null,{"src":"/images/Eviction/Term1.png","alt":"Monitoring Terminal 1","width":800,"height":350,"quality":40}],"\r\n",["$","em",null,{"children":"Start of usmWaker monitoring system"}]]}] 3b:["$","h3",null,{"id":"monitoring-the-system-before-stress-test","children":[["$","$L1c",null,{"href":"#monitoring-the-system-before-stress-test","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Monitoring the System Before Stress Test"]}] 3c:["$","p",null,{"children":[["$","$L77",null,{"src":"/images/Eviction/Term2.png","alt":"Monitoring Terminal 2","width":800,"height":350,"quality":40}],"\r\n",["$","em",null,{"children":"USM eviction test system monitoring"}]]}] 3d:["$","h3",null,{"id":"executing-the-memory-stress-test","children":[["$","$L1c",null,{"href":"#executing-the-memory-stress-test","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Executing the Memory Stress Test"]}] 3e:["$","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":["$","$L45",null,{"content":"sudo LD_PRELOAD=./Userspace/usmTagger.so stress-ng --vm 1 --vm-bytes 1G --timeout 15s\n"}]}],["$","div",null,{"className":"relative","children":["$","pre",null,{"className":"language-bash","children":["$","code",null,{"className":"language-bash code-highlight","children":["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token function","children":"sudo"}]," ",["$","span",null,{"className":"token assign-left variable","children":"LD_PRELOAD"}],["$","span",null,{"className":"token operator","children":"="}],"./Userspace/usmTagger.so stress-ng ",["$","span",null,{"className":"token parameter variable","children":"--vm"}]," ",["$","span",null,{"className":"token number","children":"1"}]," --vm-bytes 1G ",["$","span",null,{"className":"token parameter variable","children":"--timeout"}]," 15s\n"]}]}]}]}]]}] 3f:["$","p",null,{"children":[["$","$L77",null,{"src":"/images/Eviction/last.png","alt":"Monitoring Terminal 2","width":800,"height":350,"quality":40}],"\r\n",["$","em",null,{"children":"Memory Stress Test"}]]}] 40:["$","p",null,{"children":"When stress-ng attempts to allocate 1GB of memory (much more than our 256MB limit), the eviction policy will automatically activate, swapping out older pages to make room for new allocations."}] 41:["$","p",null,{"children":"Now, your memory manager is no longer brittle. When faced with memory pressure, it will automatically try to free space by swapping out the oldest pages, making the system much more robust."}] 42:["$","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/first-eviction-policy/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"]}]}] 43:["$","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-allocation-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 Allocation 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/advanced-policies","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":"Advanced Policies"}]]}]}]]}] b:{"metadata":[["$","title","0",{"children":"Your First Eviction Policy"}],["$","meta","1",{"name":"description","content":"Learn how to handle memory pressure by implementing a simple FIFO eviction policy that swaps pages to disk."}],["$","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"}],["$","$L78","19",{}]],"error":null,"digest":"$undefined"} 10:"$b:metadata" 47:["$","span",null,{"className":"token class-name","children":"to_swap"}] 48:["$","span",null,{"className":"token operator","children":"*"}] 49:["$","span",null,{"className":"token punctuation","children":")"}] 4a:["$","span",null,{"className":"token function","children":"malloc"}] 4b:["$","span",null,{"className":"token punctuation","children":"("}] 4c:["$","span",null,{"className":"token keyword","children":"sizeof"}] 4d:["$","span",null,{"className":"token punctuation","children":"("}] 4e:["$","span",null,{"className":"token keyword","children":"struct"}] 4f:["$","span",null,{"className":"token class-name","children":"to_swap"}] 50:["$","span",null,{"className":"token punctuation","children":")"}] 51:["$","span",null,{"className":"token punctuation","children":")"}] 52:["$","span",null,{"className":"token punctuation","children":";"}] 53:["$","span",null,{"className":"code-line","children":"\r\n"}] 54:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Lock the used list to safely select a victim."}],"\r\n"]}] 55:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"pthread_mutex_lock"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"policiesSet1Ulock",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 56:["$","span",null,{"className":"code-line","children":"\r\n"}] 57:["$","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":"list_empty"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"usedList",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token punctuation","children":"{"}],"\r\n"]}] 58:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"pthread_mutex_unlock"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"policiesSet1Ulock",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 59:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"printf"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token string","children":"\"[devPol/Mayday/Mayday] Nuthin' to evict here!\\n\""}],["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 5a:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"free"}],["$","span",null,{"className":"token punctuation","children":"("}],"toSwapNode",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 5b:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"return"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 5c:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token punctuation","children":"}"}],"\r\n"]}] 5d:["$","span",null,{"className":"code-line","children":"\r\n"}] 5e:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// FIFO Logic: Select the oldest page, which is the first one in the used list."}],"\r\n"]}] 5f:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"optEludeList"}]," ",["$","span",null,{"className":"token operator","children":"*"}],"victimPageNode ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token function","children":"list_first_entry"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"usedList",["$","span",null,{"className":"token punctuation","children":","}]," ",["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"optEludeList"}],["$","span",null,{"className":"token punctuation","children":","}]," iulist",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 60:["$","span",null,{"className":"code-line","children":"\r\n"}] 61:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// \"Hold\" the page by removing it from the used list."}],"\r\n"]}] 62:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"list_del"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"victimPageNode",["$","span",null,{"className":"token operator","children":"->"}],"iulist",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 63:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"pthread_mutex_unlock"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"&"}],"policiesSet1Ulock",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 64:["$","span",null,{"className":"code-line","children":"\r\n"}] 65:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Populate the swap node with details from the victim page."}],"\r\n"]}] 66:["$","span",null,{"className":"code-line","children":[" toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"page ",["$","span",null,{"className":"token operator","children":"="}]," victimPageNode",["$","span",null,{"className":"token operator","children":"->"}],"usmPage",["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 67:["$","span",null,{"className":"code-line","children":[" toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"proc ",["$","span",null,{"className":"token operator","children":"="}]," victimPageNode",["$","span",null,{"className":"token operator","children":"->"}],"usmPage",["$","span",null,{"className":"token operator","children":"->"}],"process",["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 68:["$","span",null,{"className":"code-line","children":[" toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"swapped_address ",["$","span",null,{"className":"token operator","children":"="}]," victimPageNode",["$","span",null,{"className":"token operator","children":"->"}],"usmPage",["$","span",null,{"className":"token operator","children":"->"}],"virtualAddress",["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 69:["$","span",null,{"className":"code-line","children":[" toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"swapDevice ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token function","children":"choose_swap_device"}],["$","span",null,{"className":"token punctuation","children":"("}],"toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"proc",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 6a:["$","span",null,{"className":"code-line","children":[" toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"snode ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token function","children":"list_entry"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token function","children":"getSwapNode"}],["$","span",null,{"className":"token punctuation","children":"("}],"toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"swapDevice",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":","}]," ",["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"swap_node"}],["$","span",null,{"className":"token punctuation","children":","}]," iulist",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 6b:["$","span",null,{"className":"code-line","children":[" toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"snode",["$","span",null,{"className":"token operator","children":"->"}],"toSwapHolder ",["$","span",null,{"className":"token operator","children":"="}]," toSwapNode",["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 6c:["$","span",null,{"className":"code-line","children":"\r\n"}] 6d:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Call the core swap_out function to write to disk and free the page."}],"\r\n"]}] 6e:["$","span",null,{"className":"code-line","children":[" toSwapNode",["$","span",null,{"className":"token operator","children":"->"}],"swapDevice",["$","span",null,{"className":"token operator","children":"->"}],"swap_dev_ops",["$","span",null,{"className":"token punctuation","children":"."}],["$","span",null,{"className":"token function","children":"swap_out"}],["$","span",null,{"className":"token punctuation","children":"("}],"toSwapNode",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 6f:["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token punctuation","children":"}"}],"\n"]}] 70:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"usm_evict_fallback"}],["$","span",null,{"className":"token punctuation","children":"("}],"event",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 71:["$","span",null,{"className":"code-line","children":[" retried ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token number","children":"1"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}] 72:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"goto"}]," retry",["$","span",null,{"className":"token punctuation","children":";"}]," ",["$","span",null,{"className":"token comment","children":"// Try the allocation again."}],"\r\n"]}] 73:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token punctuation","children":"}"}],"\r\n"]}] 74:["$","span",null,{"className":"code-line","children":"\r\n"}] 75:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// ... rest of the allocation logic ..."}],"\r\n"]}] 76:["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token punctuation","children":"}"}],"\n"]}] 79: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"] 44:["$","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":["$","$L79",null,{"data":[{"level":3,"text":"The Eviction Mechanism: `usm_evict_fallback`","href":"#the-eviction-mechanism-usmevictfallback"},{"level":3,"text":"Step 1: The Swap-Out Logic","href":"#step-1-the-swap-out-logic"},{"level":3,"text":"Step 2: Implementing the Fallback Handler","href":"#step-2-implementing-the-fallback-handler"},{"level":3,"text":"Step 3: Registering the Fallback Handler","href":"#step-3-registering-the-fallback-handler"},{"level":3,"text":"Step 4: Integrating with the Allocator","href":"#step-4-integrating-with-the-allocator"},{"level":2,"text":"Demonstration: Testing the Eviction Policy","href":"#demonstration-testing-the-eviction-policy"},{"level":3,"text":"Running the InstanceUSM with Eviction Configuration","href":"#running-the-instanceusm-with-eviction-configuration"},{"level":3,"text":"Installing Memory Stress Testing Tools","href":"#installing-memory-stress-testing-tools"},{"level":3,"text":"Starting the USM Manager","href":"#starting-the-usm-manager"},{"level":3,"text":"Monitoring the System Before Stress Test","href":"#monitoring-the-system-before-stress-test"},{"level":3,"text":"Executing the Memory Stress Test","href":"#executing-the-memory-stress-test"}]}]}]]}]}]