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","PTEMagnet"],"i":false,"f":[[["",{"children":[["lang","en","d"],{"children":["docs",{"children":[["slug","guides/PTEMagnet","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/PTEMagnet","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[80622,[],"IconMark"]
b:{"metadata":[["$","title","0",{"children":"PTEMagnet as a USM Policy"}],["$","meta","1",{"name":"description","content":"Leveraging USM to reduce TLB misses in virtualized environments by enforcing physical address contiguity."}],["$","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"}],["$","$L28","19",{}]],"error":null,"digest":"$undefined"}
10:"$b:metadata"
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":"PTEMagnet as a USM Policy"}],["$","p",null,{"className":"-mt-4 text-muted-foreground text-[16.5px]","children":"Leveraging USM to reduce TLB misses in virtualized environments by enforcing physical address contiguity."}],["$","div",null,{"children":[["$","p",null,{"children":["When applications run within a Virtual Machine (VM), they often experience performance degradation due to increased Translation Lookaside Buffer (TLB) misses. USM addresses this by implementing ",["$","strong",null,{"children":"PTEMagnet"}]," logic as a userspace allocation policy."]}],"\n",["$","h3",null,{"id":"the-problem-non-contiguity-in-vms","children":[["$","$L1c",null,{"href":"#the-problem-non-contiguity-in-vms","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"The Problem: Non-Contiguity in VMs"]}],"\n",["$","p",null,{"children":"In a virtualized environment, the Operating System allocates Guest Physical Addresses (GPAs) to back the application's Guest Virtual Addresses (GVAs)."}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","strong",null,{"children":"The Issue:"}]," Even if the application requests contiguous virtual memory, the underlying GPAs allocated by the OS are often non-contiguous, especially when multiple processes are collocated and memory is fragmented."]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"The Consequence:"}]," The hardware cannot effectively use huge pages or contiguous block entries in the TLB, leading to frequent TLB misses and reduced performance."]}],"\n"]}],"\n",["$","h3",null,{"id":"the-solution-ptemagnet-policy","children":[["$","$L1c",null,{"href":"#the-solution-ptemagnet-policy","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"The Solution: PTEMagnet Policy"]}],"\n",["$","p",null,{"children":["We implemented the logic of ",["$","strong",null,{"children":"PTEMagnet"}]," as a specific USM allocation policy (",["$","code",null,{"children":"usm_alloc_policy_ops"}],")."]}],"\n",["$","p",null,{"children":"By trapping memory allocation events in userspace, USM allows the implementation of intelligent allocators that actively search for or reserve contiguous blocks of physical memory (GPAs) to back contiguous virtual address ranges."}],"\n",["$","h4",null,{"id":"implementation-context","children":[["$","$L1c",null,{"href":"#implementation-context","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Implementation Context"]}],"\n",["$","p",null,{"children":"The PTEMagnet implementation relies on the allocator's ability to track the last physical page allocated in order to attempt to serve the immediately adjacent physical page during the next request."}],"\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":"$L29"}],"$L2a"]}],"\n","$L2b","\n","$L2c","\n","$L2d","\n","$L2e","\n","$L2f"]}],"$L30","$L31"]}]}],"$L32"]}]
33: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"]
34:T5ab,/* PTEMagnet Policy - Core Logic */
// We maintain a pointer to the base of the page array for arithmetic
struct page *pagesArrayBase;
static struct page *last_allocated_page = NULL;
void pte_magnet_pick_pages(struct p_args_p *args) {
pthread_mutex_lock(&policiesSet1Flock);
struct page *chosen_page = NULL;
// 1. Magnet Strategy: Attempt physical contiguity
if (last_allocated_page != NULL) {
struct page *next_physical_target = last_allocated_page + 1;
// Check if the next page is within bounds and available
if (next_physical_target < (pagesArrayBase + totalPages) &&
is_page_free(next_physical_target)) {
chosen_page = next_physical_target;
}
}
// 2. Fallback: If contiguity fails, take the first available free page (BasicAlloc style)
if (!chosen_page) {
struct optEludeList *node = list_first_entry(&freeList, struct optEludeList, iulist);
chosen_page = node->page_ptr; // On utilise le pointeur vers struct page
}
// Update state
struct optEludeList *node_to_del = (struct optEludeList *)chosen_page->private;
list_del(&node_to_del->iulist);
last_allocated_page = chosen_page;
pthread_mutex_unlock(&policiesSet1Flock);
// Return the selected page to the USM engine
args->ret = 1;
args->l_ps = &(chosen_page->usedListPositionPointer->iulist);
}
29:["$","$L33",null,{"content":"$34"}]
2a:["$","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":"/* PTEMagnet Policy - Core Logic */"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":"\r\n"}],["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token comment","children":"// We maintain a pointer to the base of the page array for arithmetic"}],"\r\n"]}],["$","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":"*"}],"pagesArrayBase",["$","span",null,{"className":"token punctuation","children":";"}]," \r\n"]}],["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token keyword","children":"static"}]," ",["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"page"}]," ",["$","span",null,{"className":"token operator","children":"*"}],"last_allocated_page ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token constant","children":"NULL"}],["$","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":"void"}]," ",["$","span",null,{"className":"token function","children":"pte_magnet_pick_pages"}],["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"p_args_p"}]," ",["$","span",null,{"className":"token operator","children":"*"}],"args",["$","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_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":[" ",["$","span",null,{"className":"token keyword","children":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"page"}]," ",["$","span",null,{"className":"token operator","children":"*"}],"chosen_page ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token constant","children":"NULL"}],["$","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":"// 1. Magnet Strategy: Attempt physical contiguity"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"if"}]," ",["$","span",null,{"className":"token punctuation","children":"("}],"last_allocated_page ",["$","span",null,{"className":"token operator","children":"!="}]," ",["$","span",null,{"className":"token constant","children":"NULL"}],["$","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":"struct"}]," ",["$","span",null,{"className":"token class-name","children":"page"}]," ",["$","span",null,{"className":"token operator","children":"*"}],"next_physical_target ",["$","span",null,{"className":"token operator","children":"="}]," last_allocated_page ",["$","span",null,{"className":"token operator","children":"+"}]," ",["$","span",null,{"className":"token number","children":"1"}],["$","span",null,{"className":"token punctuation","children":";"}]," \r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Check if the next page is within bounds and available"}],"\r\n"]}],["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"if"}]," ","$L35","next_physical_target ","$L36"," ","$L37","pagesArrayBase ","$L38"," totalPages","$L39"," ","$L3a"," \r\n"]}],"$L3b","$L3c","$L3d","$L3e","$L3f","$L40","$L41","$L42","$L43","$L44","$L45","$L46","$L47","$L48","$L49","$L4a","$L4b","$L4c","$L4d","$L4e","$L4f","$L50"]}]}]}]
2b:["$","div",null,{"className":"border rounded-md px-5 pb-0.5 mt-5 mb-7 text-sm tracking-wide","children":[["$","p",null,{"className":"font-bold -mb-2.5","children":["Note",":"]}]," ",["$","p",null,{"children":"Evaluation Methodology: To validate this approach, the PTEMagnet policy was compared against a BasicAlloc policy. The BasicAlloc environment used a shuffled list of free pages to simulate the fragmentation typical of workload collocation."}]]}]
2c:["$","h4",null,{"id":"performance-validation","children":[["$","$L1c",null,{"href":"#performance-validation","aria-hidden":"true","tabIndex":"-1","children":["$","span",null,{"className":"icon icon-link"}],"target":"_blank","rel":"noopener noreferrer"}],"Performance Validation"]}]
2d:["$","p",null,{"children":"The implementation was tested against TLB-sensitive applications, including the NAS Parallel Benchmarks (CG.C, BT.C) and data stores like Redis. The results demonstrate significant performance gains, confirming that userspace management can effectively mitigate virtualization overhead."}]
2e:["$","div",null,{"className":"scrollable-table","children":["$","table",null,{"children":[["$","thead",null,{"children":["$","tr",null,{"children":[["$","th",null,{"children":"Application"}],["$","th",null,{"children":"Workload / Type"}],["$","th",null,{"children":"Improvement over BasicAlloc"}]]}]}],["$","tbody",null,{"children":[["$","tr",null,{"children":[["$","td",null,{"children":"memflt"}],["$","td",null,{"children":"Micro-benchmark"}],["$","td",null,{"children":"+30.21%"}]]}],["$","tr",null,{"children":[["$","td",null,{"children":"MATMUL"}],["$","td",null,{"children":"CPU/Memory Intensive"}],["$","td",null,{"children":"+20.93%"}]]}],["$","tr",null,{"children":[["$","td",null,{"children":"Redis"}],["$","td",null,{"children":"YCSB B (Read mostly)"}],["$","td",null,{"children":"+23.35%"}]]}],["$","tr",null,{"children":[["$","td",null,{"children":"Redis"}],["$","td",null,{"children":"YCSB A (Update heavy)"}],["$","td",null,{"children":"+4.07%"}]]}],["$","tr",null,{"children":[["$","td",null,{"children":"BT.C"}],["$","td",null,{"children":"NAS Parallel Benchmark"}],["$","td",null,{"children":"+4.66%"}]]}],["$","tr",null,{"children":[["$","td",null,{"children":"CG.C"}],["$","td",null,{"children":"NAS Parallel Benchmark"}],["$","td",null,{"children":"+1.65%"}]]}]]}]]}]}]
2f:["$","p",null,{"children":["These results indicate that applications with high memory access frequency (like ",["$","code",null,{"children":"memflt"}]," and ",["$","code",null,{"children":"MATMUL"}],") or specific access patterns (like Redis Read-mostly) benefit most substantially from the enforced contiguity provided by the PTEMagnet policy."]}]
30:["$","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/PTEMagnet/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"]}]}]
31:["$","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/Christine","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":"Coordinative Scheduling with Christine"}]]}]}],["$","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/tools/visualizer","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":"USM Visualizer"}]]}]}]]}]
35:["$","span",null,{"className":"token punctuation","children":"("}]
36:["$","span",null,{"className":"token operator","children":"<"}]
37:["$","span",null,{"className":"token punctuation","children":"("}]
38:["$","span",null,{"className":"token operator","children":"+"}]
39:["$","span",null,{"className":"token punctuation","children":")"}]
3a:["$","span",null,{"className":"token operator","children":"&&"}]
3b:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token function","children":"is_page_free"}],["$","span",null,{"className":"token punctuation","children":"("}],"next_physical_target",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token punctuation","children":"{"}],"\r\n"]}]
3c:["$","span",null,{"className":"code-line","children":[" chosen_page ",["$","span",null,{"className":"token operator","children":"="}]," next_physical_target",["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}]
3d:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token punctuation","children":"}"}],"\r\n"]}]
3e:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token punctuation","children":"}"}],"\r\n"]}]
3f:["$","span",null,{"className":"code-line","children":"\r\n"}]
40:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// 2. Fallback: If contiguity fails, take the first available free page (BasicAlloc style)"}],"\r\n"]}]
41:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token keyword","children":"if"}]," ",["$","span",null,{"className":"token punctuation","children":"("}],["$","span",null,{"className":"token operator","children":"!"}],"chosen_page",["$","span",null,{"className":"token punctuation","children":")"}]," ",["$","span",null,{"className":"token punctuation","children":"{"}],"\r\n"]}]
42:["$","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":"*"}],"node ",["$","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":"&"}],"freeList",["$","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"]}]
43:["$","span",null,{"className":"code-line","children":[" chosen_page ",["$","span",null,{"className":"token operator","children":"="}]," node",["$","span",null,{"className":"token operator","children":"->"}],"page_ptr",["$","span",null,{"className":"token punctuation","children":";"}]," ",["$","span",null,{"className":"token comment","children":"// On utilise le pointeur vers struct page"}],"\r\n"]}]
44:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token punctuation","children":"}"}],"\r\n"]}]
45:["$","span",null,{"className":"code-line","children":"\r\n"}]
46:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Update state"}],"\r\n"]}]
47:["$","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":"*"}],"node_to_del ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","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 operator","children":"*"}],["$","span",null,{"className":"token punctuation","children":")"}],"chosen_page",["$","span",null,{"className":"token operator","children":"->"}],"private",["$","span",null,{"className":"token punctuation","children":";"}]," \r\n"]}]
48:["$","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":"&"}],"node_to_del",["$","span",null,{"className":"token operator","children":"->"}],"iulist",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}]
49:["$","span",null,{"className":"code-line","children":" \r\n"}]
4a:["$","span",null,{"className":"code-line","children":[" last_allocated_page ",["$","span",null,{"className":"token operator","children":"="}]," chosen_page",["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}]
4b:["$","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"]}]
4c:["$","span",null,{"className":"code-line","children":" \r\n"}]
4d:["$","span",null,{"className":"code-line","children":[" ",["$","span",null,{"className":"token comment","children":"// Return the selected page to the USM engine"}],"\r\n"]}]
4e:["$","span",null,{"className":"code-line","children":[" args",["$","span",null,{"className":"token operator","children":"->"}],"ret ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token number","children":"1"}],["$","span",null,{"className":"token punctuation","children":";"}]," \r\n"]}]
4f:["$","span",null,{"className":"code-line","children":[" args",["$","span",null,{"className":"token operator","children":"->"}],"l_ps ",["$","span",null,{"className":"token operator","children":"="}]," ",["$","span",null,{"className":"token operator","children":"&"}],["$","span",null,{"className":"token punctuation","children":"("}],"chosen_page",["$","span",null,{"className":"token operator","children":"->"}],"usedListPositionPointer",["$","span",null,{"className":"token operator","children":"->"}],"iulist",["$","span",null,{"className":"token punctuation","children":")"}],["$","span",null,{"className":"token punctuation","children":";"}],"\r\n"]}]
50:["$","span",null,{"className":"code-line","children":[["$","span",null,{"className":"token punctuation","children":"}"}],"\n"]}]
51: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"]
32:["$","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":["$","$L51",null,{"data":[{"level":3,"text":"The Problem: Non-Contiguity in VMs","href":"#the-problem-non-contiguity-in-vms"},{"level":3,"text":"The Solution: PTEMagnet Policy","href":"#the-solution-ptemagnet-policy"},{"level":4,"text":"Implementation Context","href":"#implementation-context"},{"level":4,"text":"Performance Validation","href":"#performance-validation"}]}]}]]}]}]