saving evaluation changes

This commit is contained in:
2025-04-11 16:31:47 +01:00
parent 3cc683534d
commit f35a58d96d
7 changed files with 190 additions and 175 deletions

View File

@@ -37,10 +37,10 @@
\newlabel{fig:RangeOfMemory}{{2}{3}{Range of memory}{figure.caption.4}{}} \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 } \@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}{}} \newlabel{sec:128bitCompressedBounds}{{3.2}{3}{128 bit compressed bounds}{subsection.3.2}{}}
\citation{TLBBehavoir} \citation{sec:FatPointerTranslations}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{4}{subsection.3.3}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Fat-pointer Address Translations using huge pages}}{4}{figure.caption.5}\protected@file@percent } \@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}{}} \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 } \@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}{}} \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 } \@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}{}} \newlabel{alg:free}{{2}{4}{Free implementation}{algorithm.2}{}}
\citation{jemalloc} \citation{jemalloc}
\citation{cheribsd} \citation{cheribsd}
\citation{sec:Micro}
\citation{sec:Macro}
\citation{sec:Results}
\citation{Morello} \citation{Morello}
\citation{BenchmarkABI} \citation{BenchmarkABI}
\citation{PerformanceCounter} \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 } \@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}{}} \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 } \@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 } \@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 } \@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 } \@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}{}} \newlabel{sec:Macro}{{5.2.2}{5}{Macro benchmark}{subsubsection.5.2.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.2}Macro benchmark}{6}{subsubsection.5.2.2}\protected@file@percent } \@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 } \@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 } \@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}{}} \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 } \@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}{}} \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} \bibstyle{unsrt}
\bibdata{paperReferences} \bibdata{paperReferences}
\bibcite{mittal_survey_2017}{{1}{}{{}}{{}}} \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{panwar_hawkeye_2019}{{2}{}{{}}{{}}}
\bibcite{woodruff_cheri_2014}{{3}{}{{}}{{}}} \bibcite{woodruff_cheri_2014}{{3}{}{{}}{{}}}
\bibcite{woodruff_cheri_2019}{{4}{}{{}}{{}}} \bibcite{woodruff_cheri_2019}{{4}{}{{}}{{}}}
@@ -86,13 +86,19 @@
\bibcite{DirectSegment}{{7}{}{{}}{{}}} \bibcite{DirectSegment}{{7}{}{{}}{{}}}
\bibcite{karakostas_redundant_2015}{{8}{}{{}}{{}}} \bibcite{karakostas_redundant_2015}{{8}{}{{}}{{}}}
\bibcite{chen_flexpointer_2023}{{9}{}{{}}{{}}} \bibcite{chen_flexpointer_2023}{{9}{}{{}}{{}}}
\bibcite{TLBBehavoir}{{10}{}{{}}{{}}} \bibcite{jemalloc}{{10}{}{{}}{{}}}
\bibcite{jemalloc}{{11}{}{{}}{{}}} \bibcite{cheribsd}{{11}{}{{}}{{}}}
\bibcite{cheribsd}{{12}{}{{}}{{}}} \bibcite{Morello}{{12}{}{{}}{{}}}
\bibcite{Morello}{{13}{}{{}}{{}}} \bibcite{BenchmarkABI}{{13}{}{{}}{{}}}
\bibcite{BenchmarkABI}{{14}{}{{}}{{}}} \bibcite{PerformanceCounter}{{14}{}{{}}{{}}}
\bibcite{PerformanceCounter}{{15}{}{{}}{{}}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Usability}{8}{subsection.5.4}\protected@file@percent }
\bibcite{Benchmark}{{16}{}{{}}{{}}} \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{tocindent-1}{0pt}
\newlabel{tocindent0}{0pt} \newlabel{tocindent0}{0pt}
\newlabel{tocindent1}{4.185pt} \newlabel{tocindent1}{4.185pt}
@@ -101,6 +107,5 @@
\newlabel{tocindent4}{0pt} \newlabel{tocindent4}{0pt}
\newlabel{tocindent5}{0pt} \newlabel{tocindent5}{0pt}
\providecommand\NAT@force@numbers{}\NAT@force@numbers \providecommand\NAT@force@numbers{}\NAT@force@numbers
\@writefile{toc}{\contentsline {section}{References}{9}{section*.10}\protected@file@percent }
\newlabel{TotPages}{{9}{9}{}{page.9}{}} \newlabel{TotPages}{{9}{9}{}{page.9}{}}
\gdef \@abspage@last{9} \gdef \@abspage@last{9}

View File

@@ -58,11 +58,6 @@ Dongwei Chen, Dong Tong, Chun Yang, Jiangfang Yi, and Xu~Cheng.
tagged pointers. tagged pointers.
\newblock 20(2):1--24. \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):129139, June 2002.
\bibitem{jemalloc} \bibitem{jemalloc}
{JEMALLOC}. {JEMALLOC}.

View File

@@ -13,6 +13,10 @@ Warning--entry type for "Morello" isn't style-file defined
--line 507 of file paperReferences.bib --line 507 of file paperReferences.bib
Warning--entry type for "PerformanceCounter" isn't style-file defined Warning--entry type for "PerformanceCounter" isn't style-file defined
--line 514 of file paperReferences.bib --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 journal in mittal_survey_2017
Warning--empty year in mittal_survey_2017 Warning--empty year in mittal_survey_2017
Warning--empty year in panwar_hawkeye_2019 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 year in karakostas_redundant_2015
Warning--empty journal in chen_flexpointer_2023 Warning--empty journal in chen_flexpointer_2023
Warning--empty year 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, 1791 wiz_defined-function locations,
530 strings with 6709 characters, 530 strings with 6646 characters,
and the built_in function-call counts, 3631 in all, are: and the built_in function-call counts, 3384 in all, are:
= -- 269 = -- 247
> -- 211 > -- 203
< -- 3 < -- 3
+ -- 78 + -- 75
- -- 62 - -- 60
* -- 286 * -- 264
:= -- 551 := -- 513
add.period$ -- 40 add.period$ -- 37
call.type$ -- 16 call.type$ -- 15
change.case$ -- 16 change.case$ -- 15
chr.to.int$ -- 0 chr.to.int$ -- 0
cite$ -- 28 cite$ -- 27
duplicate$ -- 143 duplicate$ -- 134
empty$ -- 359 empty$ -- 333
format.name$ -- 62 format.name$ -- 60
if$ -- 790 if$ -- 736
int.to.chr$ -- 0 int.to.chr$ -- 0
int.to.str$ -- 16 int.to.str$ -- 15
missing$ -- 10 missing$ -- 9
newline$ -- 73 newline$ -- 68
num.names$ -- 11 num.names$ -- 10
pop$ -- 67 pop$ -- 66
preamble$ -- 1 preamble$ -- 1
purify$ -- 0 purify$ -- 0
quote$ -- 0 quote$ -- 0
skip$ -- 93 skip$ -- 89
stack$ -- 0 stack$ -- 0
substring$ -- 218 substring$ -- 191
swap$ -- 29 swap$ -- 28
text.length$ -- 3 text.length$ -- 3
text.prefix$ -- 0 text.prefix$ -- 0
top$ -- 0 top$ -- 0
type$ -- 0 type$ -- 0
warning$ -- 12 warning$ -- 12
while$ -- 27 while$ -- 25
width$ -- 18 width$ -- 17
write$ -- 139 write$ -- 128
(There were 17 warnings) (There were 21 warnings)

View File

@@ -1,13 +1,13 @@
# Fdb version 4 # 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 "" "./paperReferences.bib" 1744196148.81398 45813 26a8e1c09695a94d7f7d7e673ad229c8 ""
"/usr/local/texlive/2025/texmf-dist/bibtex/bst/base/unsrt.bst" 1292289607 18030 1376b4b231b50c66211e47e42eda2875 "" "/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) (generated)
"paper.bbl" "paper.bbl"
"paper.blg" "paper.blg"
(rewritten before read) (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_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_76gpa5.enc" 1490131464 2933 9ad527ce78d7c5fa0a642dead095f172 ""
"/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc" 1490131464 2934 a4a9158faed2e9e89c771b4e3b7fc12f "" "/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/TLBAccess.drawio.png" 1744196148.80543 77522 75367f218335fe386db852966a892e9b ""
"diagram/bargraph.png" 1744196148.80607 74263 65509d21744edc6c9ca02b8c67d664fb "" "diagram/bargraph.png" 1744196148.80607 74263 65509d21744edc6c9ca02b8c67d664fb ""
"diagram/kmeans.png" 1744196148.80901 94217 5d14308c169ff296bf499805b9823aa6 "" "diagram/kmeans.png" 1744196148.80901 94217 5d14308c169ff296bf499805b9823aa6 ""
"paper.aux" 1744298832.83574 7731 7f1c9e5198cf4838053a999b8e322f2d "pdflatex" "paper.aux" 1744381309.20373 7953 abf8114744868342184253162a495cb1 "pdflatex"
"paper.bbl" 1744298831.56846 3588 3b324cb71c9931b08d5c6f1eb2446cbc "bibtex paper" "paper.bbl" 1744381307.99948 3371 e1ba8bd3501bd6b1af1d5ca27a21f4ec "bibtex paper"
"paper.out" 1744298832.83664 3691 57df4bceeaeac4f8a0aa4a6219c57ca6 "pdflatex" "paper.out" 1744381309.20564 3691 57df4bceeaeac4f8a0aa4a6219c57ca6 "pdflatex"
"paper.tex" 1744298825.3142 80291 98adb5dd1273e6e6bda4019aa43da406 "" "paper.tex" 1744381303.28585 80223 2a86dcc0a3a69b931e884068ae17bdcc ""
(generated) (generated)
"paper.aux" "paper.aux"
"paper.log" "paper.log"

View File

@@ -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 entering extended mode
restricted \write18 enabled. restricted \write18 enabled.
%&-line parsing 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 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 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] [2.2]
<diagram/AllocationOverview24.png, id=146, 723.70375pt x 501.875pt> <diagram/AllocationOverview24.png, id=146, 723.70375pt x 501.875pt>
File: diagram/AllocationOverview24.png Graphic file (type png) File: diagram/AllocationOverview24.png Graphic file (type png)
<use diagram/AllocationOverview24.png> <use diagram/AllocationOverview24.png>
Package pdftex.def Info: diagram/AllocationOverview24.png used on input line 5 Package pdftex.def Info: diagram/AllocationOverview24.png used on input line 5
19. 18.
(pdftex.def) Requested size: 202.51491pt x 140.43979pt. (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.
<diagram/TLBAccess.drawio.png, id=152, 773.89125pt x 945.5325pt>
File: diagram/TLBAccess.drawio.png Graphic file (type png)
<use diagram/TLBAccess.drawio.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 [] 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 [3.3 <./diagram/HighOverviewArchitecture.drawio.png> <./diagram/AllocationOverv
iew24.png>] iew24.png>]
<diagram/TLBAccess.drawio.png, id=159, 773.89125pt x 945.5325pt>
File: diagram/TLBAccess.drawio.png Graphic file (type png)
<use diagram/TLBAccess.drawio.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 Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on in
put line 645. 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. (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 [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 nc}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.en
c} <./diagram/TLBAccess.drawio.png>] 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 Package natbib Warning: Citation `sec:Micro' on page 5 undefined on input line
r ad-di-tional meta-data lookups 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 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] [5.5]
Underfull \vbox (badness 10000) has occurred while \output is active []
<diagram/bargraph.png, id=201, 1156.32pt x 722.7pt> <diagram/bargraph.png, id=201, 1156.32pt x 722.7pt>
File: diagram/bargraph.png Graphic file (type png) File: diagram/bargraph.png Graphic file (type png)
<use diagram/bargraph.png> <use diagram/bargraph.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. (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'. 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] [6.6]
Underfull \vbox (badness 10000) has occurred while \output is active [] <./diagram/kmeans.png, id=210, 1011.78pt x 578.16pt>
<./diagram/kmeans.png, id=211, 1011.78pt x 578.16pt>
File: ./diagram/kmeans.png Graphic file (type png) File: ./diagram/kmeans.png Graphic file (type png)
<use ./diagram/kmeans.png> <use ./diagram/kmeans.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. (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 [] 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 (./paper.bbl
Underfull \vbox (badness 10000) has occurred while \output is active []
[8.8]
Underfull \hbox (badness 2443) in paragraph at lines 85--87
[8.8 <./diagram/kmeans.png>]
Underfull \hbox (badness 2443) in paragraph at lines 90--92
[]\T1/LinuxLibertineT-TLF/m/n/7 (+20) CHERI-allocator/benchmarks/benchmarks/Str []\T1/LinuxLibertineT-TLF/m/n/7 (+20) CHERI-allocator/benchmarks/benchmarks/Str
essTestMalloc/glibc-bench.c at essTestMalloc/glibc-bench.c at
[] []
) )
Package natbib Warning: There were undefined citations.
Class acmart Warning: Some images may lack descriptions. 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 (/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/se-pdfdoc.def
File: se-pdfdoc.def 2019/11/29 v1.12 stringenc: PDFDocEncoding 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. (rerunfilecheck) Checksum: 57DF4BCEEAEAC4F8A0AA4A6219C57CA6;3691.
) )
Here is how much of TeX's memory you used: Here is how much of TeX's memory you used:
23994 strings out of 473190 23996 strings out of 473190
393295 string characters out of 5715801 393331 string characters out of 5715801
968957 words of memory out of 5000000 963706 words of memory out of 5000000
46171 multiletter control sequences out of 15000+600000 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 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
</usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/LibertineMathMI. </usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/LibertineMathMI.
pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinBiolinu pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinBiolinu
mT.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinBiol mT.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinBiol
@@ -1463,10 +1472,10 @@ tine/LinLibertineTB.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/
libertine/LinLibertineTI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/pu libertine/LinLibertineTI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/pu
blic/newtx/NewTXMI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/n blic/newtx/NewTXMI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/n
ewtx/txsys.pfb> ewtx/txsys.pfb>
Output written on paper.pdf (9 pages, 703057 bytes). Output written on paper.pdf (9 pages, 701176 bytes).
PDF statistics: PDF statistics:
298 PDF objects out of 1000 (max. 8388607) 296 PDF objects out of 1000 (max. 8388607)
249 compressed objects within 3 object streams 247 compressed objects within 3 object streams
61 named destinations out of 1000 (max. 500000) 60 named destinations out of 1000 (max. 500000)
114906 words of extra memory for PDF output out of 128383 (max. 10000000) 114906 words of extra memory for PDF output out of 128383 (max. 10000000)

Binary file not shown.

View File

@@ -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 used to optimize memory allocation by encoding memory bounds directly within pointers, reducing TLB reliance
(section ~\ref{sec:128bitCompressedBounds}). (section ~\ref{sec:128bitCompressedBounds}).
\item \textbf{Memory Allocation Algorithms}: Provides new algorithms for allocating and freeing \item \textbf{Memory Allocation Algorithms}: Provides an algorithms for allocating, freeing
physically contiguous memory, integrating huge pages with CHERI's capability-based bounds for enhanced memory management physically contiguous memory and integrating huge pages with CHERI's capability-based bounds for enhanced memory management
(section ~\ref{sec:MemoryAllocator}). (section ~\ref{sec:MemoryAllocator}).
\end{itemize} \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 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, 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 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} \section{Related work}
\label{sec:org0e192da} \label{sec:org0e192da}
@@ -435,7 +435,7 @@ reducing the need for costly page table walks.
\subsection{CHERI} \subsection{CHERI}
\label{sec:orgbf2eaac} \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 Instruction-Set Architectures (ISAs) with architectural capabilities to enable fine-grained
memory protection and highly scalable software compartmentalization. CHERI is a hybrid 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. 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} \section{Fat Address Translations}
\label{sec:FatPointerTranslations} \label{sec:FatPointerTranslations}
This section talks about how Fat-pointer Address Translations uses the CHERI architecture to This section talks about how Fat Address Translations(FAT) uses the CHERI architecture to
bring about block based allocations in physically contiguous memory. Fat-pointer Address Translations 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 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 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}. 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{minipage}
\end{figure*} \end{figure*}
Figure \ref{fig:HighOverviewArchitecture} illustrates a comparison between standard memory allocation (malloc()) and a proposed Fat-pointer Address 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
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 and L3 cache) to achieve non-contiguous allocation in physical memory.
free virtual addresses and a TLB walk (L1, L2, L3) 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. 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 In contrast, the Fat-pointer Address Translations method employs a custom allocator leveraging
physically contiguous memory by using CHERI to encode 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. % tracking of memory ranges on a pointer level.
A memory range in FAT has 2 points to track memory in physical contiguous space which 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 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 In 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}
as referred in section ~\ref{sec:128bitCompressedBounds}. 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. 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 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 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 regions. 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 % 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, % 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. % 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} \caption{Fat-pointer Address Translations using huge pages}
\label{fig:HugePages} \label{fig:HugePages}
\end{figure} \end{figure}
To build up based on Section ~\ref{sec:RangeMemory} and ~\ref{sec:128bitCompressedBounds} 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 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 using ranges by storing them as bounds within the pointer. Each of these memory ranges can be
called a block. Since we have numerous blocks inside a huge page we allow block based 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 memory patters within physically contiguous memory. As demonstrated with the allocator
implementation in section ~\ref{sec:MemoryAllocator}. implementation in section ~\ref{sec:MemoryAllocator}.
Traditional address translation methods rely on hierarchical %Traditional address translation methods rely on hierarchical
structures to map virtual addresses to physical addresses. %structures to map virtual addresses to physical addresses.
This often requires multiple entries to handle different %This often requires multiple entries to handle different
memory segments, which increases overhead and adds complexity %memory segments, which increases overhead and adds complexity
to the translation process~\cite{TLBBehavoir}. In contrast, Our approach %to the translation process~\cite{TLBBehavoir}. In contrast, FAT
simplifies this by using a single TLB %simplifies this by using a single TLB
entry to translate multiple addresses within a contiguous memory %entry to translate multiple addresses within a contiguous memory
range. This reduces the number of TLB entries needed, making the %range. This reduces the number of TLB entries needed, making the
translation process more efficient and less complex. %translation process more efficient and less complex.
By consolidating address translations into a single TLB entry, %By consolidating address translations into a single TLB entry,
the FAT Based Address cuts down on the overhead of managing many entries. %the FAT cuts down on the overhead of managing many entries.
It also takes advantage of the bounds encoded within fat-pointers %It also takes advantage of the bounds encoded within fat-pointers
to track and access memory. %to track and access memory.
% This streamlined (TODO) % This streamlined (TODO)
% approach allows for precise and effective memory management, % approach allows for precise and effective memory management,
% especially within large, contiguous memory regions like huge pages. % especially within large, contiguous memory regions like huge pages.
Overall, it simplifies memory operations while improving performance %Overall, it simplifies memory operations while improving performance
and reduces TLB overhead by reducing TLB walks. %and reduces TLB overhead by reducing TLB walks.
Figure \ref{fig:HugePages} illustrates a use-case of huge pages where the green Figure \ref{fig:HugePages} illustrates a use-case of huge pages where the green
line represents a sample access to read within a contigous line represents a sample access to read within a contigous
@@ -628,7 +628,7 @@ on physically contigous memory.
\section{Memory allocator design} \section{Memory allocator design}
\label{sec:MemoryAllocator} \label{sec:MemoryAllocator}
This section presents a straightforward memory allocator designed and implemented based on the 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 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 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 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 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 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 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. 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} \end{algorithm}
The memory deallocation (Algorithm \ref{alg:free}) mechanism in the proposed allocator is facilitated by the FAT-pointer structure 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. 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 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 precisely unmap to identify the exact memory block to be deallocated. This allows the allocator to unmap
the corresponding memory region from the address space, ensuring efficient and accurate memory management. 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. for additional metadata lookups or complex data structures.
% , streamlining the deallocation process. % , streamlining the deallocation process.
% This approach not only enhances performance but also reduces the risk of memory leaks or fragmentation. % 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. applications and kernel-level operations.
\section{Evaluation} \section{Evaluation}
\label{sec:Evaluation}
We conducted tests of the FAT Pointer-based range addresses against Jemalloc~\cite{jemalloc}, 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 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 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 encompass larger, real-world C programs, allowing us to assess the allocator's
performance in more practical, real-world scenarios. 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 the specific configurations, compiler options, and system environment tailored
to benchmark the proposed allocator. This ensures consistency and repeatability to benchmark the proposed allocator. This ensures consistency and repeatability
in our results, providing a solid foundation for meaningful comparisons. 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 focused on particular allocation and deallocation patterns, such as sequential and
random memory accesses, to stress-test the allocator under controlled conditions. 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, the allocator performs with complex memory allocation demands, large datasets,
and varying execution contexts. 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 such as TLB miss rates, memory usage, and runtime performance. We observed that the
proposed allocator demonstrated significant improvements in reducing TLB misses, proposed allocator demonstrated significant improvements in reducing TLB misses,
leading to noticeable enhancements in runtime efficiency for both micro and macro leading to noticeable enhancements in runtime efficiency for both micro and macro
benchmarks. The behavior of specific allocation patterns and their impact on memory benchmarks. The behavior of specific allocation patterns and their impact on memory
performance is detailed, providing a nuanced understanding of the allocator's effectiveness. 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 %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. %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 %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 %gains were marginal or where it introduced additional complexity in memory management.
limitations provide a roadmap for future optimizations and refinements of the allocator design.
\subsection{Experiment setup} \subsection{Experiment setup}
\label{sec:Experiment}
The CHERI Morello~\cite{Morello} board was used to evaluate the proposed memory allocator. 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 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 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: The benchmarks~\cite{Benchmark} are classified into 2 classes:
\subsubsection{Micro benchmark} \subsubsection{Micro benchmark}
\label{sec:org41c278c} \label{sec:Micro}
\begin{itemize} \begin{itemize}
\item GLIBC: The Glibc benchmark evaluates the performance of \item GLIBC: The Glibc benchmark evaluates the performance of
malloc and free functions in single-threaded, multi-threaded, malloc and free functions in single-threaded, multi-threaded,
@@ -844,7 +845,7 @@ The benchmarks~\cite{Benchmark} are classified into 2 classes:
\end{itemize} \end{itemize}
\subsubsection{Macro benchmark} \subsubsection{Macro benchmark}
\label{sec:org89020f2} \label{sec:Macro}
\begin{itemize} \begin{itemize}
\item Kmeans: Kmeans implements a parallelized K-means clustering algorithm that \item Kmeans: Kmeans implements a parallelized K-means clustering algorithm that
assigns data points to clusters based on proximity to centroids, assigns data points to clusters based on proximity to centroids,
@@ -863,6 +864,7 @@ timing help measure system performance and ensure correctness.
\subsection{Results} \subsection{Results}
\label{sec:Results}
\begin{figure*}[h] \begin{figure*}[h]
\includegraphics[width=.9\linewidth]{diagram/bargraph.png} \includegraphics[width=.9\linewidth]{diagram/bargraph.png}
\caption{\label{fig:bargraph}Percentage difference between the modified memory allocator against the default system memory allocator} \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. of its capability to handle memory more efficiently by leveraging huge pages.
\begin{itemize} \begin{itemize}
\item L1 DTLB reads: There was noticeable reduction of L1 DTLB reads for kmeans of about on average \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\% than Jemalloc. 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\% \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. cache.
\item L1 DTLB walks: Due to most of the TLB entries getting hit at the L1TLB there is no need \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 on average 99\% reduction in DTLB walks. 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 \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 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 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 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 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 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, allocator's strengths. These tests simulate frequent and intensive memory access patterns,
where the reduction in TLB misses directly translates into measurable performance gains. 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. 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, 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 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, 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 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 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 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 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 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 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 cluster size of 2000, the overall results reaffirm the allocator's capability to maintain
consistent performance benefits across most scenarios. consistent performance benefits across most scenarios.
\subsection{Usability} \subsection{Analysis}
\label{sec:orgd6ba6f0} \label{sec:Analysis}
The FAT pointer memory allocator demonstrates significant potential for enhancing The FAT pointer memory allocator demonstrates significant potential for enhancing
memory management in systems that benefit from huge page optimizations. Its design 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, effectively reduces TLB misses, achieving up to 90\% fewer data TLB walks, L2 TLB reads,