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