diff --git a/docs/EuroSys/Paper/diagram/drawing.pdf b/docs/EuroSys/Paper/diagram/drawing.pdf new file mode 100644 index 0000000..af096e6 Binary files /dev/null and b/docs/EuroSys/Paper/diagram/drawing.pdf differ diff --git a/docs/EuroSys/Paper/jemalloc.org b/docs/EuroSys/Paper/jemalloc.org index 57ef4c9..0218713 100644 --- a/docs/EuroSys/Paper/jemalloc.org +++ b/docs/EuroSys/Paper/jemalloc.org @@ -1,4 +1,6 @@ * Malloc + +Not needed: The provided pseudocode outlines a modified implementation of jemalloc’s memory mapping routines, adapted to work with a custom malloc(sz) allocator. Instead of relying on traditional diff --git a/docs/EuroSys/Paper/paper.aux b/docs/EuroSys/Paper/paper.aux index efdcf0e..610fdba 100644 --- a/docs/EuroSys/Paper/paper.aux +++ b/docs/EuroSys/Paper/paper.aux @@ -17,112 +17,16 @@ \citation{Shadow_superpages} \citation{DirectSegment} \citation{karakostas_redundant_2015} -\citation{woodruff_cheri_2019} \citation{chen_flexpointer_2023} -\citation{karakostas_redundant_2015} -\citation{woodruff_cheri_2019} \@writefile{toc}{\contentsline {section}{\numberline {2}Related work}{2}{section.2}\protected@file@percent } \newlabel{sec:org0e192da}{{2}{2}{Related work}{section.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Huge Pages}{2}{subsection.2.1}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Direct Segment}{2}{subsection.2.2}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Redundant Memory Mapping (RMM)}{2}{subsection.2.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}CHERI}{2}{subsection.2.4}\protected@file@percent } -\newlabel{sec:orgbf2eaac}{{2.4}{2}{CHERI}{subsection.2.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}CHERI CC}{2}{subsection.2.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}FlexPointer}{2}{subsection.2.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}CHERI}{2}{subsection.2.5}\protected@file@percent } +\newlabel{sec:orgbf2eaac}{{2.5}{2}{CHERI}{subsection.2.5}{}} \citation{woodruff_cheri_2019} +\citation{chen_flexpointer_2023} +\citation{karakostas_redundant_2015} \citation{woodruff_cheri_2019} -\citation{woodruff_cheri_2019} -\@writefile{toc}{\contentsline {section}{\numberline {3}Fat Address Translations}{3}{section.3}\protected@file@percent } -\newlabel{sec:FatPointerTranslations}{{3}{3}{Fat Address Translations}{section.3}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces High overview architecture}}{3}{figure.caption.3}\protected@file@percent } -\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} -\newlabel{fig:HighOverviewArchitecture}{{1}{3}{High overview architecture}{figure.caption.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Encoding Ranges as Bounds to the Pointer}{3}{subsection.3.1}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {4}128 bit compressed bounds}{3}{section.4}\protected@file@percent } -\newlabel{sec:128bitCompressedBounds}{{4}{3}{128 bit compressed bounds}{section.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{3}{subsection.4.1}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5}Memory allocator design}{3}{section.5}\protected@file@percent } -\newlabel{sec:MemoryAllocator}{{5}{3}{Memory allocator design}{section.5}{}} -\citation{jemalloc} -\citation{cheribsd} -\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Malloc implementation}}{4}{algorithm.1}\protected@file@percent } -\newlabel{alg:malloc}{{1}{4}{Malloc implementation}{algorithm.1}{}} -\@writefile{loa}{\contentsline {algorithm}{\numberline {2}{\ignorespaces Free implementation}}{4}{algorithm.2}\protected@file@percent } -\newlabel{alg:free}{{2}{4}{Free implementation}{algorithm.2}{}} -\@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces Init alloc function to create a initial 1 GB huge page}}{4}{algorithm.3}\protected@file@percent } -\newlabel{alg:initAlloc}{{3}{4}{Init alloc function to create a initial 1 GB huge page}{algorithm.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6}Embedding FAT allocator inside Jemalloc}{4}{section.6}\protected@file@percent } -\@writefile{loa}{\contentsline {algorithm}{\numberline {4}{\ignorespaces Modified Jemalloc Memory Mapping Routines}}{4}{algorithm.4}\protected@file@percent } -\newlabel{alg:JemallocMalloc}{{4}{4}{Modified Jemalloc Memory Mapping Routines}{algorithm.4}{}} -\citation{Benchmark} -\citation{Morello} -\citation{BenchmarkABI} -\citation{PerformanceCounter} -\citation{singh1993} -\citation{holt1995} -\newlabel{alg:JemallocFree}{{\caption@xref {alg:JemallocFree}{ on input line 827}}{5}{Embedding FAT allocator inside Jemalloc}{algorithm.4}{}} -\@writefile{loa}{\contentsline {algorithm}{\numberline {5}{\ignorespaces os\_pages\_unmap}}{5}{algorithm.5}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {7}Evaluation}{5}{section.7}\protected@file@percent } -\newlabel{sec:Evaluation}{{7}{5}{Evaluation}{section.7}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Experiment setup}{5}{subsection.7.1}\protected@file@percent } -\newlabel{sec:Experiment}{{7.1}{5}{Experiment setup}{subsection.7.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Benchmarks}{5}{subsection.7.2}\protected@file@percent } -\newlabel{sec:Micro}{{7.2.1}{5}{Micro benchmark}{subsubsection.7.2.1}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Micro benchmark}{5}{subsubsection.7.2.1}\protected@file@percent } -\newlabel{sec:Macro}{{7.2.2}{5}{Macro benchmark}{subsubsection.7.2.2}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.2}Macro benchmark}{5}{subsubsection.7.2.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Results}{5}{subsection.7.3}\protected@file@percent } -\newlabel{sec:Results}{{7.3}{5}{Results}{subsection.7.3}{}} -\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces ARM performance counters}}{6}{table.caption.4}\protected@file@percent } -\newlabel{tab:org246a883}{{1}{6}{ARM performance counters}{table.caption.4}{}} -\newlabel{table:ARMPerf}{{1}{6}{ARM performance counters}{table.caption.4}{}} -\newlabel{fig:dtlb-walk}{{2a}{7}{DTLB Walks}{figure.caption.5}{}} -\newlabel{sub@fig:dtlb-walk}{{a}{7}{DTLB Walks}{figure.caption.5}{}} -\newlabel{fig:l1tlb-reads}{{2b}{7}{L1 TLB Reads}{figure.caption.5}{}} -\newlabel{sub@fig:l1tlb-reads}{{b}{7}{L1 TLB Reads}{figure.caption.5}{}} -\newlabel{fig:l1tlb-refill}{{2c}{7}{L1 TLB Refill}{figure.caption.5}{}} -\newlabel{sub@fig:l1tlb-refill}{{c}{7}{L1 TLB Refill}{figure.caption.5}{}} -\newlabel{fig:l2tlb-reads}{{2d}{7}{L2 TLB Reads}{figure.caption.5}{}} -\newlabel{sub@fig:l2tlb-reads}{{d}{7}{L2 TLB Reads}{figure.caption.5}{}} -\newlabel{fig:ll-cache-rd}{{2e}{7}{LL Cache Reads}{figure.caption.5}{}} -\newlabel{sub@fig:ll-cache-rd}{{e}{7}{LL Cache Reads}{figure.caption.5}{}} -\newlabel{fig:wallclock}{{2f}{7}{Wall Clock Time}{figure.caption.5}{}} -\newlabel{sub@fig:wallclock}{{f}{7}{Wall Clock Time}{figure.caption.5}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Benchmarks comparing the percentage difference between FAT.}}{7}{figure.caption.5}\protected@file@percent } -\newlabel{fig:benchmarks-group}{{2}{7}{Benchmarks comparing the percentage difference between FAT}{figure.caption.5}{}} -\bibstyle{unsrtnat} -\bibdata{paperReferences} -\bibcite{TLBHierarchy}{{1}{2013}{{Lustig et~al.}}{{Lustig, Bhattacharjee, and Martonosi}}} -\bibcite{mittal_survey_2017}{{2}{}{{Mittal}}{{}}} -\bibcite{panwar_hawkeye_2019}{{3}{}{{Panwar et~al.}}{{Panwar, Bansal, and Gopinath}}} -\bibcite{woodruff_cheri_2014}{{4}{}{{Woodruff et~al.}}{{Woodruff, Watson, Chisnall, Moore, Anderson, Davis, Laurie, Neumann, Norton, and Roe}}} -\bibcite{woodruff_cheri_2019}{{5}{}{{Woodruff et~al.}}{{Woodruff, Joannou, Xia, Fox, Norton, Chisnall, Davis, Gudka, Filardo, Markettos, Roe, Neumann, Watson, and Moore}}} -\bibcite{TLBReach}{{6}{2014}{{Pham et~al.}}{{Pham, Bhattacharjee, Eckert, and Loh}}} -\bibcite{THP}{{7}{2003}{{Navarro et~al.}}{{Navarro, Iyer, Druschel, and Cox}}} -\bibcite{IntelItanium}{{8}{2003}{{Cornea et~al.}}{{Cornea, Harrison, and Tang}}} -\bibcite{Shadow_superpages}{{9}{2001}{{Park and Park}}{{}}} -\bibcite{DirectSegment}{{10}{2013}{{Basu et~al.}}{{Basu, Gandhi, Chang, Hill, and Swift}}} -\bibcite{karakostas_redundant_2015}{{11}{}{{Karakostas et~al.}}{{Karakostas, Gandhi, Ayar, Cristal, Hill, {McKinley}, Nemirovsky, Swift, and Ünsal}}} -\bibcite{chen_flexpointer_2023}{{12}{2023}{{Chen et~al.}}{{Chen, Tong, Yang, Yi, and Cheng}}} -\@writefile{toc}{\contentsline {subsection}{\numberline {7.4}Analysis}{8}{subsection.7.4}\protected@file@percent } -\newlabel{sec:Analysis}{{7.4}{8}{Analysis}{subsection.7.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {8}Conclusion}{8}{section.8}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{References}{8}{section*.7}\protected@file@percent } -\bibcite{jemalloc}{{13}{2006}{{Evans}}{{}}} -\bibcite{cheribsd}{{14}{}{{che}}{{}}} -\bibcite{Benchmark}{{15}{}{{Ben}}{{}}} -\bibcite{Morello}{{16}{}{{Mor}}{{}}} -\bibcite{BenchmarkABI}{{17}{2023}{{Watson et~al.}}{{Watson, Clarke, Sewell, Woodruff, Moore, Barnes, Grisenthwaite, Stacer, Baranga, and Richardson}}} -\bibcite{PerformanceCounter}{{18}{}{{Per}}{{}}} -\bibcite{singh1993}{{19}{1993}{{Singh}}{{}}} -\bibcite{holt1995}{{20}{1995}{{Holt and Singh}}{{}}} -\newlabel{tocindent-1}{0pt} -\newlabel{tocindent0}{0pt} -\newlabel{tocindent1}{4.185pt} -\newlabel{tocindent2}{10.34999pt} -\newlabel{tocindent3}{18.198pt} -\newlabel{tocindent4}{0pt} -\newlabel{tocindent5}{0pt} -\newlabel{TotPages}{{9}{9}{}{page.9}{}} -\gdef\svg@ink@ver@settings{{\m@ne }{inkscape}{\m@ne }} -\gdef \@abspage@last{9} diff --git a/docs/EuroSys/Paper/paper.bbl b/docs/EuroSys/Paper/paper.bbl index 57e2892..b9784f0 100644 --- a/docs/EuroSys/Paper/paper.bbl +++ b/docs/EuroSys/Paper/paper.bbl @@ -1,4 +1,4 @@ -\begin{thebibliography}{20} +\begin{thebibliography}{21} \providecommand{\natexlab}[1]{#1} \providecommand{\url}[1]{\texttt{#1}} \expandafter\ifx\csname urlstyle\endcsname\relax @@ -127,6 +127,10 @@ Dongwei Chen, Dong Tong, Chun Yang, Jiangfang Yi, and Xu~Cheng. \newblock \doi{10.1145/3579854}. \newblock URL \url{https://doi.org/10.1145/3579854}. +\bibitem[Evans()]{evans_scalable_nodate} +Jason Evans. +\newblock A {Scalable} {Concurrent} malloc(3) {Implementation} for {FreeBSD}. + \bibitem[Evans(2006)]{jemalloc} Jason Evans. \newblock A scalable concurrent malloc (3) implementation for freebsd. diff --git a/docs/EuroSys/Paper/paper.blg b/docs/EuroSys/Paper/paper.blg index cb405c6..3cdee17 100644 --- a/docs/EuroSys/Paper/paper.blg +++ b/docs/EuroSys/Paper/paper.blg @@ -22,49 +22,52 @@ Warning--empty journal in woodruff_cheri_2019 Warning--empty year in woodruff_cheri_2019 Warning--empty year in karakostas_redundant_2015 Warning--empty year in karakostas_redundant_2015 +Warning--empty journal in evans_scalable_nodate +Warning--empty year in evans_scalable_nodate +Warning--empty year in evans_scalable_nodate Warning--empty year in cheribsd Warning--empty year in Benchmark Warning--empty year in Morello Warning--empty year in PerformanceCounter -You've used 20 entries, +You've used 21 entries, 2481 wiz_defined-function locations, - 700 strings with 9907 characters, -and the built_in function-call counts, 8624 in all, are: -= -- 721 -> -- 504 -< -- 10 -+ -- 195 -- -- 154 -* -- 742 -:= -- 1373 -add.period$ -- 95 -call.type$ -- 20 -change.case$ -- 39 -chr.to.int$ -- 19 -cite$ -- 39 -duplicate$ -- 406 -empty$ -- 728 -format.name$ -- 174 -if$ -- 1835 + 702 strings with 9994 characters, +and the built_in function-call counts, 8880 in all, are: += -- 740 +> -- 511 +< -- 11 ++ -- 199 +- -- 156 +* -- 757 +:= -- 1413 +add.period$ -- 97 +call.type$ -- 21 +change.case$ -- 41 +chr.to.int$ -- 20 +cite$ -- 43 +duplicate$ -- 424 +empty$ -- 756 +format.name$ -- 177 +if$ -- 1887 int.to.chr$ -- 2 -int.to.str$ -- 21 -missing$ -- 14 -newline$ -- 140 -num.names$ -- 48 -pop$ -- 172 +int.to.str$ -- 22 +missing$ -- 15 +newline$ -- 144 +num.names$ -- 51 +pop$ -- 186 preamble$ -- 1 -purify$ -- 20 +purify$ -- 21 quote$ -- 0 -skip$ -- 250 +skip$ -- 259 stack$ -- 0 -substring$ -- 283 -swap$ -- 89 +substring$ -- 285 +swap$ -- 90 text.length$ -- 5 text.prefix$ -- 0 top$ -- 0 -type$ -- 140 -warning$ -- 15 -while$ -- 49 +type$ -- 147 +warning$ -- 18 +while$ -- 51 width$ -- 0 -write$ -- 321 -(There were 19 warnings) +write$ -- 330 +(There were 22 warnings) diff --git a/docs/EuroSys/Paper/paper.fdb_latexmk b/docs/EuroSys/Paper/paper.fdb_latexmk index b86f574..f03030f 100644 --- a/docs/EuroSys/Paper/paper.fdb_latexmk +++ b/docs/EuroSys/Paper/paper.fdb_latexmk @@ -1,13 +1,13 @@ # Fdb version 4 -["bibtex paper"] 1748542391.49982 "paper.aux" "paper.bbl" "paper" 1748542393.50586 0 - "./paperReferences.bib" 1746971882.78313 50975 d23cf0e29e30a59879e0a43f7bd63014 "" +["bibtex paper"] 1748842670.01173 "paper.aux" "paper.bbl" "paper" 1748842671.97694 0 + "./paperReferences.bib" 1748637417.99093 52057 3d2940a76dd1a0b9b759a973d6b9bd98 "" "/usr/local/texlive/2025/texmf-dist/bibtex/bst/natbib/unsrtnat.bst" 1233624470 24550 a41a6405f4de768c43e871d9fbce2bc8 "" - "paper.aux" 1748542393.18687 9430 f2d638c91d61664cb189252cfa34b0aa "pdflatex" + "paper.aux" 1748842671.6599 9959 d12f00f8edff5ca070a8389be00e146d "pdflatex" (generated) "paper.bbl" "paper.blg" (rewritten before read) -["pdflatex"] 1748542391.64154 "paper.tex" "paper.pdf" "paper" 1748542393.506 0 +["pdflatex"] 1748842670.10231 "paper.tex" "paper.pdf" "paper" 1748842671.97708 0 "/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc" 1558214095 7693 0f2dce6d313c82989ec3a67fc24df2a0 "" "/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc" 1490131464 2921 8ca0eb0831f9bc5da080d3697cfe67bf "" "/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_76gpa5.enc" 1490131464 2933 9ad527ce78d7c5fa0a642dead095f172 "" @@ -254,10 +254,10 @@ "diagram/benchmarks-group/bargraph-large-ll-cache-rd.png" 1747839169.49301 52855 22a83d7bc1ca7dfa1c47f31936824ff6 "" "diagram/benchmarks-group/bargraph-large-wallclock.png" 1747839751.63939 55378 1da56901d20a39a645beca6272b36eaf "" "diagram/drawing_png.png" 1748297803.36134 22858 0c9dbeaa2b2a2c8d4588aeb499d141da "" - "paper.aux" 1748542393.18687 9430 f2d638c91d61664cb189252cfa34b0aa "pdflatex" - "paper.bbl" 1748542391.63845 8420 47d3ab73b727b7165b20d774bb45ad1a "bibtex paper" - "paper.out" 1748542393.18782 3482 dfb5cd2e0b64721769d9bbb90a3777d7 "pdflatex" - "paper.tex" 1748537227.43593 98923 e8aacff771f33802f685e767cf224fa6 "" + "paper.aux" 1748842671.6599 9959 d12f00f8edff5ca070a8389be00e146d "pdflatex" + "paper.bbl" 1748842670.09843 8553 1083156a0ae40396808b10750dbef288 "bibtex paper" + "paper.out" 1748842671.6608 4043 e0a4be03bd5f2bf273294833454e3065 "pdflatex" + "paper.tex" 1748842619.98325 104798 e8075114700ae6dcab70ce3b2e43c20d "" (generated) "paper.aux" "paper.log" diff --git a/docs/EuroSys/Paper/paper.fls b/docs/EuroSys/Paper/paper.fls index e8e0843..82ac3a1 100644 --- a/docs/EuroSys/Paper/paper.fls +++ b/docs/EuroSys/Paper/paper.fls @@ -549,21 +549,24 @@ INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txsys.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txex-bar.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTB-tlf-t1.vf INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTB-tlf-t1--base.tfm +INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-ts1.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinBiolinumT-tlf-t1.vf INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1--base.tfm +INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineT-tlf-ts1.vf +INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-ts1--base.tfm INPUT ./diagram/drawing_png.png INPUT ./diagram/drawing_png.png INPUT ./diagram/drawing_png.png INPUT ./diagram/drawing_png.png INPUT ./diagram/drawing_png.png INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1.tfm +INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTI-tlf-t1.vf +INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1--base.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-sc-t1.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-t1.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-t1.tfm -INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTI-tlf-t1.vf -INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1--base.tfm INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd @@ -584,38 +587,38 @@ INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/LibertineMathRM. INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaSTbb.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaX.tfm INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumTI-tlf-t1.tfm -INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png -INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png -INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png -INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png -INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png -INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png -INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png -INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png -INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png -INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png -INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png -INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png -INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png -INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png -INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png -INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png -INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinBiolinumTI-tlf-t1.vf INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumTI-tlf-t1--base.tfm +INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png +INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png +INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png +INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png +INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png +INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png +INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png +INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png +INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png +INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png +INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png +INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png +INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png +INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png +INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png +INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png +INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png INPUT ./paper.bbl INPUT ./paper.bbl INPUT paper.bbl diff --git a/docs/EuroSys/Paper/paper.log b/docs/EuroSys/Paper/paper.log index 5f36b83..e3f3346 100644 --- a/docs/EuroSys/Paper/paper.log +++ b/docs/EuroSys/Paper/paper.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 29 MAY 2025 19:13 +This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 3 JUN 2025 01:04 entering extended mode \write18 enabled. %&-line parsing enabled. @@ -1422,61 +1422,68 @@ LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be LaTeX Font Info: Font shape `U/ntxexa/m/n' will be (Font) scaled to size 9.0pt on input line 376. +LaTeX Warning: Reference `sec:JemallocFATAllocator' on page 1 undefined on inpu +t line 388. + + +Underfull \vbox (badness 10000) has occurred while \output is active [] + + LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.0pt on input line 393. +(Font) scaled to size 6.0pt on input line 389. LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 36.135pt on input line 393. -LaTeX Font Info: Calculating math sizes for size <36.135> on input line 393. +(Font) scaled to size 36.135pt on input line 389. +LaTeX Font Info: Calculating math sizes for size <36.135> on input line 389. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 36.135pt on input line 393. +(Font) scaled to size 36.135pt on input line 389. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 26.37839pt on input line 393. +(Font) scaled to size 26.37839pt on input line 389. LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 19.87434pt on input line 393. +(Font) scaled to size 19.87434pt on input line 389. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 36.135pt on input line 393. +(Font) scaled to size 36.135pt on input line 389. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 26.37839pt on input line 393. +(Font) scaled to size 26.37839pt on input line 389. LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be -(Font) scaled to size 19.87434pt on input line 393. +(Font) scaled to size 19.87434pt on input line 389. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 36.135pt on input line 393. +(Font) scaled to size 36.135pt on input line 389. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 26.37839pt on input line 393. +(Font) scaled to size 26.37839pt on input line 389. LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be -(Font) scaled to size 19.87434pt on input line 393. +(Font) scaled to size 19.87434pt on input line 389. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 36.135pt on input line 393. +(Font) scaled to size 36.135pt on input line 389. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 26.37839pt on input line 393. +(Font) scaled to size 26.37839pt on input line 389. LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be -(Font) scaled to size 19.87434pt on input line 393. +(Font) scaled to size 19.87434pt on input line 389. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 36.135pt on input line 393. +(Font) scaled to size 36.135pt on input line 389. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 26.37839pt on input line 393. +(Font) scaled to size 26.37839pt on input line 389. LaTeX Font Info: Font shape `U/ntxmia/m/it' will be -(Font) scaled to size 19.87434pt on input line 393. +(Font) scaled to size 19.87434pt on input line 389. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 36.135pt on input line 393. +(Font) scaled to size 36.135pt on input line 389. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 26.37839pt on input line 393. +(Font) scaled to size 26.37839pt on input line 389. LaTeX Font Info: Font shape `U/ntxsym/m/n' will be -(Font) scaled to size 19.87434pt on input line 393. +(Font) scaled to size 19.87434pt on input line 389. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 36.135pt on input line 393. +(Font) scaled to size 36.135pt on input line 389. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 26.37839pt on input line 393. +(Font) scaled to size 26.37839pt on input line 389. LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be -(Font) scaled to size 19.87434pt on input line 393. +(Font) scaled to size 19.87434pt on input line 389. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 36.135pt on input line 393. +(Font) scaled to size 36.135pt on input line 389. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 26.37839pt on input line 393. +(Font) scaled to size 26.37839pt on input line 389. LaTeX Font Info: Font shape `U/ntxexa/m/n' will be -(Font) scaled to size 19.87434pt on input line 393. +(Font) scaled to size 19.87434pt on input line 389. [1.1{/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map}{/usr /local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_76gpa5.enc}{/usr/ local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/l @@ -1485,233 +1492,185 @@ ocal/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_naooyc.enc} {/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_nh77jq.enc}{ /usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc}] +LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 468. + +Underfull \vbox (badness 1895) has occurred while \output is active [] + LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 9.0pt on input line 501. +(Font) scaled to size 9.0pt on input line 498. LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 7.0pt on input line 501. +(Font) scaled to size 7.0pt on input line 498. [2.2] - -File: diagram/drawing_png.png Graphic file (type png) - -Package pdftex.def Info: diagram/drawing_png.png used on input line 528. -(pdftex.def) Requested size: 253.14749pt x 357.93703pt. +Package svg Info: Last page of `./svg-inkscape/drawing_svg-tex.pdf' is 8 on inp +ut line 541. + (./svg-inkscape/drawing_svg-tex.pdf_tex +<./svg-inkscape/drawing_svg-tex.pdf, id=161, page=1, 597.50786pt x 845.04686pt> -Overfull \hbox (12.0pt too wide) in paragraph at lines 528--529 - [][] - [] +File: ./svg-inkscape/drawing_svg-tex.pdf Graphic file (type pdf) + +Package pdftex.def Info: ./svg-inkscape/drawing_svg-tex.pdf , page1 used on inp +ut line 56. +(pdftex.def) Requested size: 192.91872pt x 272.84465pt. +<./svg-inkscape/drawing_svg-tex.pdf, id=162, page=2, 597.50786pt x 845.04686pt> +File: ./svg-inkscape/drawing_svg-tex.pdf Graphic file (type pdf) + +Package pdftex.def Info: ./svg-inkscape/drawing_svg-tex.pdf , page2 used on inp +ut line 64. +(pdftex.def) Requested size: 192.91872pt x 272.84465pt. +<./svg-inkscape/drawing_svg-tex.pdf, id=163, page=3, 597.50786pt x 845.04686pt> -Class acmart Warning: A possible image without description on input line 532. +File: ./svg-inkscape/drawing_svg-tex.pdf Graphic file (type pdf) + +Package pdftex.def Info: ./svg-inkscape/drawing_svg-tex.pdf , page3 used on inp +ut line 74. +(pdftex.def) Requested size: 192.91872pt x 272.84465pt. -LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be -(Font) scaled to size 9.0pt on input line 534. - - -Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on in -put line 689. -LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/sc' will be -(Font) scaled to size 9.0pt on input line 692. -LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 6.6pt on input line 693. -LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be -(Font) scaled to size 5.5pt on input line 693. - - -[3.3 <./diagram/drawing_png.png>] - -LaTeX Font Info: Trying to load font information for T1+zi4 on input line 77 -7. -(/usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd -File: t1zi4.fd 2018/01/14 T1/zi4 (Inconsolata) -) -LaTeX Font Info: Font shape `T1/zi4/m/n' will be -(Font) scaled to size 9.0pt on input line 777. -Package microtype Info: Loading generic protrusion settings for font family -(microtype) `zi4' (encoding: T1). -(microtype) For optimal results, create family-specific settings. -(microtype) See the microtype manual for details. - - -Package caption Warning: \label without proper reference on input line 827. -See the caption package documentation for explanation. - - -LaTeX Warning: Reference `alg:JemallocFree' on page 4 undefined on input line 8 -41. - - -Overfull \hbox (28.5318pt too wide) in paragraph at lines 839--842 -[]\T1/LinuxLibertineT-TLF/m/n/9 (-20) The only func-tion re-quired to be re-pla -ced with Free was os_pages_unmap - [] - - -Overfull \hbox (12.4271pt too wide) in paragraph at lines 845--848 -\T1/LinuxLibertineT-TLF/m/n/9 (-20) con-ducted. Je-mal-loc is the de-fault mem- -ory al-lo-ca-tor for CHERIBSD [[]]. - [] - - - -[4.4{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_ncsllp.e -nc}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.en -c}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc}] - -Underfull \vbox (badness 5681) has occurred while \output is active [] - - - -LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be -(Font) scaled to size 9.0pt on input line 963. - -File: diagram/benchmarks-group/bargraph-large-dtlb-walk.png Graphic file (type -png) - -Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-dtlb-walk.png - used on input line 1050. -(pdftex.def) Requested size: 241.14749pt x 137.79964pt. - -File: diagram/benchmarks-group/bargraph-large-l1tlb-reads.png Graphic file (typ -e png) - -Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l1tlb-reads.pn -g used on input line 1055. -(pdftex.def) Requested size: 241.14749pt x 137.79964pt. - -File: diagram/benchmarks-group/bargraph-large-l1tlb-refill.png Graphic file (ty -pe png) - -Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l1tlb-refill.p -ng used on input line 1063. -(pdftex.def) Requested size: 241.14749pt x 137.79964pt. - -File: diagram/benchmarks-group/bargraph-large-l2tlb-reads.png Graphic file (typ -e png) - -Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l2tlb-reads.pn -g used on input line 1068. -(pdftex.def) Requested size: 241.14749pt x 137.79964pt. - -File: diagram/benchmarks-group/bargraph-large-ll-cache-rd.png Graphic file (typ -e png) - -Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-ll-cache-rd.pn -g used on input line 1076. -(pdftex.def) Requested size: 241.14749pt x 137.79964pt. - -File: diagram/benchmarks-group/bargraph-large-wallclock.png Graphic file (type -png) - -Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-wallclock.png - used on input line 1081. -(pdftex.def) Requested size: 241.14749pt x 137.79964pt. - -Class acmart Warning: A possible image without description on input line 1089. - - - -[5.5] - - -Underfull \vbox (badness 10000) has occurred while \output is active [] - - - -[6.6] -Underfull \vbox (badness 10000) has occurred while \output is active [] - - - - -Underfull \vbox (badness 10000) has occurred while \output is active [] - - - -[7.7 <./diagram/benchmarks-group/bargraph-large-dtlb-walk.png> <./diagram/bench -marks-group/bargraph-large-l1tlb-reads.png> <./diagram/benchmarks-group/bargrap -h-large-l1tlb-refill.png> <./diagram/benchmarks-group/bargraph-large-l2tlb-read -s.png> <./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png> <./diagram/b -enchmarks-group/bargraph-large-wallclock.png>] -Underfull \vbox (badness 10000) has occurred while \output is active [] - - - -(./paper.bbl - -[8.8] -Underfull \hbox (badness 2443) in paragraph at lines 141--145 -[]\T1/LinuxLibertineT-TLF/m/n/7 (+20) CHERI-allocator/benchmarks/benchmarks/Str -essTestMalloc/glibc-bench.c at - [] - -) - -Class acmart Warning: Some images may lack descriptions. - - -Class acmart Warning: ACM keywords are mandatory for papers over two pages. - - -Class acmart Warning: CCS concepts are mandatory for papers over two pages. - - - - - - -Overfull \vbox (1.152pt too high) has occurred while \output is active [] - - -(/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/se-pdfdoc.def -File: se-pdfdoc.def 2019/11/29 v1.12 stringenc: PDFDocEncoding -) -(/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/se-utf8.def -File: se-utf8.def 2019/11/29 v1.12 stringenc: UTF-8 -) [9.9] -(./paper.aux) - *********** -LaTeX2e <2024-11-01> patch level 2 -L3 programming layer <2025-01-18> - *********** - - -LaTeX Warning: There were undefined references. - -Package rerunfilecheck Info: File `paper.out' has not changed. -(rerunfilecheck) Checksum: DFB5CD2E0B64721769D9BBB90A3777D7;3482. - ) +! Missing } inserted. + + } +l.75 ...age(1GB);\\ }\\ ...\\} \end{tabular}}}} + % +? x + Here is how much of TeX's memory you used: - 26499 strings out of 473190 - 451169 string characters out of 5715801 - 1043466 words of memory out of 5000000 - 48524 multiletter control sequences out of 15000+600000 - 778914 words of font info for 474 fonts, out of 8000000 for 9000 + 26080 strings out of 473190 + 441394 string characters out of 5715801 + 1014480 words of memory out of 5000000 + 48269 multiletter control sequences out of 15000+600000 + 741086 words of font info for 389 fonts, out of 8000000 for 9000 1302 hyphenation exceptions out of 8191 - 94i,17n,131p,1002b,797s stack positions out of 10000i,1000n,20000p,200000b,200000s - -Output written on paper.pdf (9 pages, 820640 bytes). -PDF statistics: - 339 PDF objects out of 1000 (max. 8388607) - 283 compressed objects within 3 object streams - 63 named destinations out of 1000 (max. 500000) - 119528 words of extra memory for PDF output out of 128383 (max. 10000000) + 94i,16n,131p,1002b,746s stack positions out of 10000i,1000n,20000p,200000b,200000s + +pdfTeX warning (dest): name{cite.chen_flexpointer_2023} has been referenced but + does not exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.karakostas_redundant_2015} has been referenced + but does not exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.DirectSegment} has been referenced but does no +t exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.Shadow_superpages} has been referenced but doe +s not exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.IntelItanium} has been referenced but does not + exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.THP} has been referenced but does not exist, r +eplaced by a fixed one + + +pdfTeX warning (dest): name{cite.TLBReach} has been referenced but does not exi +st, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.woodruff_cheri_2019} has been referenced but d +oes not exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.woodruff_cheri_2014} has been referenced but d +oes not exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.panwar_hawkeye_2019} has been referenced but d +oes not exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.mittal_survey_2017} has been referenced but do +es not exist, replaced by a fixed one + + +pdfTeX warning (dest): name{cite.TLBHierarchy} has been referenced but does not + exist, replaced by a fixed one + + +pdfTeX warning (dest): name{page.9} has been referenced but does not exist, rep +laced by a fixed one + + +pdfTeX warning (dest): name{section*.7} has been referenced but does not exist, + replaced by a fixed one + + +pdfTeX warning (dest): name{section.8} has been referenced but does not exist, +replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.7.4} has been referenced but does not ex +ist, replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.7.3} has been referenced but does not ex +ist, replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.7.2} has been referenced but does not ex +ist, replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.7.1} has been referenced but does not ex +ist, replaced by a fixed one + + +pdfTeX warning (dest): name{section.7} has been referenced but does not exist, +replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.6.2} has been referenced but does not ex +ist, replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.6.1} has been referenced but does not ex +ist, replaced by a fixed one + + +pdfTeX warning (dest): name{section.6} has been referenced but does not exist, +replaced by a fixed one + + +pdfTeX warning (dest): name{section.5} has been referenced but does not exist, +replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.4.1} has been referenced but does not ex +ist, replaced by a fixed one + + +pdfTeX warning (dest): name{section.4} has been referenced but does not exist, +replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.3.1} has been referenced but does not ex +ist, replaced by a fixed one + + +pdfTeX warning (dest): name{section.3} has been referenced but does not exist, +replaced by a fixed one + + +pdfTeX warning (dest): name{subsection.2.6} has been referenced but does not ex +ist, replaced by a fixed one + + +Output written on paper.pdf (2 pages, 354851 bytes). +PDF statistics: + 210 PDF objects out of 1000 (max. 8388607) + 177 compressed objects within 2 object streams + 41 named destinations out of 1000 (max. 500000) + 104673 words of extra memory for PDF output out of 106986 (max. 10000000) diff --git a/docs/EuroSys/Paper/paper.pdf b/docs/EuroSys/Paper/paper.pdf index 8edb610..e9e8cb6 100644 Binary files a/docs/EuroSys/Paper/paper.pdf and b/docs/EuroSys/Paper/paper.pdf differ diff --git a/docs/EuroSys/Paper/paper.tex b/docs/EuroSys/Paper/paper.tex index 7a6eea3..23111cb 100644 --- a/docs/EuroSys/Paper/paper.tex +++ b/docs/EuroSys/Paper/paper.tex @@ -60,7 +60,7 @@ \usepackage{graphicx} \usepackage{subcaption} \usepackage{caption} -\usepackage{svg} +\usepackage{graphicx} \lstset{basicstyle=\small\ttfamily,columns=fullflexible} @@ -252,7 +252,7 @@ The contribution is an alternative approach by exploiting capability-based addressing in the CHERI architecture. This paper presents a new memory allocator called Fat Address Translations (FAT) which associates capabilities with memory pointers by integrating - block-based allocations within huge pages. The FAT allocator when ran independently and embedded inside Jemalloc reduces walking the TLB hierarchy by upto 99%, which leads to decreasing runtimes + block-based allocations within huge pages. The FAT allocator when ran independently and embedded inside Jemalloc reduces walking the TLB hierarchy by upto 90\%, which leads to decreasing runtimes for memory read and write intensive applications. \end{abstract} @@ -376,13 +376,16 @@ memory allocations by emulating block allocations on physically contiguous memor \item \textbf{FAT Addresses Translations}: Introduces FAT that include memory bounds, allowing efficient tracking and management of physically contiguous memory regions (Section ~\ref{sec:FatPointerTranslations}). - \item \textbf{CHERI’s Capability-based Optimisation}: Demonstrates how CHERI's architecture can be + \item \textbf{CHERI's Capability-based Optimisation}: Demonstrates how CHERI's architecture can be used to optimise memory allocation by encoding memory bounds directly within pointers, reducing TLB reliance (Section ~\ref{sec:128bitCompressedBounds}). - \item \textbf{Memory Allocation Algorithms}: Provides an algorithm for allocating, freeing + \item \textbf{Memory Allocation Algorithms (FAT allocator)}: Provides an algorithm for allocating, freeing physically contiguous memory , and integrating huge pages with CHERI's capability-based bounds for enhanced memory management (Section ~\ref{sec:MemoryAllocator}). + + \item \textbf{Modified Jemalloc Memory Mapping with FAT allocator}: Modification to Jemalloc with the FAT allocator to support physically contiguous + memory allocation using a block-based strategy with capability-based addressing (Section ~\ref{sec:JemallocFATAllocator}). \end{itemize} Through evaluating micro and macro benchmarks, FAT though the use of CHERI's capabilities and huge pages demonstrates the allocator's ability @@ -456,6 +459,15 @@ The RTLB functions as a fully associative search structure ensuring that most last-level TLB misses are handled efficiently by range mapping which reduces the need for costly page table walks. +\subsection{FlexPointer} +The key insight behind FlexPointer~\cite{chen_flexpointer_2023} is that large memory objects are relatively uncommon. This allows memory ranges to be constructed around +them and assigned unique identifiers. These range IDs are embedded within the unused bits of pointers, enabling direct indexing of the range +TLB and simplifying its design. Since the range ID is unaffected by address generation, range lookups can occur earlier in the pipeline, +concurrently with address computation. Simulation results show that FlexPointer significantly reduces L1 TLB misses and the need for page walks +in a range of memory-intensive workloads. When compared with a traditional 4KB-page system, FlexPointer delivers an average performance improvement +of 14\%, with peak gains of up to 2.8×, and introduces no performance regressions in less demanding scenarios. + + \subsection{CHERI} \label{sec:orgbf2eaac} % CHERI extends conventional processor @@ -524,19 +536,38 @@ in this implementation is the use of range addresses with CHERI CC~\cite{woodruf % mitigating issues related to memory fragmentation. % \end{itemize} -\begin{figure}[h] - \includegraphics[width=0.5\textwidth]{diagram/drawing_png.png} +\begin{figure}[ht] + \centering + \includesvg[width=0.8\linewidth]{diagram/drawing.svg} \caption{High overview architecture} \label{fig:HighOverviewArchitecture} -% \end{minipage} \end{figure} -Figure \ref{fig:HighOverviewArchitecture} illustrates a comparison between standard memory allocation (\textit{malloc}) and the proposed FAT method. The standard approach involves a C program interacting with a custom allocator which uses 48-bit -virtual addresses and the TLB hierarchy (L1, L2 and L3 cache) to achieve non-contiguous allocation in physical memory. -This typically results in more TLB entries and increased TLB misses increasing the reasoning to have more TLB walks. -In contrast, the FAT method employs a custom allocator leveraging -physically contiguous memory by using CHERI to encode -bounds within the pointers and as shown in the figure \ref{fig:HighOverviewArchitecture}. There is almost no reliance on walking the TLB hierarchy. +% \begin{figure}[h] +% \includegraphics[width=0.5\textwidth]{diagram/drawing_png.png} +% \caption{High overview architecture} +% \label{fig:HighOverviewArchitecture} +% % \end{minipage} +% \end{figure} + +% Figure \ref{fig:HighOverviewArchitecture} illustrates a high overview of the FAT allocator. The rectangular rectangle represents +% addresses in memory and the box from v1 to v100 represents a physically contiguous region of memory. The physically contiguous region of +% memory is normally allocated using huge pages. When malloc is called the Capability pointer is returned with meta data related to the bounds +% information encoded in the pointer. The bounds encoded in the pointer is reused for tracking memory blocks within a huge page. As shown this in +% turn reduces the TLB pressure. + +Figure \ref{fig:HighOverviewArchitecture} illustrates a high-level overview of the FAT allocator. The rectangular box represents +addresses in memory, and the box from v1 to v100 represents a physically contiguous region of memory. This physically contiguous +region is typically allocated using huge pages. When malloc is called, a capability pointer is returned with metadata related to +the bounds information encoded within the pointer. The bounds encoded in the pointer are reused for tracking memory blocks within a +huge page. As shown, this in turn reduces TLB pressure. + +% comparison between standard memory allocation (\textit{malloc}) and the proposed FAT method. The standard approach involves a C program interacting with a custom allocator which uses 48-bit +% virtual addresses and the TLB hierarchy (L1, L2 and L3 cache) to achieve non-contiguous allocation in physical memory. +% This typically results in more TLB entries and increased TLB misses increasing the reasoning to have more TLB walks. +% In contrast, the FAT method employs a custom allocator leveraging +% physically contiguous memory by using CHERI to encode +% bounds within the pointers and as shown in the figure \ref{fig:HighOverviewArchitecture}. There is almost no reliance on walking the TLB hierarchy. % Figure \ref{fig:HighOverviewArchitecture} illustrates % the methodology employed to use the CHERI @@ -561,11 +592,18 @@ bounds within the pointers and as shown in the figure \ref{fig:HighOverviewArchi % Integrating range bounds directly into FAT-pointers enables the CHERI architecture % to enforce memory access restrictions at the pointer level thus allowing % tracking of memory ranges on a pointer level. +Range is defined from work based on RMM~\cite{karakostas_redundant_2015} and FlexPointer~\cite{chen_flexpointer_2023}. In RMM a range refers to a contiguous region of memory +defined by a base address and a bound. This information is stored in a hardware managed table called Range Table +which is called when there is a L1 TLB miss. FlexPointer builds up on the work of RMM and stores the ID value between 48th bit +and 64th bit which is the value to check the range table on parallel to the L1 TLB lookup. + +The FAT allocator builds up on the concept of range from RMM and FlexPointer. Instead of using a +hardware range table using CHERI range information can be encoded within a capability pointer. A memory range in FAT has two points to track memory in physical contiguous space which is the top and bottom. These two points are two virtual addresses and the range consists of addresses that lie within this and refers to addresses allocated by invoking \textit{malloc}. FAT memory ranges are established using -bounds encoded within the pointer, adhering to CHERI CC~\cite{woodruff_cheri_2019}. +bounds encoded within the pointer, adhering to CHERI CC~\cite{woodruff_cheri_2019} compression scheme. % as referred in section ~\ref{sec:128bitCompressedBounds}. % Figure \ref{fig:RangeOfMemory} illustrates a straightforward use-case in which the dark pink line represents a single @@ -616,6 +654,11 @@ Instead of relying on fixed-size TLB entries with set page sizes (such as 4KB, 2 CC to define dynamic bounds based on the size requested at allocation time (e.g., during a \textit{malloc} call). This approach offers a more flexible alternative to the traditional fixed-size TLB model. +This means that the default behavior of most allocators, such +as Jemalloc, would allow precise representation of bounds within +a FAT . These pointers can then be repurposed as memory ranges in custom memory allocators, offering a more flexible +alternative to fixed-size TLB entries. + % We use the CHERI CC % bounds to be repurposed to encode dynamic sized addresses ranges. % These pointers can then be repurposed as memory ranges @@ -639,6 +682,12 @@ FAT is able to pre-allocate memory using huge pages and is able to mark smaller using ranges by storing them as bounds within the pointer. Each of these memory ranges can be called a block. Since there are numerous blocks inside a huge page, This allows for abbreviated block-based memory patterns within physically contiguous memory. + +By consolidating address translations into a single TLB entry, +this method cuts down on the overhead of managing many entries. +It also takes advantage of the bounds encoded within FAT +to track and access memory within physically contiguous memory. + % As demonstrated with the allocator % implementation in section ~\ref{sec:MemoryAllocator}. @@ -763,6 +812,7 @@ with page table management and enhances memory access which is critical for perf applications and kernel-level operations. \section{Embedding FAT allocator inside Jemalloc} +\label{sec:JemallocFATAllocator} This section describes about the FAT allocator implementation (Section \ref{sec:MemoryAllocator}) embedded inside Jemalloc. The objective here is to describe the changes needed for a block based allocator to use physically contigous memory with a block based strategy with the help of capability based addresses. In the case of Jemalloc the only changes required was to replace the mmap with the \textit{malloc} function (Algorithm \ref{alg:malloc}) and @@ -819,13 +869,29 @@ for munmap the \textit{free} function (Algorithm \ref{alg:free}). \end{algorithmic} \end{algorithm} -The only function required to be replaced with Malloc was os\_pages\_map, -pages\_map and pages\_commit\_impl as show in -algorithm \ref{alg:JemallocMalloc}. +\subsection{Mmap replaced with MALLOC} + +The os\_pages\_map function (Algorithm~\ref{alg:JemallocMalloc}) simulates jemalloc's low-level page +mapping routine. It first checks if a specific address is +requested in case relevant to CheriABI where such behavior +is disallowed and returns NULL. It then allocates memory using the custom MALLOC(size) (Algorithm~\ref{alg:malloc}) function and validates +whether the returned pointer matches the requested address +if one was provided. If there's a mismatch, it unmaps calling FREE() (Algorithm~\ref{alg:free}) the +memory and returns NULL; otherwise, it returns the allocated +pointer. + +This approach mentioned above is embedded inside jemalloc's strategy of managing memory through arenas and size classes. +In jemalloc, memory is divided into chunks, which are further subdivided into runs and regions to +handle allocations of various sizes efficiently. By aligning sizes and managing allocations within +predefined structures, jemalloc minimizes fragmentation~\cite{evans_scalable_nodate}. + +% The only function required to be replaced with Malloc was os\_pages\_map, +% pages\_map and pages\_commit\_impl as show in +% algorithm \ref{alg:JemallocMalloc}. \begin{algorithm} -\label{alg:JemallocFree} \caption{os\_pages\_unmap} + \label{alg:JemallocFree} \begin{algorithmic}[1] \Require addr aligned to \texttt{os\_page}, size aligned to \texttt{os\_page} \Ensure Memory region at \texttt{addr} is unmapped @@ -835,14 +901,39 @@ algorithm \ref{alg:JemallocMalloc}. \State \textbf{FREE}(addr) \end{algorithmic} \end{algorithm} + +\subsection{Mumap replaced with FREE} + +The os\_pages\_unmap (Algorithm~\ref{alg:JemallocFree}) represents a customized abstraction of jemallocs +memory unmapping routine, designed to integrate with the previously defined simplified +free(ptr) implementation. In conventional jemalloc configurations, os\_pages\_unmap would +invoke low-level system calls such as munmap to release virtual memory pages back to the +operating system. However, in this adapted version, the function instead delegates the +deallocation to a higher-level FREE(addr) (Algorithm~\ref{alg:free}). + +The function begins by enforcing two invariants through assertions: first, that the input +address addr is aligned to the operating system's page size and second that +the size of the memory region is also a multiple of os\_page. These alignment checks are +critical for maintaining consistency with jemalloc's internal page-based memory +management semantics and ensuring compatibility with the allocator's expectations. +Following these checks the memory at the specified address is deallocated via the +FREE(addr) (Algorithm~\ref{alg:free}) operation. + +The following changes done to free is embedded inside jemalloc's deallocation mechanism, +where metadata associated with each allocation +(such as size and location) is used to efficiently return memory to the appropriate +arena or pool. jemalloc maintains +separate metadata structures to track allocations, allowing for quick deallocation and +reuse of memory blocks +without significant overhead~\cite{evans_scalable_nodate}. -The only function required to be replaced with Free was -os\_pages\_unmap as show in -algorithm \ref{alg:JemallocFree}. +% The only function required to be replaced with Free was +% os\_pages\_unmap as show in +% algorithm \ref{alg:JemallocFree}. \section{Evaluation} \label{sec:Evaluation} -Benchmarks of the FAT memory allocator against Jemalloc~\cite{jemalloc} was conducted. +Benchmarks of the FAT memory allocator and the FAT allocator embedded within Jemalloc against the standard Jemalloc~\cite{jemalloc} allocator was conducted. Jemalloc is the default memory allocator for CHERIBSD~\cite{cheribsd}. The objective was to evaluate the reduction of TLB walks ,misses and its impact on the wall clock runtime. @@ -1153,7 +1244,9 @@ of its capability to handle memory more efficiently by leveraging huge pages. % \item Last-level cache: Last-Level Cache read misses are crucial performance indicators, as they often result in slow data fetches % from main memory therefore fewer misses are highly desirable. The performance on this metric varied significantly between the - % allocators and across benchmarks. FAT allocator was near baseline for Kmeans but caused an 18\% increase in misses for Memaccess (designed to stress cache ), + % allocators and across benchmarks. + + % FAT allocator was near baseline for Kmeans but caused an 18\% increase in misses for Memaccess (designed to stress cache ), % a 30\% increase for Richards (many dynamic allocations and pointer manipulations ), and an 18\% increase for Barnes (uses pointer-based octrees ). However, % FAT allocator achieved a significant 60\% reduction in misses for the Glibc benchmark, which involves active memory use post-allocation. % FAT allocator embedded inside Jemalloc showed a 75\% reduction in misses for Memaccess, a substantial improvement. Conversely, it led to an 18\% increase in @@ -1192,7 +1285,7 @@ exhibit minimal differences in wall clock runtimes when using the FAT allocator. This outcome is expected, as macro benchmarks typically involve a broader range of operations beyond memory allocation. Additionally, the benefits of huge pages may be less pronounced for these workloads, as they are often -bottlenecked by factors such as computation or I/O rather than memory translation overhead. +bottlenecked by factors such as computation or I/O rather than memory translation overhead.z % \begin{figure}[htbp] % \centering @@ -1230,17 +1323,17 @@ bottlenecked by factors such as computation or I/O rather than memory translatio \subsection{Analysis} \label{sec:Analysis} -The FAT memory allocator demonstrates significant potential for enhancing +The FAT memory allocator and the modified Jemalloc demonstrates significant potential for enhancing memory management in systems that benefit from huge page optimisations. Its design effectively reduces TLB misses, achieving up to 90\% fewer data TLB walks, L2 TLB reads, -and TLB refills compared to Jemalloc. These improvements lead to noticeable performance +and TLB refills compared to the system allocator (i.e default Jemalloc). These improvements lead to noticeable performance gains especially in micro benchmarks, where the allocator reduces wall clock runtimes by an average of 50\%. -The allocator integrates seamlessly into memory-intensive workloads, as evidenced by its -consistent performance across varying cluster sizes in the K-means benchmark with only -minor anomalies observed under specific conditions. These outliers provide valuable -insights into the allocators interaction with system-level caching and memory translation mechanisms. +% The allocator integrates seamlessly into memory read intensive workloads, as evidenced by its +% consistent performance across varying cluster sizes in the K-means benchmark with only +% minor anomalies observed under specific conditions. These outliers provide valuable +% insights into the allocators interaction with system-level caching and memory translation mechanisms. While the allocator excels in scenarios emphasising on high-memory throughput. Its impact on macro benchmarks is less pronounced. This suggests that its benefits are most relevant for @@ -1279,7 +1372,7 @@ to minimise fragmentation. % restricting access to memory regions, and thus protecting against various security threats. Importantly, these mechanisms % can also improve the reduction of TLB walks to memory allocators by using CHERI bounds while maintaining CHERI's security guarantees. \newline -The benchmarks demonstrate that the allocator reduces TLB misses by up to 90\%, +The benchmarks demonstrates the FAT allocator and the FAT allocator embedded within Jemalloc which reduces the TLB misses by upto 90\%, leading to substantial performance gains in memory-intensive workloads, though the improvements are less pronounced for larger and computation-heavy applications. These results highlight the allocators potential to advance memory management by repurposing CHERI's capability-based model with the use of huge pages. diff --git a/docs/EuroSys/Paper/paperReferences.bib b/docs/EuroSys/Paper/paperReferences.bib index d6340d3..b90fdb4 100644 --- a/docs/EuroSys/Paper/paperReferences.bib +++ b/docs/EuroSys/Paper/paperReferences.bib @@ -615,4 +615,12 @@ series = {WCAE '03} month = feb } +@article{evans_scalable_nodate, + title = {A {Scalable} {Concurrent} malloc(3) {Implementation} for {FreeBSD}}, + abstract = {The FreeBSD project has been engaged in ongoing work to provide scalable support for multi-processor computer systems since version 5. Sufficient progress has been made that the C library’s malloc(3) memory allocator is now a potential bottleneck for multi-threaded applications running on multiprocessor systems. In this paper, I present a new memory allocator that builds on the state of the art to provide scalable concurrent allocation for applications. Benchmarks indicate that with this allocator, memory allocation for multi-threaded applications scales well as the number of processors increases. At the same time, single-threaded allocation performance is similar to the previous allocator implementation.}, + language = {en}, + author = {Evans, Jason}, + file = {Evans - A Scalable Concurrent malloc(3) Implementation for.pdf:/Users/akilan/Zotero/storage/4ZE7JS5V/Evans - A Scalable Concurrent malloc(3) Implementation for.pdf:application/pdf}, +} + diff --git a/docs/EuroSys/Paper/todo.org b/docs/EuroSys/Paper/todo.org index 0cba078..13d6880 100644 --- a/docs/EuroSys/Paper/todo.org +++ b/docs/EuroSys/Paper/todo.org @@ -58,3 +58,10 @@ Recheck require read of the paper ** Conclusion - [x] "This approach has helped reduce" -> "This approach reduces" - [x] "Remove comprehensive" + + ** Changes + - [ ] Fix image + - [x] Integrate Jemalloc to Abstract and Intro + - [x] Integrate to conclusion + - [x] Fix Analysis + - [ ] Read through the entire paper