diff --git a/docs/EuroSys/Paper/paper.aux b/docs/EuroSys/Paper/paper.aux index de78588..7552443 100644 --- a/docs/EuroSys/Paper/paper.aux +++ b/docs/EuroSys/Paper/paper.aux @@ -37,10 +37,10 @@ \newlabel{fig:RangeOfMemory}{{2}{3}{Range of memory}{figure.caption.4}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2}128 bit compressed bounds}{3}{subsection.3.2}\protected@file@percent } \newlabel{sec:128bitCompressedBounds}{{3.2}{3}{128 bit compressed bounds}{subsection.3.2}{}} -\citation{TLBBehavoir} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{4}{subsection.3.3}\protected@file@percent } +\citation{sec:FatPointerTranslations} \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Fat-pointer Address Translations using huge pages}}{4}{figure.caption.5}\protected@file@percent } \newlabel{fig:HugePages}{{3}{4}{Fat-pointer Address Translations using huge pages}{figure.caption.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{4}{subsection.3.3}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {4}Memory allocator design}{4}{section.4}\protected@file@percent } \newlabel{sec:MemoryAllocator}{{4}{4}{Memory allocator design}{section.4}{}} \@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Malloc implementation}}{4}{algorithm.1}\protected@file@percent } @@ -49,6 +49,9 @@ \newlabel{alg:free}{{2}{4}{Free implementation}{algorithm.2}{}} \citation{jemalloc} \citation{cheribsd} +\citation{sec:Micro} +\citation{sec:Macro} +\citation{sec:Results} \citation{Morello} \citation{BenchmarkABI} \citation{PerformanceCounter} @@ -56,28 +59,25 @@ \@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces Init alloc function to create a initial 1 GB huge page}}{5}{algorithm.3}\protected@file@percent } \newlabel{alg:initAlloc}{{3}{5}{Init alloc function to create a initial 1 GB huge page}{algorithm.3}{}} \@writefile{toc}{\contentsline {section}{\numberline {5}Evaluation}{5}{section.5}\protected@file@percent } +\newlabel{sec:Evaluation}{{5}{5}{Evaluation}{section.5}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Experiment setup}{5}{subsection.5.1}\protected@file@percent } +\newlabel{sec:Experiment}{{5.1}{5}{Experiment setup}{subsection.5.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Benchmarks}{5}{subsection.5.2}\protected@file@percent } -\newlabel{sec:org41c278c}{{5.2.1}{5}{Micro benchmark}{subsubsection.5.2.1}{}} +\newlabel{sec:Micro}{{5.2.1}{5}{Micro benchmark}{subsubsection.5.2.1}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.1}Micro benchmark}{5}{subsubsection.5.2.1}\protected@file@percent } -\newlabel{sec:org89020f2}{{5.2.2}{6}{Macro benchmark}{subsubsection.5.2.2}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.2}Macro benchmark}{6}{subsubsection.5.2.2}\protected@file@percent } +\newlabel{sec:Macro}{{5.2.2}{5}{Macro benchmark}{subsubsection.5.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.2}Macro benchmark}{5}{subsubsection.5.2.2}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Results}{6}{subsection.5.3}\protected@file@percent } +\newlabel{sec:Results}{{5.3}{6}{Results}{subsection.5.3}{}} \@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces ARM performance counters}}{6}{table.caption.6}\protected@file@percent } \newlabel{tab:org246a883}{{1}{6}{ARM performance counters}{table.caption.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Percentage difference between the modified memory allocator against the default system memory allocator}}{7}{figure.caption.7}\protected@file@percent } \newlabel{fig:bargraph}{{4}{7}{Percentage difference between the modified memory allocator against the default system memory allocator}{figure.caption.7}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Kmeans COZ benchmark executed against various cluster sizes}}{7}{figure.caption.8}\protected@file@percent } +\newlabel{fig:org8683315}{{5}{7}{Kmeans COZ benchmark executed against various cluster sizes}{figure.caption.8}{}} \bibstyle{unsrt} \bibdata{paperReferences} \bibcite{mittal_survey_2017}{{1}{}{{}}{{}}} -\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Kmeans COZ benchmark executed against various cluster sizes}}{8}{figure.caption.8}\protected@file@percent } -\newlabel{fig:org8683315}{{5}{8}{Kmeans COZ benchmark executed against various cluster sizes}{figure.caption.8}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Usability}{8}{subsection.5.4}\protected@file@percent } -\newlabel{sec:orgd6ba6f0}{{5.4}{8}{Usability}{subsection.5.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6}Future work}{8}{section.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Storing Offsets Directly on Pointers}{8}{subsection.6.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Hardware Modifications:}{8}{subsection.6.2}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion}{8}{section.7}\protected@file@percent } \bibcite{panwar_hawkeye_2019}{{2}{}{{}}{{}}} \bibcite{woodruff_cheri_2014}{{3}{}{{}}{{}}} \bibcite{woodruff_cheri_2019}{{4}{}{{}}{{}}} @@ -86,13 +86,19 @@ \bibcite{DirectSegment}{{7}{}{{}}{{}}} \bibcite{karakostas_redundant_2015}{{8}{}{{}}{{}}} \bibcite{chen_flexpointer_2023}{{9}{}{{}}{{}}} -\bibcite{TLBBehavoir}{{10}{}{{}}{{}}} -\bibcite{jemalloc}{{11}{}{{}}{{}}} -\bibcite{cheribsd}{{12}{}{{}}{{}}} -\bibcite{Morello}{{13}{}{{}}{{}}} -\bibcite{BenchmarkABI}{{14}{}{{}}{{}}} -\bibcite{PerformanceCounter}{{15}{}{{}}{{}}} -\bibcite{Benchmark}{{16}{}{{}}{{}}} +\bibcite{jemalloc}{{10}{}{{}}{{}}} +\bibcite{cheribsd}{{11}{}{{}}{{}}} +\bibcite{Morello}{{12}{}{{}}{{}}} +\bibcite{BenchmarkABI}{{13}{}{{}}{{}}} +\bibcite{PerformanceCounter}{{14}{}{{}}{{}}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Usability}{8}{subsection.5.4}\protected@file@percent } +\newlabel{sec:Usability}{{5.4}{8}{Usability}{subsection.5.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Future work}{8}{section.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Storing Offsets Directly on Pointers}{8}{subsection.6.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Hardware Modifications:}{8}{subsection.6.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion}{8}{section.7}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{References}{8}{section*.10}\protected@file@percent } +\bibcite{Benchmark}{{15}{}{{}}{{}}} \newlabel{tocindent-1}{0pt} \newlabel{tocindent0}{0pt} \newlabel{tocindent1}{4.185pt} @@ -101,6 +107,5 @@ \newlabel{tocindent4}{0pt} \newlabel{tocindent5}{0pt} \providecommand\NAT@force@numbers{}\NAT@force@numbers -\@writefile{toc}{\contentsline {section}{References}{9}{section*.10}\protected@file@percent } \newlabel{TotPages}{{9}{9}{}{page.9}{}} \gdef \@abspage@last{9} diff --git a/docs/EuroSys/Paper/paper.bbl b/docs/EuroSys/Paper/paper.bbl index ca56fa3..4c4e38c 100644 --- a/docs/EuroSys/Paper/paper.bbl +++ b/docs/EuroSys/Paper/paper.bbl @@ -58,11 +58,6 @@ Dongwei Chen, Dong Tong, Chun Yang, Jiangfang Yi, and Xu~Cheng. tagged pointers. \newblock 20(2):1--24. -\bibitem{TLBBehavoir} -Gokul~B. Kandiraju and Anand Sivasubramaniam. -\newblock Characterizing the d-tlb behavior of spec cpu2000 benchmarks. -\newblock {\em SIGMETRICS Perform. Eval. Rev.}, 30(1):129–139, June 2002. - \bibitem{jemalloc} {JEMALLOC}. diff --git a/docs/EuroSys/Paper/paper.blg b/docs/EuroSys/Paper/paper.blg index 1ec91ef..fc230a0 100644 --- a/docs/EuroSys/Paper/paper.blg +++ b/docs/EuroSys/Paper/paper.blg @@ -13,6 +13,10 @@ Warning--entry type for "Morello" isn't style-file defined --line 507 of file paperReferences.bib Warning--entry type for "PerformanceCounter" isn't style-file defined --line 514 of file paperReferences.bib +Warning--I didn't find a database entry for "sec:FatPointerTranslations" +Warning--I didn't find a database entry for "sec:Micro" +Warning--I didn't find a database entry for "sec:Macro" +Warning--I didn't find a database entry for "sec:Results" Warning--empty journal in mittal_survey_2017 Warning--empty year in mittal_survey_2017 Warning--empty year in panwar_hawkeye_2019 @@ -25,45 +29,45 @@ Warning--empty year in THP Warning--empty year in karakostas_redundant_2015 Warning--empty journal in chen_flexpointer_2023 Warning--empty year in chen_flexpointer_2023 -You've used 16 entries, +You've used 15 entries, 1791 wiz_defined-function locations, - 530 strings with 6709 characters, -and the built_in function-call counts, 3631 in all, are: -= -- 269 -> -- 211 + 530 strings with 6646 characters, +and the built_in function-call counts, 3384 in all, are: += -- 247 +> -- 203 < -- 3 -+ -- 78 -- -- 62 -* -- 286 -:= -- 551 -add.period$ -- 40 -call.type$ -- 16 -change.case$ -- 16 ++ -- 75 +- -- 60 +* -- 264 +:= -- 513 +add.period$ -- 37 +call.type$ -- 15 +change.case$ -- 15 chr.to.int$ -- 0 -cite$ -- 28 -duplicate$ -- 143 -empty$ -- 359 -format.name$ -- 62 -if$ -- 790 +cite$ -- 27 +duplicate$ -- 134 +empty$ -- 333 +format.name$ -- 60 +if$ -- 736 int.to.chr$ -- 0 -int.to.str$ -- 16 -missing$ -- 10 -newline$ -- 73 -num.names$ -- 11 -pop$ -- 67 +int.to.str$ -- 15 +missing$ -- 9 +newline$ -- 68 +num.names$ -- 10 +pop$ -- 66 preamble$ -- 1 purify$ -- 0 quote$ -- 0 -skip$ -- 93 +skip$ -- 89 stack$ -- 0 -substring$ -- 218 -swap$ -- 29 +substring$ -- 191 +swap$ -- 28 text.length$ -- 3 text.prefix$ -- 0 top$ -- 0 type$ -- 0 warning$ -- 12 -while$ -- 27 -width$ -- 18 -write$ -- 139 -(There were 17 warnings) +while$ -- 25 +width$ -- 17 +write$ -- 128 +(There were 21 warnings) diff --git a/docs/EuroSys/Paper/paper.fdb_latexmk b/docs/EuroSys/Paper/paper.fdb_latexmk index 0474de6..aeb026f 100644 --- a/docs/EuroSys/Paper/paper.fdb_latexmk +++ b/docs/EuroSys/Paper/paper.fdb_latexmk @@ -1,13 +1,13 @@ # Fdb version 4 -["bibtex paper"] 1744298831.47844 "paper.aux" "paper.bbl" "paper" 1744298833.1535 0 +["bibtex paper"] 1744381307.91479 "paper.aux" "paper.bbl" "paper" 1744381309.50412 0 "./paperReferences.bib" 1744196148.81398 45813 26a8e1c09695a94d7f7d7e673ad229c8 "" "/usr/local/texlive/2025/texmf-dist/bibtex/bst/base/unsrt.bst" 1292289607 18030 1376b4b231b50c66211e47e42eda2875 "" - "paper.aux" 1744298832.83574 7731 7f1c9e5198cf4838053a999b8e322f2d "pdflatex" + "paper.aux" 1744381309.20373 7953 abf8114744868342184253162a495cb1 "pdflatex" (generated) "paper.bbl" "paper.blg" (rewritten before read) -["pdflatex"] 1744298831.57217 "paper.tex" "paper.pdf" "paper" 1744298833.15366 0 +["pdflatex"] 1744381308.00238 "paper.tex" "paper.pdf" "paper" 1744381309.50425 0 "/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 "" "/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc" 1490131464 2934 a4a9158faed2e9e89c771b4e3b7fc12f "" @@ -215,10 +215,10 @@ "diagram/TLBAccess.drawio.png" 1744196148.80543 77522 75367f218335fe386db852966a892e9b "" "diagram/bargraph.png" 1744196148.80607 74263 65509d21744edc6c9ca02b8c67d664fb "" "diagram/kmeans.png" 1744196148.80901 94217 5d14308c169ff296bf499805b9823aa6 "" - "paper.aux" 1744298832.83574 7731 7f1c9e5198cf4838053a999b8e322f2d "pdflatex" - "paper.bbl" 1744298831.56846 3588 3b324cb71c9931b08d5c6f1eb2446cbc "bibtex paper" - "paper.out" 1744298832.83664 3691 57df4bceeaeac4f8a0aa4a6219c57ca6 "pdflatex" - "paper.tex" 1744298825.3142 80291 98adb5dd1273e6e6bda4019aa43da406 "" + "paper.aux" 1744381309.20373 7953 abf8114744868342184253162a495cb1 "pdflatex" + "paper.bbl" 1744381307.99948 3371 e1ba8bd3501bd6b1af1d5ca27a21f4ec "bibtex paper" + "paper.out" 1744381309.20564 3691 57df4bceeaeac4f8a0aa4a6219c57ca6 "pdflatex" + "paper.tex" 1744381303.28585 80223 2a86dcc0a3a69b931e884068ae17bdcc "" (generated) "paper.aux" "paper.log" diff --git a/docs/EuroSys/Paper/paper.log b/docs/EuroSys/Paper/paper.log index efabf69..ddf4bdb 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) 10 APR 2025 16:27 +This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 11 APR 2025 15:21 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -1298,22 +1298,33 @@ LaTeX Warning: `h' float specifier changed to `ht'. LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 9.0pt on input line 502. +(Font) scaled to size 9.0pt on input line 501. LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be -(Font) scaled to size 7.0pt on input line 502. +(Font) scaled to size 7.0pt on input line 501. [2.2] File: diagram/AllocationOverview24.png Graphic file (type png) Package pdftex.def Info: diagram/AllocationOverview24.png used on input line 5 -19. +18. (pdftex.def) Requested size: 202.51491pt x 140.43979pt. -Class acmart Warning: A possible image without description on input line 522. +Class acmart Warning: A possible image without description on input line 521. + +File: diagram/TLBAccess.drawio.png Graphic file (type png) + +Package pdftex.def Info: diagram/TLBAccess.drawio.png used on input line 590. +(pdftex.def) Requested size: 202.51491pt x 247.43411pt. + +Class acmart Warning: A possible image without description on input line 593. + + +LaTeX Warning: `h' float specifier changed to `ht'. + Underfull \vbox (badness 10000) has occurred while \output is active [] @@ -1321,16 +1332,9 @@ Underfull \vbox (badness 10000) has occurred while \output is active [] [3.3 <./diagram/HighOverviewArchitecture.drawio.png> <./diagram/AllocationOverv iew24.png>] - -File: diagram/TLBAccess.drawio.png Graphic file (type png) - -Package pdftex.def Info: diagram/TLBAccess.drawio.png used on input line 590. -(pdftex.def) Requested size: 202.51491pt x 247.43411pt. - - -Class acmart Warning: A possible image without description on input line 593. - +Package natbib Warning: Citation `sec:FatPointerTranslations' on page 4 undefin +ed on input line 631. Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on in put line 645. @@ -1342,79 +1346,88 @@ LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be (Font) scaled to size 5.5pt on input line 649. + + [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} <./diagram/TLBAccess.drawio.png>] -Overfull \hbox (1.93413pt too wide) in paragraph at lines 689--693 -\T1/LinuxLibertineT-TLF/m/n/9 (-20) the free func-tion elim-i-nates the need fo -r ad-di-tional meta-data lookups - [] + +Package natbib Warning: Citation `sec:Micro' on page 5 undefined on input line +736. + + +Package natbib Warning: Citation `sec:Macro' on page 5 undefined on input line +739. + + +Package natbib Warning: Citation `sec:Results' on page 5 undefined on input lin +e 743. LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be -(Font) scaled to size 9.0pt on input line 831. +(Font) scaled to size 9.0pt on input line 832. [5.5] -Underfull \vbox (badness 10000) has occurred while \output is active [] - - - File: diagram/bargraph.png Graphic file (type png) -Package pdftex.def Info: diagram/bargraph.png used on input line 867. +Package pdftex.def Info: diagram/bargraph.png used on input line 869. (pdftex.def) Requested size: 455.6624pt x 284.78517pt. -Class acmart Warning: A possible image without description on input line 869. + +Class acmart Warning: A possible image without description on input line 871. LaTeX Warning: `h' float specifier changed to `ht'. -Underfull \vbox (badness 10000) has occurred while \output is active [] +Underfull \vbox (badness 2762) has occurred while \output is active [] + + [6.6] -Underfull \vbox (badness 10000) has occurred while \output is active [] - - - -<./diagram/kmeans.png, id=211, 1011.78pt x 578.16pt> +<./diagram/kmeans.png, id=210, 1011.78pt x 578.16pt> File: ./diagram/kmeans.png Graphic file (type png) -Package pdftex.def Info: ./diagram/kmeans.png used on input line 917. +Package pdftex.def Info: ./diagram/kmeans.png used on input line 919. (pdftex.def) Requested size: 265.2637pt x 151.57959pt. -Overfull \hbox (24.11621pt too wide) in paragraph at lines 917--918 +Overfull \hbox (24.11621pt too wide) in paragraph at lines 919--920 [][] [] -Class acmart Warning: A possible image without description on input line 919. +Class acmart Warning: A possible image without description on input line 921. Underfull \vbox (badness 10000) has occurred while \output is active [] -[7.7 <./diagram/bargraph.png>] + + +[7.7 <./diagram/bargraph.png> <./diagram/kmeans.png>] +Underfull \vbox (badness 1895) has occurred while \output is active [] + + (./paper.bbl -Underfull \vbox (badness 10000) has occurred while \output is active [] - - -[8.8 <./diagram/kmeans.png>] -Underfull \hbox (badness 2443) in paragraph at lines 90--92 +[8.8] +Underfull \hbox (badness 2443) in paragraph at lines 85--87 []\T1/LinuxLibertineT-TLF/m/n/7 (+20) CHERI-allocator/benchmarks/benchmarks/Str essTestMalloc/glibc-bench.c at [] ) +Package natbib Warning: There were undefined citations. + + Class acmart Warning: Some images may lack descriptions. @@ -1427,10 +1440,6 @@ Class acmart Warning: CCS concepts are mandatory for papers over two pages. - -Overfull \vbox (1.28899pt 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 ) @@ -1446,13 +1455,13 @@ Package rerunfilecheck Info: File `paper.out' has not changed. (rerunfilecheck) Checksum: 57DF4BCEEAEAC4F8A0AA4A6219C57CA6;3691. ) Here is how much of TeX's memory you used: - 23994 strings out of 473190 - 393295 string characters out of 5715801 - 968957 words of memory out of 5000000 + 23996 strings out of 473190 + 393331 string characters out of 5715801 + 963706 words of memory out of 5000000 46171 multiletter control sequences out of 15000+600000 - 768771 words of font info for 444 fonts, out of 8000000 for 9000 + 768930 words of font info for 446 fonts, out of 8000000 for 9000 1302 hyphenation exceptions out of 8191 - 90i,16n,131p,1002b,772s stack positions out of 10000i,1000n,20000p,200000b,200000s + 90i,17n,131p,1002b,824s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on paper.pdf (9 pages, 703057 bytes). +Output written on paper.pdf (9 pages, 701176 bytes). PDF statistics: - 298 PDF objects out of 1000 (max. 8388607) - 249 compressed objects within 3 object streams - 61 named destinations out of 1000 (max. 500000) + 296 PDF objects out of 1000 (max. 8388607) + 247 compressed objects within 3 object streams + 60 named destinations out of 1000 (max. 500000) 114906 words of extra memory for PDF output out of 128383 (max. 10000000) diff --git a/docs/EuroSys/Paper/paper.pdf b/docs/EuroSys/Paper/paper.pdf index 2fec4b8..28f313c 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 4d38712..f00dba5 100644 --- a/docs/EuroSys/Paper/paper.tex +++ b/docs/EuroSys/Paper/paper.tex @@ -355,8 +355,8 @@ memory allocations. The contributions for the following paper are as follows: used to optimize memory allocation by encoding memory bounds directly within pointers, reducing TLB reliance (section ~\ref{sec:128bitCompressedBounds}). - \item \textbf{Memory Allocation Algorithms}: Provides new algorithms for allocating and freeing - physically contiguous memory, integrating huge pages with CHERI's capability-based bounds for enhanced memory management + \item \textbf{Memory Allocation Algorithms}: Provides an algorithms for allocating, freeing + physically contiguous memory and integrating huge pages with CHERI's capability-based bounds for enhanced memory management (section ~\ref{sec:MemoryAllocator}). \end{itemize} @@ -364,7 +364,7 @@ Through comprehensive evaluation, including micro and macro benchmarks, we demon to reduce TLB misses by up to 90\%, yielding significant improvements in wall clock runtimes for memory-intensive applications. While its impact on larger, computation-heavy workloads is less pronounced, the proposed allocator shows strong potential for advancing memory management in scenarios requiring -high memory throughput and low translation overhead. +high memory throughput by reducing the address translation overhead. \section{Related work} \label{sec:org0e192da} @@ -435,7 +435,7 @@ reducing the need for costly page table walks. \subsection{CHERI} \label{sec:orgbf2eaac} -CHERI (Capability Hardware Enhanced RISC Instructions) extends conventional processor +CHERI extends conventional processor Instruction-Set Architectures (ISAs) with architectural capabilities to enable fine-grained memory protection and highly scalable software compartmentalization. CHERI is a hybrid capability architecture that can combine capabilities with conventional MMU (Memory Management Unit) based systems. @@ -454,8 +454,8 @@ and abstraction extensions for scalable software compartmentalization. \section{Fat Address Translations} \label{sec:FatPointerTranslations} -This section talks about how Fat-pointer Address Translations uses the CHERI architecture to -bring about block based allocations in physically contiguous memory. Fat-pointer Address Translations +This section talks about how Fat Address Translations(FAT) uses the CHERI architecture to +bring about block based allocations in physically contiguous memory. FAT leverages techniques like FlexPointer~\cite{chen_flexpointer_2023} and Range Memory Mapping (RMM)~\cite{karakostas_redundant_2015} to achieve lesser pressure in the TLB. A key component in this implementation is the use of range addresses with CHERI CC~\cite{woodruff_cheri_2019}. @@ -492,9 +492,8 @@ in this implementation is the use of range addresses with CHERI CC~\cite{woodruf % \end{minipage} \end{figure*} -Figure \ref{fig:HighOverviewArchitecture} illustrates a comparison between standard memory allocation (malloc()) and a proposed Fat-pointer Address -Translation method. The standard approach involves a C program interacting with a custom allocator, utilizing 48-bit -free virtual addresses and a TLB walk (L1, L2, L3) to achieve non-contiguous allocation in physical memory. +Figure \ref{fig:HighOverviewArchitecture} illustrates a comparison between standard memory allocation (malloc()) and a proposed FAT method. The standard approach involves a C program interacting with a custom allocator, utilizing 48-bit +free virtual addresses and a TLB walk (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-pointer Address Translations method employs a custom allocator leveraging physically contiguous memory by using CHERI to encode @@ -525,7 +524,7 @@ bounds within the pointers and as show in the figure \ref{fig:HighOverviewArchit % tracking of memory ranges on a pointer level. A memory range in FAT has 2 points to track memory in physical contiguous space which is the top and bottom. These 2 points are 2 virtual addresses and the range consists of -addresses which lie within this and constitutes as addresses allocated by invoking malloc. +addresses which lie within this and refers to addresses allocated by invoking malloc. In FAT memory ranges are established using bounds encoded within the pointer, adhering to CHERI CC~\cite{woodruff_cheri_2019} as referred in section ~\ref{sec:128bitCompressedBounds}. @@ -557,8 +556,9 @@ By using the CHERI bounds, this method maintains the contiguity of the allocated We use CHERI CC~\cite{woodruff_cheri_2019} to track regions of memory in physically contiguous space. CHERI CC consists of compressed bounds that represent a 128-bit pointer within a 64-bit virtual address -system. Our approach uses the work of CHERI CC by using a single cycle t0 decode bounds from the -capability register and the bounds which are decoded are repurposed for tracking memory regions. +system. Our approach uses the work of CHERI CC by using a single cycle to decode bounds from the +capability register and the bounds which are decoded are repurposed for tracking memory which is eagerly +allocated. % Our approach utilizes a single-cycle encoding and decoding mechanism for efficiency. While CHERI % CC was originally designed for memory protection, it can also be repurposed for tracking memory regions, % eliminating the need for multiple TLB entries for each allocation. @@ -591,32 +591,32 @@ malloc. Offering a more flexible alternative than fixed-size TLB entries. \caption{Fat-pointer Address Translations using huge pages} \label{fig:HugePages} \end{figure} -To build up based on Section ~\ref{sec:RangeMemory} and ~\ref{sec:128bitCompressedBounds} -we are able to pre-allocate memory using Huge pages and are able to mark smaller allocations -using ranges by storing them as bounds within the pointer. Each of the memory ranges can be -called a block. Since we have numerous blocks inside a huge page we allow block based +To build up based on Section ~\ref{sec:RangeMemory} and ~\ref{sec:128bitCompressedBounds}. +We are able to pre-allocate memory using huge pages and are able to mark smaller allocations +using ranges by storing them as bounds within the pointer. Each of these memory ranges can be +called as a block. Since we have numerous blocks inside a huge page we allow block based memory patters within physically contiguous memory. As demonstrated with the allocator implementation in section ~\ref{sec:MemoryAllocator}. -Traditional address translation methods rely on hierarchical -structures to map virtual addresses to physical addresses. -This often requires multiple entries to handle different -memory segments, which increases overhead and adds complexity -to the translation process~\cite{TLBBehavoir}. In contrast, Our approach -simplifies this by using a single TLB -entry to translate multiple addresses within a contiguous memory -range. This reduces the number of TLB entries needed, making the -translation process more efficient and less complex. +%Traditional address translation methods rely on hierarchical +%structures to map virtual addresses to physical addresses. +%This often requires multiple entries to handle different +%memory segments, which increases overhead and adds complexity +%to the translation process~\cite{TLBBehavoir}. In contrast, FAT +%simplifies this by using a single TLB +%entry to translate multiple addresses within a contiguous memory +%range. This reduces the number of TLB entries needed, making the +%translation process more efficient and less complex. -By consolidating address translations into a single TLB entry, -the FAT Based Address cuts down on the overhead of managing many entries. -It also takes advantage of the bounds encoded within fat-pointers -to track and access memory. +%By consolidating address translations into a single TLB entry, +%the FAT cuts down on the overhead of managing many entries. +%It also takes advantage of the bounds encoded within fat-pointers +%to track and access memory. % This streamlined (TODO) % approach allows for precise and effective memory management, % especially within large, contiguous memory regions like huge pages. -Overall, it simplifies memory operations while improving performance -and reduces TLB overhead by reducing TLB walks. +%Overall, it simplifies memory operations while improving performance +%and reduces TLB overhead by reducing TLB walks. Figure \ref{fig:HugePages} illustrates a use-case of huge pages where the green line represents a sample access to read within a contigous @@ -628,7 +628,7 @@ on physically contigous memory. \section{Memory allocator design} \label{sec:MemoryAllocator} This section presents a straightforward memory allocator designed and implemented based on the -principles outlined in our approach. The allocator consists of three core functions: InitAlloc, +principles outlined FAT ~\cite{sec:FatPointerTranslations}. The allocator consists of three core functions: InitAlloc, malloc, and free. The InitAlloc function initializes the memory pool, setting up the necessary data structures and metadata required for efficient memory management. The malloc function is responsible for allocating a contiguous block of memory of a specified size, while the free @@ -664,7 +664,7 @@ explicitly encoded in the address, enabling efficient monitoring and management Furthermore, this design uses shared huge page TLB entries to map and track memory addresses. By encoding bounds directly into the address, the algorithm ensures that memory -accesses remain within the allocated region, thereby enhancing safety and reducing the risk of out-of-bounds +accesses remain within the allocated region, thereby reducing the risk of out-of-bounds errors. This use of FAT-pointers and shared TLB entries not only aligns with the principles of efficient memory management but also demonstrates a practical usecase of huge pages in CHERI. @@ -680,13 +680,13 @@ efficient memory management but also demonstrates a practical usecase of huge pa \end{algorithm} The memory deallocation (Algorithm \ref{alg:free}) mechanism in the proposed allocator is facilitated by the FAT-pointer structure - introduced in the malloc algorithm. When the free function is invoked, it utilizes the metadata + introduced in the malloc algorithm. When the free function is invoked, it uses the metadata embedded within the FAT-pointer to determine the range and size of the allocated memory region. - Specifically, the start and end addresses encoded in the FAT-pointer provide the necessary information - to identify the exact memory block to be deallocated. This allows the allocator to precisely unmap - the corresponding memory region from the address space, ensuring efficient and accurate memory management. + Specifically, the start and end addresses encoded in FAT to provide the necessary information + to identify the exact memory block to be deallocated. This allows the allocator to unmap + the corresponding memory region from the address space. - By extracting the bounds and size directly from the FAT-pointer, the free function eliminates the need + By extracting the bounds and size directly from FAT, the free function eliminates the need for additional metadata lookups or complex data structures. % , streamlining the deallocation process. % This approach not only enhances performance but also reduces the risk of memory leaks or fragmentation. @@ -715,6 +715,7 @@ with page table management and enhances memory access efficiency, which is criti applications and kernel-level operations. \section{Evaluation} +\label{sec:Evaluation} We conducted tests of the FAT Pointer-based range addresses against Jemalloc~\cite{jemalloc}, the default memory allocator for CHERIBSD~\cite{cheribsd}, to assess the performance improvements enabled by a CHERI-based huge page-aware allocator. Specifically, we evaluated @@ -727,32 +728,32 @@ detailed aspects of the allocator's behavior. Macro benchmarks, on the other han encompass larger, real-world C programs, allowing us to assess the allocator's performance in more practical, real-world scenarios. -The experiment setup section details the software stack used for evaluation. It includes +The experiment setup (section~\ref{sec:Experiment}) details the software stack used for evaluation. It includes the specific configurations, compiler options, and system environment tailored to benchmark the proposed allocator. This ensures consistency and repeatability in our results, providing a solid foundation for meaningful comparisons. -We further elaborated on the two classes of benchmarks executed. Micro benchmarks +We further elaborated on the two classes of benchmarks executed. Micro benchmarks (section~\cite{sec:Micro}). focused on particular allocation and deallocation patterns, such as sequential and random memory accesses, to stress-test the allocator under controlled conditions. -Macro benchmarks involved real-world applications, offering insights into how +Macro benchmarks (section~\cite{sec:Macro}) involved real-world applications, offering insights into how the allocator performs with complex memory allocation demands, large datasets, and varying execution contexts. -The results section presents the outcomes of our benchmarks, highlighting key metrics +The results (section~\cite{sec:Results}) presents the outcomes of our benchmarks, highlighting key metrics such as TLB miss rates, memory usage, and runtime performance. We observed that the proposed allocator demonstrated significant improvements in reducing TLB misses, leading to noticeable enhancements in runtime efficiency for both micro and macro benchmarks. The behavior of specific allocation patterns and their impact on memory performance is detailed, providing a nuanced understanding of the allocator's effectiveness. -Based on the evaluated results, the usability of the proposed allocator shows promise -for applications requiring optimized memory management and reduced overhead from TLB misses. -However, limitations were also identified, such as scenarios where the allocator's performance -gains were marginal or where it introduced additional complexity in memory management. These -limitations provide a roadmap for future optimizations and refinements of the allocator design. +%Based on the evaluated results (section~\cite{sec:Usability}), the usability of the proposed allocator shows promise +%for applications requiring optimized memory management and reduced overhead from TLB misses. +%However, limitations were also identified, such as scenarios where the allocator's performance +%gains were marginal or where it introduced additional complexity in memory management. \subsection{Experiment setup} +\label{sec:Experiment} The CHERI Morello~\cite{Morello} board was used to evaluate the proposed memory allocator. Morello implements the ARM A76 with enhanced server-class memory, featuring a quad-core ARM CPU with capability extensions. The L1 and L2 caches were modified @@ -827,7 +828,7 @@ the proposed changes. The benchmarks~\cite{Benchmark} are classified into 2 classes: \subsubsection{Micro benchmark} - \label{sec:org41c278c} + \label{sec:Micro} \begin{itemize} \item GLIBC: The Glibc benchmark evaluates the performance of malloc and free functions in single-threaded, multi-threaded, @@ -844,7 +845,7 @@ The benchmarks~\cite{Benchmark} are classified into 2 classes: \end{itemize} \subsubsection{Macro benchmark} -\label{sec:org89020f2} +\label{sec:Macro} \begin{itemize} \item Kmeans: Kmeans implements a parallelized K-means clustering algorithm that assigns data points to clusters based on proximity to centroids, @@ -863,6 +864,7 @@ timing help measure system performance and ensure correctness. \subsection{Results} +\label{sec:Results} \begin{figure*}[h] \includegraphics[width=.9\linewidth]{diagram/bargraph.png} \caption{\label{fig:bargraph}Percentage difference between the modified memory allocator against the default system memory allocator} @@ -875,15 +877,15 @@ patterns benefit from its design. The results align with expectations, showcasin of its capability to handle memory more efficiently by leveraging huge pages. \begin{itemize} - \item L1 DTLB reads: There was noticeable reduction of L1 DTLB reads for kmeans of about on average - 4\% lesser and for Glibc there was significant reduction of 50\% than Jemalloc. + \item L1 DTLB reads: There was noticeable reduction of L1 DTLB reads for kmeans of about an average of + 4\% lesser and for Glibc there was significant reduction of 50\% lesser than Jemalloc. \item L2 DTLB reads: For all the benchmarks on figure \ref{fig:bargraph} there was on average 98\% - reduction on L2 DTLB reads. Which demonstrates that all TLB translations are read at the L1 TLB + reduction on L2 DTLB reads. This demonstrates that all the TLB translations are read at the L1 TLB cache. - \item L1 DTLB walks: Due to most of the TLB entries getting hit at the L1TLB there is no need - to walk the TLB cache hierarchy. This is shown by on average 99\% reduction in DTLB walks. + \item L1 DTLB walks: Due to most of the TLB entries getting hit at the L1 DTLB there is no need + to walk the TLB cache hierarchy. This is shown by an average of 99\% reduction in DTLB walks. \item L1 DTLB refills: Since there are lesser DTLB walks and most reads are done at the L1 DTLB layer there is no need for numerous TLB refills to take place. Our benchmarks show on average @@ -897,16 +899,16 @@ benchmarks compared to Jemalloc. This improvement is due to the modified allocat use of a single huge page entry at the L1 TLB layer. By enabling most address translations to be resolved directly at the L1 TLB, the need to walk through the deeper TLB hierarchy is largely eliminated. This reduction in translation overhead is a key factor in the allocator's -superior performance for certain types of workloads. +performance for certain types of workloads. The micro benchmarks, which are crafted to emphasize memory read operations, highlight the allocator's strengths. These tests simulate frequent and intensive memory access patterns, where the reduction in TLB misses directly translates into measurable performance gains. -On average, the FAT pointer allocator achieves a 50\% reduction in wall clock runtimes for +On average, the FAT allocator achieves a 50\% reduction in wall clock runtimes for these workloads, underscoring its ability to optimize high-throughput memory operations. On the other hand, macro benchmarks, which represent larger and more complex real-world applications, -exhibit minimal differences in wall clock runtimes when using the FAT pointer allocator. +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, diluting the impact of the allocator's optimizations. Additionally, the benefits of huge pages may be less pronounced for these workloads, as they are often @@ -932,7 +934,7 @@ the K-means algorithm. However, an anomaly was observed at a cluster size of 2000, where the percentage difference deviated significantly from the trend. At this cluster size, the memory access patterns and allocation behavior may align in a way that -temporarily offsets the advantages of the FAT pointer allocator. For example, the memory layout +temporarily offsets the advantages of the FAT allocator. For example, the memory layout might interact with system-level caching mechanisms or TLB behavior differently, leading to an unexpected change in performance. Additionally, the increased complexity of managing a higher number of clusters might introduce computational overhead that overshadows the memory allocator's @@ -945,8 +947,8 @@ behavior and guide future improvements to address such outliers. Despite the dev cluster size of 2000, the overall results reaffirm the allocator's capability to maintain consistent performance benefits across most scenarios. -\subsection{Usability} -\label{sec:orgd6ba6f0} +\subsection{Analysis} +\label{sec:Analysis} The FAT pointer memory allocator demonstrates significant potential for enhancing memory management in systems that benefit from huge page optimizations. Its design effectively reduces TLB misses, achieving up to 90\% fewer data TLB walks, L2 TLB reads,