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