saving current changes

This commit is contained in:
2025-06-03 01:09:14 +01:00
parent 0bd28d57d1
commit 9c7df8ff84
12 changed files with 435 additions and 452 deletions

Binary file not shown.

View File

@@ -1,4 +1,6 @@
* Malloc
Not needed:
The provided pseudocode outlines a modified implementation
of jemallocs memory mapping routines, adapted to work with
a custom malloc(sz) allocator. Instead of relying on traditional

View File

@@ -17,112 +17,16 @@
\citation{Shadow_superpages}
\citation{DirectSegment}
\citation{karakostas_redundant_2015}
\citation{woodruff_cheri_2019}
\citation{chen_flexpointer_2023}
\citation{karakostas_redundant_2015}
\citation{woodruff_cheri_2019}
\@writefile{toc}{\contentsline {section}{\numberline {2}Related work}{2}{section.2}\protected@file@percent }
\newlabel{sec:org0e192da}{{2}{2}{Related work}{section.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Huge Pages}{2}{subsection.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Direct Segment}{2}{subsection.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Redundant Memory Mapping (RMM)}{2}{subsection.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}CHERI}{2}{subsection.2.4}\protected@file@percent }
\newlabel{sec:orgbf2eaac}{{2.4}{2}{CHERI}{subsection.2.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}CHERI CC}{2}{subsection.2.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}FlexPointer}{2}{subsection.2.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}CHERI}{2}{subsection.2.5}\protected@file@percent }
\newlabel{sec:orgbf2eaac}{{2.5}{2}{CHERI}{subsection.2.5}{}}
\citation{woodruff_cheri_2019}
\citation{chen_flexpointer_2023}
\citation{karakostas_redundant_2015}
\citation{woodruff_cheri_2019}
\citation{woodruff_cheri_2019}
\@writefile{toc}{\contentsline {section}{\numberline {3}Fat Address Translations}{3}{section.3}\protected@file@percent }
\newlabel{sec:FatPointerTranslations}{{3}{3}{Fat Address Translations}{section.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces High overview architecture}}{3}{figure.caption.3}\protected@file@percent }
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{fig:HighOverviewArchitecture}{{1}{3}{High overview architecture}{figure.caption.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Encoding Ranges as Bounds to the Pointer}{3}{subsection.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4}128 bit compressed bounds}{3}{section.4}\protected@file@percent }
\newlabel{sec:128bitCompressedBounds}{{4}{3}{128 bit compressed bounds}{section.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{3}{subsection.4.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5}Memory allocator design}{3}{section.5}\protected@file@percent }
\newlabel{sec:MemoryAllocator}{{5}{3}{Memory allocator design}{section.5}{}}
\citation{jemalloc}
\citation{cheribsd}
\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Malloc implementation}}{4}{algorithm.1}\protected@file@percent }
\newlabel{alg:malloc}{{1}{4}{Malloc implementation}{algorithm.1}{}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {2}{\ignorespaces Free implementation}}{4}{algorithm.2}\protected@file@percent }
\newlabel{alg:free}{{2}{4}{Free implementation}{algorithm.2}{}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces Init alloc function to create a initial 1 GB huge page}}{4}{algorithm.3}\protected@file@percent }
\newlabel{alg:initAlloc}{{3}{4}{Init alloc function to create a initial 1 GB huge page}{algorithm.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {6}Embedding FAT allocator inside Jemalloc}{4}{section.6}\protected@file@percent }
\@writefile{loa}{\contentsline {algorithm}{\numberline {4}{\ignorespaces Modified Jemalloc Memory Mapping Routines}}{4}{algorithm.4}\protected@file@percent }
\newlabel{alg:JemallocMalloc}{{4}{4}{Modified Jemalloc Memory Mapping Routines}{algorithm.4}{}}
\citation{Benchmark}
\citation{Morello}
\citation{BenchmarkABI}
\citation{PerformanceCounter}
\citation{singh1993}
\citation{holt1995}
\newlabel{alg:JemallocFree}{{\caption@xref {alg:JemallocFree}{ on input line 827}}{5}{Embedding FAT allocator inside Jemalloc}{algorithm.4}{}}
\@writefile{loa}{\contentsline {algorithm}{\numberline {5}{\ignorespaces os\_pages\_unmap}}{5}{algorithm.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {7}Evaluation}{5}{section.7}\protected@file@percent }
\newlabel{sec:Evaluation}{{7}{5}{Evaluation}{section.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Experiment setup}{5}{subsection.7.1}\protected@file@percent }
\newlabel{sec:Experiment}{{7.1}{5}{Experiment setup}{subsection.7.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Benchmarks}{5}{subsection.7.2}\protected@file@percent }
\newlabel{sec:Micro}{{7.2.1}{5}{Micro benchmark}{subsubsection.7.2.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Micro benchmark}{5}{subsubsection.7.2.1}\protected@file@percent }
\newlabel{sec:Macro}{{7.2.2}{5}{Macro benchmark}{subsubsection.7.2.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.2}Macro benchmark}{5}{subsubsection.7.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Results}{5}{subsection.7.3}\protected@file@percent }
\newlabel{sec:Results}{{7.3}{5}{Results}{subsection.7.3}{}}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces ARM performance counters}}{6}{table.caption.4}\protected@file@percent }
\newlabel{tab:org246a883}{{1}{6}{ARM performance counters}{table.caption.4}{}}
\newlabel{table:ARMPerf}{{1}{6}{ARM performance counters}{table.caption.4}{}}
\newlabel{fig:dtlb-walk}{{2a}{7}{DTLB Walks}{figure.caption.5}{}}
\newlabel{sub@fig:dtlb-walk}{{a}{7}{DTLB Walks}{figure.caption.5}{}}
\newlabel{fig:l1tlb-reads}{{2b}{7}{L1 TLB Reads}{figure.caption.5}{}}
\newlabel{sub@fig:l1tlb-reads}{{b}{7}{L1 TLB Reads}{figure.caption.5}{}}
\newlabel{fig:l1tlb-refill}{{2c}{7}{L1 TLB Refill}{figure.caption.5}{}}
\newlabel{sub@fig:l1tlb-refill}{{c}{7}{L1 TLB Refill}{figure.caption.5}{}}
\newlabel{fig:l2tlb-reads}{{2d}{7}{L2 TLB Reads}{figure.caption.5}{}}
\newlabel{sub@fig:l2tlb-reads}{{d}{7}{L2 TLB Reads}{figure.caption.5}{}}
\newlabel{fig:ll-cache-rd}{{2e}{7}{LL Cache Reads}{figure.caption.5}{}}
\newlabel{sub@fig:ll-cache-rd}{{e}{7}{LL Cache Reads}{figure.caption.5}{}}
\newlabel{fig:wallclock}{{2f}{7}{Wall Clock Time}{figure.caption.5}{}}
\newlabel{sub@fig:wallclock}{{f}{7}{Wall Clock Time}{figure.caption.5}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Benchmarks comparing the percentage difference between FAT.}}{7}{figure.caption.5}\protected@file@percent }
\newlabel{fig:benchmarks-group}{{2}{7}{Benchmarks comparing the percentage difference between FAT}{figure.caption.5}{}}
\bibstyle{unsrtnat}
\bibdata{paperReferences}
\bibcite{TLBHierarchy}{{1}{2013}{{Lustig et~al.}}{{Lustig, Bhattacharjee, and Martonosi}}}
\bibcite{mittal_survey_2017}{{2}{}{{Mittal}}{{}}}
\bibcite{panwar_hawkeye_2019}{{3}{}{{Panwar et~al.}}{{Panwar, Bansal, and Gopinath}}}
\bibcite{woodruff_cheri_2014}{{4}{}{{Woodruff et~al.}}{{Woodruff, Watson, Chisnall, Moore, Anderson, Davis, Laurie, Neumann, Norton, and Roe}}}
\bibcite{woodruff_cheri_2019}{{5}{}{{Woodruff et~al.}}{{Woodruff, Joannou, Xia, Fox, Norton, Chisnall, Davis, Gudka, Filardo, Markettos, Roe, Neumann, Watson, and Moore}}}
\bibcite{TLBReach}{{6}{2014}{{Pham et~al.}}{{Pham, Bhattacharjee, Eckert, and Loh}}}
\bibcite{THP}{{7}{2003}{{Navarro et~al.}}{{Navarro, Iyer, Druschel, and Cox}}}
\bibcite{IntelItanium}{{8}{2003}{{Cornea et~al.}}{{Cornea, Harrison, and Tang}}}
\bibcite{Shadow_superpages}{{9}{2001}{{Park and Park}}{{}}}
\bibcite{DirectSegment}{{10}{2013}{{Basu et~al.}}{{Basu, Gandhi, Chang, Hill, and Swift}}}
\bibcite{karakostas_redundant_2015}{{11}{}{{Karakostas et~al.}}{{Karakostas, Gandhi, Ayar, Cristal, Hill, {McKinley}, Nemirovsky, Swift, and Ünsal}}}
\bibcite{chen_flexpointer_2023}{{12}{2023}{{Chen et~al.}}{{Chen, Tong, Yang, Yi, and Cheng}}}
\@writefile{toc}{\contentsline {subsection}{\numberline {7.4}Analysis}{8}{subsection.7.4}\protected@file@percent }
\newlabel{sec:Analysis}{{7.4}{8}{Analysis}{subsection.7.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {8}Conclusion}{8}{section.8}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{References}{8}{section*.7}\protected@file@percent }
\bibcite{jemalloc}{{13}{2006}{{Evans}}{{}}}
\bibcite{cheribsd}{{14}{}{{che}}{{}}}
\bibcite{Benchmark}{{15}{}{{Ben}}{{}}}
\bibcite{Morello}{{16}{}{{Mor}}{{}}}
\bibcite{BenchmarkABI}{{17}{2023}{{Watson et~al.}}{{Watson, Clarke, Sewell, Woodruff, Moore, Barnes, Grisenthwaite, Stacer, Baranga, and Richardson}}}
\bibcite{PerformanceCounter}{{18}{}{{Per}}{{}}}
\bibcite{singh1993}{{19}{1993}{{Singh}}{{}}}
\bibcite{holt1995}{{20}{1995}{{Holt and Singh}}{{}}}
\newlabel{tocindent-1}{0pt}
\newlabel{tocindent0}{0pt}
\newlabel{tocindent1}{4.185pt}
\newlabel{tocindent2}{10.34999pt}
\newlabel{tocindent3}{18.198pt}
\newlabel{tocindent4}{0pt}
\newlabel{tocindent5}{0pt}
\newlabel{TotPages}{{9}{9}{}{page.9}{}}
\gdef\svg@ink@ver@settings{{\m@ne }{inkscape}{\m@ne }}
\gdef \@abspage@last{9}

View File

@@ -1,4 +1,4 @@
\begin{thebibliography}{20}
\begin{thebibliography}{21}
\providecommand{\natexlab}[1]{#1}
\providecommand{\url}[1]{\texttt{#1}}
\expandafter\ifx\csname urlstyle\endcsname\relax
@@ -127,6 +127,10 @@ Dongwei Chen, Dong Tong, Chun Yang, Jiangfang Yi, and Xu~Cheng.
\newblock \doi{10.1145/3579854}.
\newblock URL \url{https://doi.org/10.1145/3579854}.
\bibitem[Evans()]{evans_scalable_nodate}
Jason Evans.
\newblock A {Scalable} {Concurrent} malloc(3) {Implementation} for {FreeBSD}.
\bibitem[Evans(2006)]{jemalloc}
Jason Evans.
\newblock A scalable concurrent malloc (3) implementation for freebsd.

View File

@@ -22,49 +22,52 @@ Warning--empty journal in woodruff_cheri_2019
Warning--empty year in woodruff_cheri_2019
Warning--empty year in karakostas_redundant_2015
Warning--empty year in karakostas_redundant_2015
Warning--empty journal in evans_scalable_nodate
Warning--empty year in evans_scalable_nodate
Warning--empty year in evans_scalable_nodate
Warning--empty year in cheribsd
Warning--empty year in Benchmark
Warning--empty year in Morello
Warning--empty year in PerformanceCounter
You've used 20 entries,
You've used 21 entries,
2481 wiz_defined-function locations,
700 strings with 9907 characters,
and the built_in function-call counts, 8624 in all, are:
= -- 721
> -- 504
< -- 10
+ -- 195
- -- 154
* -- 742
:= -- 1373
add.period$ -- 95
call.type$ -- 20
change.case$ -- 39
chr.to.int$ -- 19
cite$ -- 39
duplicate$ -- 406
empty$ -- 728
format.name$ -- 174
if$ -- 1835
702 strings with 9994 characters,
and the built_in function-call counts, 8880 in all, are:
= -- 740
> -- 511
< -- 11
+ -- 199
- -- 156
* -- 757
:= -- 1413
add.period$ -- 97
call.type$ -- 21
change.case$ -- 41
chr.to.int$ -- 20
cite$ -- 43
duplicate$ -- 424
empty$ -- 756
format.name$ -- 177
if$ -- 1887
int.to.chr$ -- 2
int.to.str$ -- 21
missing$ -- 14
newline$ -- 140
num.names$ -- 48
pop$ -- 172
int.to.str$ -- 22
missing$ -- 15
newline$ -- 144
num.names$ -- 51
pop$ -- 186
preamble$ -- 1
purify$ -- 20
purify$ -- 21
quote$ -- 0
skip$ -- 250
skip$ -- 259
stack$ -- 0
substring$ -- 283
swap$ -- 89
substring$ -- 285
swap$ -- 90
text.length$ -- 5
text.prefix$ -- 0
top$ -- 0
type$ -- 140
warning$ -- 15
while$ -- 49
type$ -- 147
warning$ -- 18
while$ -- 51
width$ -- 0
write$ -- 321
(There were 19 warnings)
write$ -- 330
(There were 22 warnings)

View File

@@ -1,13 +1,13 @@
# Fdb version 4
["bibtex paper"] 1748542391.49982 "paper.aux" "paper.bbl" "paper" 1748542393.50586 0
"./paperReferences.bib" 1746971882.78313 50975 d23cf0e29e30a59879e0a43f7bd63014 ""
["bibtex paper"] 1748842670.01173 "paper.aux" "paper.bbl" "paper" 1748842671.97694 0
"./paperReferences.bib" 1748637417.99093 52057 3d2940a76dd1a0b9b759a973d6b9bd98 ""
"/usr/local/texlive/2025/texmf-dist/bibtex/bst/natbib/unsrtnat.bst" 1233624470 24550 a41a6405f4de768c43e871d9fbce2bc8 ""
"paper.aux" 1748542393.18687 9430 f2d638c91d61664cb189252cfa34b0aa "pdflatex"
"paper.aux" 1748842671.6599 9959 d12f00f8edff5ca070a8389be00e146d "pdflatex"
(generated)
"paper.bbl"
"paper.blg"
(rewritten before read)
["pdflatex"] 1748542391.64154 "paper.tex" "paper.pdf" "paper" 1748542393.506 0
["pdflatex"] 1748842670.10231 "paper.tex" "paper.pdf" "paper" 1748842671.97708 0
"/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc" 1558214095 7693 0f2dce6d313c82989ec3a67fc24df2a0 ""
"/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc" 1490131464 2921 8ca0eb0831f9bc5da080d3697cfe67bf ""
"/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_76gpa5.enc" 1490131464 2933 9ad527ce78d7c5fa0a642dead095f172 ""
@@ -254,10 +254,10 @@
"diagram/benchmarks-group/bargraph-large-ll-cache-rd.png" 1747839169.49301 52855 22a83d7bc1ca7dfa1c47f31936824ff6 ""
"diagram/benchmarks-group/bargraph-large-wallclock.png" 1747839751.63939 55378 1da56901d20a39a645beca6272b36eaf ""
"diagram/drawing_png.png" 1748297803.36134 22858 0c9dbeaa2b2a2c8d4588aeb499d141da ""
"paper.aux" 1748542393.18687 9430 f2d638c91d61664cb189252cfa34b0aa "pdflatex"
"paper.bbl" 1748542391.63845 8420 47d3ab73b727b7165b20d774bb45ad1a "bibtex paper"
"paper.out" 1748542393.18782 3482 dfb5cd2e0b64721769d9bbb90a3777d7 "pdflatex"
"paper.tex" 1748537227.43593 98923 e8aacff771f33802f685e767cf224fa6 ""
"paper.aux" 1748842671.6599 9959 d12f00f8edff5ca070a8389be00e146d "pdflatex"
"paper.bbl" 1748842670.09843 8553 1083156a0ae40396808b10750dbef288 "bibtex paper"
"paper.out" 1748842671.6608 4043 e0a4be03bd5f2bf273294833454e3065 "pdflatex"
"paper.tex" 1748842619.98325 104798 e8075114700ae6dcab70ce3b2e43c20d ""
(generated)
"paper.aux"
"paper.log"

View File

@@ -549,21 +549,24 @@ INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txsys.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txex-bar.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTB-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTB-tlf-t1--base.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-ts1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinBiolinumT-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumT-tlf-t1--base.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineT-tlf-ts1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-ts1--base.tfm
INPUT ./diagram/drawing_png.png
INPUT ./diagram/drawing_png.png
INPUT ./diagram/drawing_png.png
INPUT ./diagram/drawing_png.png
INPUT ./diagram/drawing_png.png
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTI-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1--base.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-sc-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineT-tlf-t1.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinLibertineTI-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinLibertineTI-tlf-t1--base.tfm
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
INPUT /usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
@@ -584,38 +587,38 @@ INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/LibertineMathRM.
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaSTbb.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/newtx/txmiaX.tfm
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumTI-tlf-t1.tfm
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT /usr/local/texlive/2025/texmf-dist/fonts/vf/public/libertine/LinBiolinumTI-tlf-t1.vf
INPUT /usr/local/texlive/2025/texmf-dist/fonts/tfm/public/libertine/LinBiolinumTI-tlf-t1--base.tfm
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-dtlb-walk.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l1tlb-refill.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-l2tlb-reads.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./diagram/benchmarks-group/bargraph-large-wallclock.png
INPUT ./paper.bbl
INPUT ./paper.bbl
INPUT paper.bbl

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) 29 MAY 2025 19:13
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 3 JUN 2025 01:04
entering extended mode
\write18 enabled.
%&-line parsing enabled.
@@ -1422,61 +1422,68 @@ LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 9.0pt on input line 376.
LaTeX Warning: Reference `sec:JemallocFATAllocator' on page 1 undefined on inpu
t line 388.
Underfull \vbox (badness 10000) has occurred while \output is active []
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 6.0pt on input line 393.
(Font) scaled to size 6.0pt on input line 389.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 36.135pt on input line 393.
LaTeX Font Info: Calculating math sizes for size <36.135> on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Calculating math sizes for size <36.135> on input line 389.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 36.135pt on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 26.37839pt on input line 393.
(Font) scaled to size 26.37839pt on input line 389.
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 19.87434pt on input line 393.
(Font) scaled to size 19.87434pt on input line 389.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 36.135pt on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 26.37839pt on input line 393.
(Font) scaled to size 26.37839pt on input line 389.
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
(Font) scaled to size 19.87434pt on input line 393.
(Font) scaled to size 19.87434pt on input line 389.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 36.135pt on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 26.37839pt on input line 393.
(Font) scaled to size 26.37839pt on input line 389.
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
(Font) scaled to size 19.87434pt on input line 393.
(Font) scaled to size 19.87434pt on input line 389.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 36.135pt on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 26.37839pt on input line 393.
(Font) scaled to size 26.37839pt on input line 389.
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
(Font) scaled to size 19.87434pt on input line 393.
(Font) scaled to size 19.87434pt on input line 389.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 36.135pt on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 26.37839pt on input line 393.
(Font) scaled to size 26.37839pt on input line 389.
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
(Font) scaled to size 19.87434pt on input line 393.
(Font) scaled to size 19.87434pt on input line 389.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 36.135pt on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 26.37839pt on input line 393.
(Font) scaled to size 26.37839pt on input line 389.
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
(Font) scaled to size 19.87434pt on input line 393.
(Font) scaled to size 19.87434pt on input line 389.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 36.135pt on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 26.37839pt on input line 393.
(Font) scaled to size 26.37839pt on input line 389.
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
(Font) scaled to size 19.87434pt on input line 393.
(Font) scaled to size 19.87434pt on input line 389.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 36.135pt on input line 393.
(Font) scaled to size 36.135pt on input line 389.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 26.37839pt on input line 393.
(Font) scaled to size 26.37839pt on input line 389.
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
(Font) scaled to size 19.87434pt on input line 393.
(Font) scaled to size 19.87434pt on input line 389.
[1.1{/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map}{/usr
/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_76gpa5.enc}{/usr/
local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/l
@@ -1485,233 +1492,185 @@ ocal/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_naooyc.enc}
{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_nh77jq.enc}{
/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc}]
LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 9.0pt on input line 468.
Underfull \vbox (badness 1895) has occurred while \output is active []
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be
(Font) scaled to size 9.0pt on input line 501.
(Font) scaled to size 9.0pt on input line 498.
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be
(Font) scaled to size 7.0pt on input line 501.
(Font) scaled to size 7.0pt on input line 498.
[2.2]
<diagram/drawing_png.png, id=146, 746.79pt x 1055.945pt>
File: diagram/drawing_png.png Graphic file (type png)
<use diagram/drawing_png.png>
Package pdftex.def Info: diagram/drawing_png.png used on input line 528.
(pdftex.def) Requested size: 253.14749pt x 357.93703pt.
Package svg Info: Last page of `./svg-inkscape/drawing_svg-tex.pdf' is 8 on inp
ut line 541.
(./svg-inkscape/drawing_svg-tex.pdf_tex
<./svg-inkscape/drawing_svg-tex.pdf, id=161, page=1, 597.50786pt x 845.04686pt>
Overfull \hbox (12.0pt too wide) in paragraph at lines 528--529
[][]
[]
File: ./svg-inkscape/drawing_svg-tex.pdf Graphic file (type pdf)
<use ./svg-inkscape/drawing_svg-tex.pdf, page 1>
Package pdftex.def Info: ./svg-inkscape/drawing_svg-tex.pdf , page1 used on inp
ut line 56.
(pdftex.def) Requested size: 192.91872pt x 272.84465pt.
<./svg-inkscape/drawing_svg-tex.pdf, id=162, page=2, 597.50786pt x 845.04686pt>
File: ./svg-inkscape/drawing_svg-tex.pdf Graphic file (type pdf)
<use ./svg-inkscape/drawing_svg-tex.pdf, page 2>
Package pdftex.def Info: ./svg-inkscape/drawing_svg-tex.pdf , page2 used on inp
ut line 64.
(pdftex.def) Requested size: 192.91872pt x 272.84465pt.
<./svg-inkscape/drawing_svg-tex.pdf, id=163, page=3, 597.50786pt x 845.04686pt>
Class acmart Warning: A possible image without description on input line 532.
File: ./svg-inkscape/drawing_svg-tex.pdf Graphic file (type pdf)
<use ./svg-inkscape/drawing_svg-tex.pdf, page 3>
Package pdftex.def Info: ./svg-inkscape/drawing_svg-tex.pdf , page3 used on inp
ut line 74.
(pdftex.def) Requested size: 192.91872pt x 272.84465pt.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
(Font) scaled to size 9.0pt on input line 534.
Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on in
put line 689.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/sc' will be
(Font) scaled to size 9.0pt on input line 692.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 6.6pt on input line 693.
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
(Font) scaled to size 5.5pt on input line 693.
[3.3 <./diagram/drawing_png.png>]
LaTeX Font Info: Trying to load font information for T1+zi4 on input line 77
7.
(/usr/local/texlive/2025/texmf-dist/tex/latex/inconsolata/t1zi4.fd
File: t1zi4.fd 2018/01/14 T1/zi4 (Inconsolata)
)
LaTeX Font Info: Font shape `T1/zi4/m/n' will be
(Font) scaled to size 9.0pt on input line 777.
Package microtype Info: Loading generic protrusion settings for font family
(microtype) `zi4' (encoding: T1).
(microtype) For optimal results, create family-specific settings.
(microtype) See the microtype manual for details.
Package caption Warning: \label without proper reference on input line 827.
See the caption package documentation for explanation.
LaTeX Warning: Reference `alg:JemallocFree' on page 4 undefined on input line 8
41.
Overfull \hbox (28.5318pt too wide) in paragraph at lines 839--842
[]\T1/LinuxLibertineT-TLF/m/n/9 (-20) The only func-tion re-quired to be re-pla
ced with Free was os_pages_unmap
[]
Overfull \hbox (12.4271pt too wide) in paragraph at lines 845--848
\T1/LinuxLibertineT-TLF/m/n/9 (-20) con-ducted. Je-mal-loc is the de-fault mem-
ory al-lo-ca-tor for CHERIBSD [[]].
[]
[4.4{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_ncsllp.e
nc}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.en
c}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc}]
Underfull \vbox (badness 5681) has occurred while \output is active []
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be
(Font) scaled to size 9.0pt on input line 963.
<diagram/benchmarks-group/bargraph-large-dtlb-walk.png, id=193, 1011.78pt x 578
.16pt>
File: diagram/benchmarks-group/bargraph-large-dtlb-walk.png Graphic file (type
png)
<use diagram/benchmarks-group/bargraph-large-dtlb-walk.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-dtlb-walk.png
used on input line 1050.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-l1tlb-reads.png, id=194, 1011.78pt x 5
78.16pt>
File: diagram/benchmarks-group/bargraph-large-l1tlb-reads.png Graphic file (typ
e png)
<use diagram/benchmarks-group/bargraph-large-l1tlb-reads.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l1tlb-reads.pn
g used on input line 1055.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-l1tlb-refill.png, id=195, 1011.78pt x
578.16pt>
File: diagram/benchmarks-group/bargraph-large-l1tlb-refill.png Graphic file (ty
pe png)
<use diagram/benchmarks-group/bargraph-large-l1tlb-refill.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l1tlb-refill.p
ng used on input line 1063.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-l2tlb-reads.png, id=196, 1011.78pt x 5
78.16pt>
File: diagram/benchmarks-group/bargraph-large-l2tlb-reads.png Graphic file (typ
e png)
<use diagram/benchmarks-group/bargraph-large-l2tlb-reads.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-l2tlb-reads.pn
g used on input line 1068.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-ll-cache-rd.png, id=197, 1011.78pt x 5
78.16pt>
File: diagram/benchmarks-group/bargraph-large-ll-cache-rd.png Graphic file (typ
e png)
<use diagram/benchmarks-group/bargraph-large-ll-cache-rd.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-ll-cache-rd.pn
g used on input line 1076.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
<diagram/benchmarks-group/bargraph-large-wallclock.png, id=198, 1011.78pt x 578
.16pt>
File: diagram/benchmarks-group/bargraph-large-wallclock.png Graphic file (type
png)
<use diagram/benchmarks-group/bargraph-large-wallclock.png>
Package pdftex.def Info: diagram/benchmarks-group/bargraph-large-wallclock.png
used on input line 1081.
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
Class acmart Warning: A possible image without description on input line 1089.
[5.5]
Underfull \vbox (badness 10000) has occurred while \output is active []
[6.6]
Underfull \vbox (badness 10000) has occurred while \output is active []
Underfull \vbox (badness 10000) has occurred while \output is active []
[7.7 <./diagram/benchmarks-group/bargraph-large-dtlb-walk.png> <./diagram/bench
marks-group/bargraph-large-l1tlb-reads.png> <./diagram/benchmarks-group/bargrap
h-large-l1tlb-refill.png> <./diagram/benchmarks-group/bargraph-large-l2tlb-read
s.png> <./diagram/benchmarks-group/bargraph-large-ll-cache-rd.png> <./diagram/b
enchmarks-group/bargraph-large-wallclock.png>]
Underfull \vbox (badness 10000) has occurred while \output is active []
(./paper.bbl
[8.8]
Underfull \hbox (badness 2443) in paragraph at lines 141--145
[]\T1/LinuxLibertineT-TLF/m/n/7 (+20) CHERI-allocator/benchmarks/benchmarks/Str
essTestMalloc/glibc-bench.c at
[]
)
Class acmart Warning: Some images may lack descriptions.
Class acmart Warning: ACM keywords are mandatory for papers over two pages.
Class acmart Warning: CCS concepts are mandatory for papers over two pages.
Overfull \vbox (1.152pt too high) has occurred while \output is active []
(/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/se-pdfdoc.def
File: se-pdfdoc.def 2019/11/29 v1.12 stringenc: PDFDocEncoding
)
(/usr/local/texlive/2025/texmf-dist/tex/generic/stringenc/se-utf8.def
File: se-utf8.def 2019/11/29 v1.12 stringenc: UTF-8
) [9.9]
(./paper.aux)
***********
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
***********
LaTeX Warning: There were undefined references.
Package rerunfilecheck Info: File `paper.out' has not changed.
(rerunfilecheck) Checksum: DFB5CD2E0B64721769D9BBB90A3777D7;3482.
)
! Missing } inserted.
<inserted text>
}
l.75 ...age(1GB);\\ }\\ ...\\} \end{tabular}}}}
%
? x
Here is how much of TeX's memory you used:
26499 strings out of 473190
451169 string characters out of 5715801
1043466 words of memory out of 5000000
48524 multiletter control sequences out of 15000+600000
778914 words of font info for 474 fonts, out of 8000000 for 9000
26080 strings out of 473190
441394 string characters out of 5715801
1014480 words of memory out of 5000000
48269 multiletter control sequences out of 15000+600000
741086 words of font info for 389 fonts, out of 8000000 for 9000
1302 hyphenation exceptions out of 8191
94i,17n,131p,1002b,797s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/local/texlive/2025/texmf-dist/fonts/type1/public/inconsolata/Inconsolat
a-zi4r.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/newtx/Liberti
neMathMI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/L
inBiolinumT.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertin
e/LinBiolinumTB.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libe
rtine/LinBiolinumTI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/
libertine/LinLibertineT.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/pub
lic/libertine/LinLibertineTB.pfb></usr/local/texlive/2025/texmf-dist/fonts/type
1/public/libertine/LinLibertineTI.pfb></usr/local/texlive/2025/texmf-dist/fonts
/type1/public/newtx/NewTXMI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1
/public/newtx/txmiaX.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public
/newtx/txsys.pfb>
Output written on paper.pdf (9 pages, 820640 bytes).
PDF statistics:
339 PDF objects out of 1000 (max. 8388607)
283 compressed objects within 3 object streams
63 named destinations out of 1000 (max. 500000)
119528 words of extra memory for PDF output out of 128383 (max. 10000000)
94i,16n,131p,1002b,746s stack positions out of 10000i,1000n,20000p,200000b,200000s
pdfTeX warning (dest): name{cite.chen_flexpointer_2023} has been referenced but
does not exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.karakostas_redundant_2015} has been referenced
but does not exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.DirectSegment} has been referenced but does no
t exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.Shadow_superpages} has been referenced but doe
s not exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.IntelItanium} has been referenced but does not
exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.THP} has been referenced but does not exist, r
eplaced by a fixed one
pdfTeX warning (dest): name{cite.TLBReach} has been referenced but does not exi
st, replaced by a fixed one
pdfTeX warning (dest): name{cite.woodruff_cheri_2019} has been referenced but d
oes not exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.woodruff_cheri_2014} has been referenced but d
oes not exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.panwar_hawkeye_2019} has been referenced but d
oes not exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.mittal_survey_2017} has been referenced but do
es not exist, replaced by a fixed one
pdfTeX warning (dest): name{cite.TLBHierarchy} has been referenced but does not
exist, replaced by a fixed one
pdfTeX warning (dest): name{page.9} has been referenced but does not exist, rep
laced by a fixed one
pdfTeX warning (dest): name{section*.7} has been referenced but does not exist,
replaced by a fixed one
pdfTeX warning (dest): name{section.8} has been referenced but does not exist,
replaced by a fixed one
pdfTeX warning (dest): name{subsection.7.4} has been referenced but does not ex
ist, replaced by a fixed one
pdfTeX warning (dest): name{subsection.7.3} has been referenced but does not ex
ist, replaced by a fixed one
pdfTeX warning (dest): name{subsection.7.2} has been referenced but does not ex
ist, replaced by a fixed one
pdfTeX warning (dest): name{subsection.7.1} has been referenced but does not ex
ist, replaced by a fixed one
pdfTeX warning (dest): name{section.7} has been referenced but does not exist,
replaced by a fixed one
pdfTeX warning (dest): name{subsection.6.2} has been referenced but does not ex
ist, replaced by a fixed one
pdfTeX warning (dest): name{subsection.6.1} has been referenced but does not ex
ist, replaced by a fixed one
pdfTeX warning (dest): name{section.6} has been referenced but does not exist,
replaced by a fixed one
pdfTeX warning (dest): name{section.5} has been referenced but does not exist,
replaced by a fixed one
pdfTeX warning (dest): name{subsection.4.1} has been referenced but does not ex
ist, replaced by a fixed one
pdfTeX warning (dest): name{section.4} has been referenced but does not exist,
replaced by a fixed one
pdfTeX warning (dest): name{subsection.3.1} has been referenced but does not ex
ist, replaced by a fixed one
pdfTeX warning (dest): name{section.3} has been referenced but does not exist,
replaced by a fixed one
pdfTeX warning (dest): name{subsection.2.6} has been referenced but does not ex
ist, replaced by a fixed one
</usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinBiolinumT.p
fb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinBiolinum
TB.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/LinLibe
rtineT.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertine/Lin
LibertineTB.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/libertin
e/LinLibertineTI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1/public/new
tx/txsys.pfb>
Output written on paper.pdf (2 pages, 354851 bytes).
PDF statistics:
210 PDF objects out of 1000 (max. 8388607)
177 compressed objects within 2 object streams
41 named destinations out of 1000 (max. 500000)
104673 words of extra memory for PDF output out of 106986 (max. 10000000)

Binary file not shown.

View File

@@ -60,7 +60,7 @@
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{caption}
\usepackage{svg}
\usepackage{graphicx}
\lstset{basicstyle=\small\ttfamily,columns=fullflexible}
@@ -252,7 +252,7 @@
The contribution is an alternative approach by exploiting capability-based addressing in the
CHERI architecture. This paper presents a new memory allocator called Fat Address Translations (FAT) which associates capabilities with memory pointers by integrating
block-based allocations within huge pages. The FAT allocator when ran independently and embedded inside Jemalloc reduces walking the TLB hierarchy by upto 99%, which leads to decreasing runtimes
block-based allocations within huge pages. The FAT allocator when ran independently and embedded inside Jemalloc reduces walking the TLB hierarchy by upto 90\%, which leads to decreasing runtimes
for memory read and write intensive applications.
\end{abstract}
@@ -376,13 +376,16 @@ memory allocations by emulating block allocations on physically contiguous memor
\item \textbf{FAT Addresses Translations}: Introduces FAT that include memory bounds, allowing
efficient tracking and management of physically contiguous memory regions (Section ~\ref{sec:FatPointerTranslations}).
\item \textbf{CHERIs Capability-based Optimisation}: Demonstrates how CHERI's architecture can be
\item \textbf{CHERI's Capability-based Optimisation}: Demonstrates how CHERI's architecture can be
used to optimise memory allocation by encoding memory bounds directly within pointers, reducing TLB reliance
(Section ~\ref{sec:128bitCompressedBounds}).
\item \textbf{Memory Allocation Algorithms}: Provides an algorithm for allocating, freeing
\item \textbf{Memory Allocation Algorithms (FAT allocator)}: Provides an algorithm for allocating, freeing
physically contiguous memory , and integrating huge pages with CHERI's capability-based bounds for enhanced memory management
(Section ~\ref{sec:MemoryAllocator}).
\item \textbf{Modified Jemalloc Memory Mapping with FAT allocator}: Modification to Jemalloc with the FAT allocator to support physically contiguous
memory allocation using a block-based strategy with capability-based addressing (Section ~\ref{sec:JemallocFATAllocator}).
\end{itemize}
Through evaluating micro and macro benchmarks, FAT though the use of CHERI's capabilities and huge pages demonstrates the allocator's ability
@@ -456,6 +459,15 @@ The RTLB functions as a fully associative search structure ensuring
that most last-level TLB misses are handled efficiently by range mapping which
reduces the need for costly page table walks.
\subsection{FlexPointer}
The key insight behind FlexPointer~\cite{chen_flexpointer_2023} is that large memory objects are relatively uncommon. This allows memory ranges to be constructed around
them and assigned unique identifiers. These range IDs are embedded within the unused bits of pointers, enabling direct indexing of the range
TLB and simplifying its design. Since the range ID is unaffected by address generation, range lookups can occur earlier in the pipeline,
concurrently with address computation. Simulation results show that FlexPointer significantly reduces L1 TLB misses and the need for page walks
in a range of memory-intensive workloads. When compared with a traditional 4KB-page system, FlexPointer delivers an average performance improvement
of 14\%, with peak gains of up to 2.8×, and introduces no performance regressions in less demanding scenarios.
\subsection{CHERI}
\label{sec:orgbf2eaac}
% CHERI extends conventional processor
@@ -524,19 +536,38 @@ in this implementation is the use of range addresses with CHERI CC~\cite{woodruf
% mitigating issues related to memory fragmentation.
% \end{itemize}
\begin{figure}[h]
\includegraphics[width=0.5\textwidth]{diagram/drawing_png.png}
\begin{figure}[ht]
\centering
\includesvg[width=0.8\linewidth]{diagram/drawing.svg}
\caption{High overview architecture}
\label{fig:HighOverviewArchitecture}
% \end{minipage}
\end{figure}
Figure \ref{fig:HighOverviewArchitecture} illustrates a comparison between standard memory allocation (\textit{malloc}) and the proposed FAT method. The standard approach involves a C program interacting with a custom allocator which uses 48-bit
virtual addresses and the TLB hierarchy (L1, L2 and L3 cache) to achieve non-contiguous allocation in physical memory.
This typically results in more TLB entries and increased TLB misses increasing the reasoning to have more TLB walks.
In contrast, the FAT method employs a custom allocator leveraging
physically contiguous memory by using CHERI to encode
bounds within the pointers and as shown in the figure \ref{fig:HighOverviewArchitecture}. There is almost no reliance on walking the TLB hierarchy.
% \begin{figure}[h]
% \includegraphics[width=0.5\textwidth]{diagram/drawing_png.png}
% \caption{High overview architecture}
% \label{fig:HighOverviewArchitecture}
% % \end{minipage}
% \end{figure}
% Figure \ref{fig:HighOverviewArchitecture} illustrates a high overview of the FAT allocator. The rectangular rectangle represents
% addresses in memory and the box from v1 to v100 represents a physically contiguous region of memory. The physically contiguous region of
% memory is normally allocated using huge pages. When malloc is called the Capability pointer is returned with meta data related to the bounds
% information encoded in the pointer. The bounds encoded in the pointer is reused for tracking memory blocks within a huge page. As shown this in
% turn reduces the TLB pressure.
Figure \ref{fig:HighOverviewArchitecture} illustrates a high-level overview of the FAT allocator. The rectangular box represents
addresses in memory, and the box from v1 to v100 represents a physically contiguous region of memory. This physically contiguous
region is typically allocated using huge pages. When malloc is called, a capability pointer is returned with metadata related to
the bounds information encoded within the pointer. The bounds encoded in the pointer are reused for tracking memory blocks within a
huge page. As shown, this in turn reduces TLB pressure.
% comparison between standard memory allocation (\textit{malloc}) and the proposed FAT method. The standard approach involves a C program interacting with a custom allocator which uses 48-bit
% virtual addresses and the TLB hierarchy (L1, L2 and L3 cache) to achieve non-contiguous allocation in physical memory.
% This typically results in more TLB entries and increased TLB misses increasing the reasoning to have more TLB walks.
% In contrast, the FAT method employs a custom allocator leveraging
% physically contiguous memory by using CHERI to encode
% bounds within the pointers and as shown in the figure \ref{fig:HighOverviewArchitecture}. There is almost no reliance on walking the TLB hierarchy.
% Figure \ref{fig:HighOverviewArchitecture} illustrates
% the methodology employed to use the CHERI
@@ -561,11 +592,18 @@ bounds within the pointers and as shown in the figure \ref{fig:HighOverviewArchi
% Integrating range bounds directly into FAT-pointers enables the CHERI architecture
% to enforce memory access restrictions at the pointer level thus allowing
% tracking of memory ranges on a pointer level.
Range is defined from work based on RMM~\cite{karakostas_redundant_2015} and FlexPointer~\cite{chen_flexpointer_2023}. In RMM a range refers to a contiguous region of memory
defined by a base address and a bound. This information is stored in a hardware managed table called Range Table
which is called when there is a L1 TLB miss. FlexPointer builds up on the work of RMM and stores the ID value between 48th bit
and 64th bit which is the value to check the range table on parallel to the L1 TLB lookup.
The FAT allocator builds up on the concept of range from RMM and FlexPointer. Instead of using a
hardware range table using CHERI range information can be encoded within a capability pointer.
A memory range in FAT has two points to track memory in physical contiguous space which
is the top and bottom. These two points are two virtual addresses and the range consists of
addresses that lie within this and refers to addresses allocated by invoking \textit{malloc}.
FAT memory ranges are established using
bounds encoded within the pointer, adhering to CHERI CC~\cite{woodruff_cheri_2019}.
bounds encoded within the pointer, adhering to CHERI CC~\cite{woodruff_cheri_2019} compression scheme.
% as referred in section ~\ref{sec:128bitCompressedBounds}.
% Figure \ref{fig:RangeOfMemory} illustrates a straightforward use-case in which the dark pink line represents a single
@@ -616,6 +654,11 @@ Instead of relying on fixed-size TLB entries with set page sizes (such as 4KB, 2
CC to define dynamic bounds based on the size requested at allocation time (e.g., during a \textit{malloc} call).
This approach offers a more flexible alternative to the traditional fixed-size TLB model.
This means that the default behavior of most allocators, such
as Jemalloc, would allow precise representation of bounds within
a FAT . These pointers can then be repurposed as memory ranges in custom memory allocators, offering a more flexible
alternative to fixed-size TLB entries.
% We use the CHERI CC
% bounds to be repurposed to encode dynamic sized addresses ranges.
% These pointers can then be repurposed as memory ranges
@@ -639,6 +682,12 @@ FAT is able to pre-allocate memory using huge pages and is able to mark smaller
using ranges by storing them as bounds within the pointer. Each of these memory ranges can be
called a block. Since there are numerous blocks inside a huge page, This allows for abbreviated block-based
memory patterns within physically contiguous memory.
By consolidating address translations into a single TLB entry,
this method cuts down on the overhead of managing many entries.
It also takes advantage of the bounds encoded within FAT
to track and access memory within physically contiguous memory.
% As demonstrated with the allocator
% implementation in section ~\ref{sec:MemoryAllocator}.
@@ -763,6 +812,7 @@ with page table management and enhances memory access which is critical for perf
applications and kernel-level operations.
\section{Embedding FAT allocator inside Jemalloc}
\label{sec:JemallocFATAllocator}
This section describes about the FAT allocator implementation (Section \ref{sec:MemoryAllocator}) embedded inside Jemalloc. The objective here is to describe the changes needed
for a block based allocator to use physically contigous memory with a block based strategy with the help of capability based addresses.
In the case of Jemalloc the only changes required was to replace the mmap with the \textit{malloc} function (Algorithm \ref{alg:malloc}) and
@@ -819,13 +869,29 @@ for munmap the \textit{free} function (Algorithm \ref{alg:free}).
\end{algorithmic}
\end{algorithm}
The only function required to be replaced with Malloc was os\_pages\_map,
pages\_map and pages\_commit\_impl as show in
algorithm \ref{alg:JemallocMalloc}.
\subsection{Mmap replaced with MALLOC}
The os\_pages\_map function (Algorithm~\ref{alg:JemallocMalloc}) simulates jemalloc's low-level page
mapping routine. It first checks if a specific address is
requested in case relevant to CheriABI where such behavior
is disallowed and returns NULL. It then allocates memory using the custom MALLOC(size) (Algorithm~\ref{alg:malloc}) function and validates
whether the returned pointer matches the requested address
if one was provided. If there's a mismatch, it unmaps calling FREE() (Algorithm~\ref{alg:free}) the
memory and returns NULL; otherwise, it returns the allocated
pointer.
This approach mentioned above is embedded inside jemalloc's strategy of managing memory through arenas and size classes.
In jemalloc, memory is divided into chunks, which are further subdivided into runs and regions to
handle allocations of various sizes efficiently. By aligning sizes and managing allocations within
predefined structures, jemalloc minimizes fragmentation~\cite{evans_scalable_nodate}.
% The only function required to be replaced with Malloc was os\_pages\_map,
% pages\_map and pages\_commit\_impl as show in
% algorithm \ref{alg:JemallocMalloc}.
\begin{algorithm}
\label{alg:JemallocFree}
\caption{os\_pages\_unmap}
\label{alg:JemallocFree}
\begin{algorithmic}[1]
\Require addr aligned to \texttt{os\_page}, size aligned to \texttt{os\_page}
\Ensure Memory region at \texttt{addr} is unmapped
@@ -835,14 +901,39 @@ algorithm \ref{alg:JemallocMalloc}.
\State \textbf{FREE}(addr)
\end{algorithmic}
\end{algorithm}
\subsection{Mumap replaced with FREE}
The os\_pages\_unmap (Algorithm~\ref{alg:JemallocFree}) represents a customized abstraction of jemallocs
memory unmapping routine, designed to integrate with the previously defined simplified
free(ptr) implementation. In conventional jemalloc configurations, os\_pages\_unmap would
invoke low-level system calls such as munmap to release virtual memory pages back to the
operating system. However, in this adapted version, the function instead delegates the
deallocation to a higher-level FREE(addr) (Algorithm~\ref{alg:free}).
The function begins by enforcing two invariants through assertions: first, that the input
address addr is aligned to the operating system's page size and second that
the size of the memory region is also a multiple of os\_page. These alignment checks are
critical for maintaining consistency with jemalloc's internal page-based memory
management semantics and ensuring compatibility with the allocator's expectations.
Following these checks the memory at the specified address is deallocated via the
FREE(addr) (Algorithm~\ref{alg:free}) operation.
The following changes done to free is embedded inside jemalloc's deallocation mechanism,
where metadata associated with each allocation
(such as size and location) is used to efficiently return memory to the appropriate
arena or pool. jemalloc maintains
separate metadata structures to track allocations, allowing for quick deallocation and
reuse of memory blocks
without significant overhead~\cite{evans_scalable_nodate}.
The only function required to be replaced with Free was
os\_pages\_unmap as show in
algorithm \ref{alg:JemallocFree}.
% The only function required to be replaced with Free was
% os\_pages\_unmap as show in
% algorithm \ref{alg:JemallocFree}.
\section{Evaluation}
\label{sec:Evaluation}
Benchmarks of the FAT memory allocator against Jemalloc~\cite{jemalloc} was conducted.
Benchmarks of the FAT memory allocator and the FAT allocator embedded within Jemalloc against the standard Jemalloc~\cite{jemalloc} allocator was conducted.
Jemalloc is the default memory allocator for CHERIBSD~\cite{cheribsd}. The objective was to evaluate
the reduction of TLB walks ,misses and its impact on the wall clock runtime.
@@ -1153,7 +1244,9 @@ of its capability to handle memory more efficiently by leveraging huge pages.
% \item Last-level cache: Last-Level Cache read misses are crucial performance indicators, as they often result in slow data fetches
% from main memory therefore fewer misses are highly desirable. The performance on this metric varied significantly between the
% allocators and across benchmarks. FAT allocator was near baseline for Kmeans but caused an 18\% increase in misses for Memaccess (designed to stress cache ),
% allocators and across benchmarks.
% FAT allocator was near baseline for Kmeans but caused an 18\% increase in misses for Memaccess (designed to stress cache ),
% a 30\% increase for Richards (many dynamic allocations and pointer manipulations ), and an 18\% increase for Barnes (uses pointer-based octrees ). However,
% FAT allocator achieved a significant 60\% reduction in misses for the Glibc benchmark, which involves active memory use post-allocation.
% FAT allocator embedded inside Jemalloc showed a 75\% reduction in misses for Memaccess, a substantial improvement. Conversely, it led to an 18\% increase in
@@ -1192,7 +1285,7 @@ exhibit minimal differences in wall clock runtimes when using the FAT allocator.
This outcome is expected, as macro benchmarks typically involve a broader range of operations
beyond memory allocation. Additionally,
the benefits of huge pages may be less pronounced for these workloads, as they are often
bottlenecked by factors such as computation or I/O rather than memory translation overhead.
bottlenecked by factors such as computation or I/O rather than memory translation overhead.z
% \begin{figure}[htbp]
% \centering
@@ -1230,17 +1323,17 @@ bottlenecked by factors such as computation or I/O rather than memory translatio
\subsection{Analysis}
\label{sec:Analysis}
The FAT memory allocator demonstrates significant potential for enhancing
The FAT memory allocator and the modified Jemalloc demonstrates significant potential for enhancing
memory management in systems that benefit from huge page optimisations. Its design
effectively reduces TLB misses, achieving up to 90\% fewer data TLB walks, L2 TLB reads,
and TLB refills compared to Jemalloc. These improvements lead to noticeable performance
and TLB refills compared to the system allocator (i.e default Jemalloc). These improvements lead to noticeable performance
gains especially in micro benchmarks, where the allocator reduces wall clock runtimes
by an average of 50\%.
The allocator integrates seamlessly into memory-intensive workloads, as evidenced by its
consistent performance across varying cluster sizes in the K-means benchmark with only
minor anomalies observed under specific conditions. These outliers provide valuable
insights into the allocators interaction with system-level caching and memory translation mechanisms.
% The allocator integrates seamlessly into memory read intensive workloads, as evidenced by its
% consistent performance across varying cluster sizes in the K-means benchmark with only
% minor anomalies observed under specific conditions. These outliers provide valuable
% insights into the allocators interaction with system-level caching and memory translation mechanisms.
While the allocator excels in scenarios emphasising on high-memory throughput. Its impact on
macro benchmarks is less pronounced. This suggests that its benefits are most relevant for
@@ -1279,7 +1372,7 @@ to minimise fragmentation.
% restricting access to memory regions, and thus protecting against various security threats. Importantly, these mechanisms
% can also improve the reduction of TLB walks to memory allocators by using CHERI bounds while maintaining CHERI's security guarantees.
\newline
The benchmarks demonstrate that the allocator reduces TLB misses by up to 90\%,
The benchmarks demonstrates the FAT allocator and the FAT allocator embedded within Jemalloc which reduces the TLB misses by upto 90\%,
leading to substantial performance gains in memory-intensive workloads, though the improvements are less pronounced
for larger and computation-heavy applications. These results highlight the allocators potential to advance memory management
by repurposing CHERI's capability-based model with the use of huge pages.

View File

@@ -615,4 +615,12 @@ series = {WCAE '03}
month = feb
}
@article{evans_scalable_nodate,
title = {A {Scalable} {Concurrent} malloc(3) {Implementation} for {FreeBSD}},
abstract = {The FreeBSD project has been engaged in ongoing work to provide scalable support for multi-processor computer systems since version 5. Sufficient progress has been made that the C librarys malloc(3) memory allocator is now a potential bottleneck for multi-threaded applications running on multiprocessor systems. In this paper, I present a new memory allocator that builds on the state of the art to provide scalable concurrent allocation for applications. Benchmarks indicate that with this allocator, memory allocation for multi-threaded applications scales well as the number of processors increases. At the same time, single-threaded allocation performance is similar to the previous allocator implementation.},
language = {en},
author = {Evans, Jason},
file = {Evans - A Scalable Concurrent malloc(3) Implementation for.pdf:/Users/akilan/Zotero/storage/4ZE7JS5V/Evans - A Scalable Concurrent malloc(3) Implementation for.pdf:application/pdf},
}

View File

@@ -58,3 +58,10 @@ Recheck require read of the paper
** Conclusion
- [x] "This approach has helped reduce" -> "This approach reduces"
- [x] "Remove comprehensive"
** Changes
- [ ] Fix image
- [x] Integrate Jemalloc to Abstract and Intro
- [x] Integrate to conclusion
- [x] Fix Analysis
- [ ] Read through the entire paper