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}{}}
\@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}

View File

@@ -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):129139, June 2002.
\bibitem{jemalloc}
{JEMALLOC}.

View File

@@ -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)

View File

@@ -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"

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
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]
<diagram/AllocationOverview24.png, id=146, 723.70375pt x 501.875pt>
File: diagram/AllocationOverview24.png Graphic file (type png)
<use diagram/AllocationOverview24.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.
<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 []
@@ -1321,16 +1332,9 @@ Underfull \vbox (badness 10000) has occurred while \output is active []
[3.3 <./diagram/HighOverviewArchitecture.drawio.png> <./diagram/AllocationOverv
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
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 []
<diagram/bargraph.png, id=201, 1156.32pt x 722.7pt>
File: diagram/bargraph.png Graphic file (type 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.
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)
<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.
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
</usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/LibertineMathMI.
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
@@ -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
blic/newtx/NewTXMI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/n
ewtx/txsys.pfb>
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)

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
(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,