saving current changes
BIN
docs/EuroSys/Paper/.DS_Store
vendored
BIN
docs/EuroSys/Paper/Akilan_EuroSys_draft_Jun25_HWL (1).pdf
Normal file
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 83 KiB |
@@ -43,9 +43,8 @@
|
||||
\@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 }
|
||||
\citation{CheriABI}
|
||||
\citation{evans_scalable_nodate}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Instrumenting Block-Based Allocators with Physically Contiguous Memory}{4}{subsection.4.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5}Memory allocator design}{4}{section.5}\protected@file@percent }
|
||||
\newlabel{sec:MemoryAllocator}{{5}{4}{Memory allocator design}{section.5}{}}
|
||||
\@writefile{loa}{\contentsline {algorithm}{\numberline {1}{\ignorespaces Malloc implementation}}{4}{algorithm.1}\protected@file@percent }
|
||||
@@ -57,13 +56,15 @@
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {6}Embedding FAT allocator inside Jemalloc}{4}{section.6}\protected@file@percent }
|
||||
\newlabel{sec:JemallocFATAllocator}{{6}{4}{Embedding FAT allocator inside Jemalloc}{section.6}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Mmap replaced with MALLOC}{4}{subsection.6.1}\protected@file@percent }
|
||||
\citation{jemalloc}
|
||||
\citation{jemalloc}
|
||||
\citation{evans_scalable_nodate}
|
||||
\citation{evans_scalable_nodate}
|
||||
\citation{jemalloc}
|
||||
\citation{cheribsd}
|
||||
\citation{Benchmark}
|
||||
\citation{Morello}
|
||||
\citation{BenchmarkABI}
|
||||
\citation{PerformanceCounter}
|
||||
\@writefile{loa}{\contentsline {algorithm}{\numberline {4}{\ignorespaces Modified Jemalloc Memory Mapping Routines}}{5}{algorithm.4}\protected@file@percent }
|
||||
\newlabel{alg:JemallocMalloc}{{4}{5}{Modified Jemalloc Memory Mapping Routines}{algorithm.4}{}}
|
||||
\@writefile{loa}{\contentsline {algorithm}{\numberline {5}{\ignorespaces os\_pages\_unmap}}{5}{algorithm.5}\protected@file@percent }
|
||||
@@ -73,6 +74,7 @@
|
||||
\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}{}}
|
||||
\citation{PerformanceCounter}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Benchmarks}{6}{subsection.7.2}\protected@file@percent }
|
||||
\newlabel{sec:Micro}{{7.2.1}{6}{Micro benchmark}{subsubsection.7.2.1}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1}Micro benchmark}{6}{subsubsection.7.2.1}\protected@file@percent }
|
||||
@@ -85,14 +87,14 @@
|
||||
\citation{holt1995}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Results and discussion}{7}{subsection.7.3}\protected@file@percent }
|
||||
\newlabel{sec:Results}{{7.3}{7}{Results and discussion}{subsection.7.3}{}}
|
||||
\newlabel{fig:dtlb-walk}{{2a}{8}{DTLB Walks}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:dtlb-walk}{{a}{8}{DTLB Walks}{figure.caption.5}{}}
|
||||
\newlabel{fig:l1tlb-reads}{{2b}{8}{L1 TLB Reads}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:l1tlb-reads}{{b}{8}{L1 TLB Reads}{figure.caption.5}{}}
|
||||
\newlabel{fig:l1tlb-refill}{{2c}{8}{L1 TLB Refill}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:l1tlb-refill}{{c}{8}{L1 TLB Refill}{figure.caption.5}{}}
|
||||
\newlabel{fig:l2tlb-reads}{{2d}{8}{L2 TLB Reads}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:l2tlb-reads}{{d}{8}{L2 TLB Reads}{figure.caption.5}{}}
|
||||
\newlabel{fig:l1tlb-reads}{{2a}{8}{L1 TLB Reads}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:l1tlb-reads}{{a}{8}{L1 TLB Reads}{figure.caption.5}{}}
|
||||
\newlabel{fig:l2tlb-reads}{{2b}{8}{L2 TLB Reads}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:l2tlb-reads}{{b}{8}{L2 TLB Reads}{figure.caption.5}{}}
|
||||
\newlabel{fig:dtlb-walk}{{2c}{8}{DTLB Walks}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:dtlb-walk}{{c}{8}{DTLB Walks}{figure.caption.5}{}}
|
||||
\newlabel{fig:l1tlb-refill}{{2d}{8}{L1 DTLB Refill}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:l1tlb-refill}{{d}{8}{L1 DTLB Refill}{figure.caption.5}{}}
|
||||
\newlabel{fig:ll-cache-rd}{{2e}{8}{LL Cache Reads}{figure.caption.5}{}}
|
||||
\newlabel{sub@fig:ll-cache-rd}{{e}{8}{LL Cache Reads}{figure.caption.5}{}}
|
||||
\newlabel{fig:wallclock}{{2f}{8}{Wall Clock Time}{figure.caption.5}{}}
|
||||
@@ -114,8 +116,8 @@
|
||||
\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}}}
|
||||
\bibcite{CheriABI}{{13}{2019}{{Davis et~al.}}{{Davis, Watson, Richardson, Neumann, Moore, Baldwin, Chisnall, Clarke, Filardo, Gudka, Joannou, Laurie, Markettos, Maste, Mazzinghi, Napierala, Norton, Roe, Sewell, Son, and Woodruff}}}
|
||||
\bibcite{evans_scalable_nodate}{{14}{}{{Evans}}{{}}}
|
||||
\bibcite{jemalloc}{{15}{2006}{{Evans}}{{}}}
|
||||
\bibcite{jemalloc}{{14}{2006}{{Evans}}{{}}}
|
||||
\bibcite{evans_scalable_nodate}{{15}{}{{Evans}}{{}}}
|
||||
\bibcite{cheribsd}{{16}{}{{che}}{{}}}
|
||||
\bibcite{Benchmark}{{17}{}{{Ben}}{{}}}
|
||||
\bibcite{Morello}{{18}{}{{Mor}}{{}}}
|
||||
|
||||
@@ -146,15 +146,15 @@ Brooks Davis, Robert N.~M. Watson, Alexander Richardson, Peter~G. Neumann,
|
||||
\newblock \doi{10.1145/3297858.3304042}.
|
||||
\newblock URL \url{https://doi.org/10.1145/3297858.3304042}.
|
||||
|
||||
\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.
|
||||
\newblock In \emph{Proc. of the bsdcan conference, ottawa, canada}, 2006.
|
||||
|
||||
\bibitem[Evans()]{evans_scalable_nodate}
|
||||
Jason Evans.
|
||||
\newblock A {Scalable} {Concurrent} malloc(3) {Implementation} for {FreeBSD}.
|
||||
|
||||
\bibitem[che()]{cheribsd}
|
||||
Benchmark {ABI} - {CheriBSD} 23.11 new features tutorial.
|
||||
\newblock URL
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# Fdb version 4
|
||||
["bibtex paper"] 1750705998.27393 "paper.aux" "paper.bbl" "paper" 1750706000.11317 0
|
||||
["bibtex paper"] 1753645029.46016 "paper.aux" "paper.bbl" "paper" 1753646783.20149 0
|
||||
"./paperReferences.bib" 1750702099.74581 54714 19039cdfd8414d201259ef3610c2b156 ""
|
||||
"/usr/local/texlive/2025/texmf-dist/bibtex/bst/natbib/unsrtnat.bst" 1233624470 24550 a41a6405f4de768c43e871d9fbce2bc8 ""
|
||||
"paper.aux" 1750705999.79329 10069 17bcbc579b981872002f8e9b5c2e2978 "pdflatex"
|
||||
"paper.aux" 1753646782.87726 10111 c1687afac52aee7e78cc42d3a1da73cf "pdflatex"
|
||||
(generated)
|
||||
"paper.bbl"
|
||||
"paper.blg"
|
||||
(rewritten before read)
|
||||
["pdflatex"] 1750705998.36154 "paper.tex" "paper.pdf" "paper" 1750706000.1133 0
|
||||
["pdflatex"] 1753646781.23861 "paper.tex" "paper.pdf" "paper" 1753646783.20162 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 ""
|
||||
@@ -221,17 +221,17 @@
|
||||
"/usr/local/texlive/2025/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1743605858 5467155 19efa205003f9ecad95fbbaa6ff24da1 ""
|
||||
"/usr/local/texlive/2025/texmf-var/web2c/pdftex/pdflatex.fmt" 1743605772 3345731 9f70a6727154d056b4116903856deae2 ""
|
||||
"/usr/local/texlive/2025/texmf.cnf" 1741450484 577 418a7058ec8e006d8704f60ecd22c938 ""
|
||||
"diagram/benchmarks-group/bargraph-large-dtlb-walk.png" 1747839169.51412 55694 1d2244ce5bf0e4a9c6b7c9faf2176c0e ""
|
||||
"diagram/benchmarks-group/bargraph-large-l1tlb-reads.png" 1747839169.51112 55892 7f51ff764bcc2892c6114e6d056d96e2 ""
|
||||
"diagram/benchmarks-group/bargraph-large-l1tlb-refill.png" 1747839169.50512 55494 10dad415512d4b39cbf8ea65851df404 ""
|
||||
"diagram/benchmarks-group/bargraph-large-l2tlb-reads.png" 1747839169.50845 54947 eb8cf45e5c18c985341539250aaf1907 ""
|
||||
"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/benchmarks-group/large/bargraph-large-dtlb_walk.png" 1753643390.42674 87466 43cc9d9e52ad24eda0534e9c374cb177 ""
|
||||
"diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png" 1753643390.42819 85873 12aaa5f38f23c0de67f2b955760bd468 ""
|
||||
"diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png" 1753643390.43088 87037 94cbd9625ae4cfd18cd2dc86434f81a9 ""
|
||||
"diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png" 1753643390.43177 86347 c2c0623228d38c390fd0bca4fc3a2061 ""
|
||||
"diagram/benchmarks-group/large/bargraph-large-llcache.png" 1753643390.4343 81964 2b21d389f7a0bb5b2a0174d7c020779a ""
|
||||
"diagram/benchmarks-group/large/bargraph-large-wallclock.png" 1753643390.43523 85258 015855fa73ccdb4ae859b79da8032169 ""
|
||||
"diagram/drawing.pdf" 1748909319.05561 28646 0eb4d6c5fd7bfd13117f881769bcc40b ""
|
||||
"paper.aux" 1750705999.79329 10069 17bcbc579b981872002f8e9b5c2e2978 "pdflatex"
|
||||
"paper.bbl" 1750705998.3586 9667 69909f93a1ff23493346e23e89c1311f "bibtex paper"
|
||||
"paper.out" 1750705999.79419 4008 21fd7693a5a3059545203aa7db2ea238 "pdflatex"
|
||||
"paper.tex" 1750705972.02315 109620 7c35b92413acedf60b17b8595a2bf996 ""
|
||||
"paper.aux" 1753646782.87726 10111 c1687afac52aee7e78cc42d3a1da73cf "pdflatex"
|
||||
"paper.bbl" 1753645029.54671 9667 c839f5ff789de0c36cd440f7e70c5f20 "bibtex paper"
|
||||
"paper.out" 1753646782.87805 4008 21fd7693a5a3059545203aa7db2ea238 "pdflatex"
|
||||
"paper.tex" 1753646764.56991 112718 a61104490f86f49437149752b3211c7a ""
|
||||
(generated)
|
||||
"paper.aux"
|
||||
"paper.log"
|
||||
|
||||
@@ -535,36 +535,36 @@ 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 /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 ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-llcache.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
|
||||
INPUT ./diagram/benchmarks-group/large/bargraph-large-wallclock.png
|
||||
INPUT ./diagram/benchmarks-group/large/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) 23 JUN 2025 20:13
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 27 JUL 2025 21:06
|
||||
entering extended mode
|
||||
\write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
@@ -1109,52 +1109,52 @@ Package caption Info: listings package is loaded.
|
||||
Package caption Info: End \AtBeginDocument code.
|
||||
\c@lstlisting=\count367
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 17.28pt on input line 318.
|
||||
(Font) scaled to size 17.28pt on input line 330.
|
||||
LaTeX Font Info: Trying to load font information for T1+LinuxBiolinumT-TLF o
|
||||
n input line 318.
|
||||
n input line 330.
|
||||
|
||||
(/usr/local/texlive/2025/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd
|
||||
File: T1LinuxBiolinumT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Lin
|
||||
uxBiolinumT-TLF.
|
||||
)
|
||||
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be
|
||||
(Font) scaled to size 17.28pt on input line 318.
|
||||
(Font) scaled to size 17.28pt on input line 330.
|
||||
Package microtype Info: Loading generic protrusion settings for font family
|
||||
(microtype) `LinuxBiolinumT-TLF' (encoding: T1).
|
||||
(microtype) For optimal results, create family-specific settings.
|
||||
(microtype) See the microtype manual for details.
|
||||
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/b/n' will be
|
||||
(Font) scaled to size 17.28pt on input line 318.
|
||||
(Font) scaled to size 17.28pt on input line 330.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
Package microtype Info: Loading generic protrusion settings for font family
|
||||
(microtype) `LinuxLibertineT-TLF' (encoding: OT1).
|
||||
(microtype) For optimal results, create family-specific settings.
|
||||
(microtype) See the microtype manual for details.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 6.6pt on input line 318.
|
||||
(Font) scaled to size 6.6pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 6.6pt on input line 318.
|
||||
(Font) scaled to size 6.6pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 6.6pt on input line 318.
|
||||
(Font) scaled to size 6.6pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 6.6pt on input line 318.
|
||||
(Font) scaled to size 6.6pt on input line 330.
|
||||
(/usr/local/texlive/2025/texmf-dist/tex/latex/microtype/mt-msa.cfg
|
||||
File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS)
|
||||
)
|
||||
@@ -1162,31 +1162,31 @@ File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS)
|
||||
File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS)
|
||||
)
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 6.6pt on input line 318.
|
||||
(Font) scaled to size 6.6pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 6.6pt on input line 318.
|
||||
(Font) scaled to size 6.6pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 6.6pt on input line 318.
|
||||
(Font) scaled to size 6.6pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 12.0pt on input line 318.
|
||||
(Font) scaled to size 12.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 6.6pt on input line 318.
|
||||
(Font) scaled to size 6.6pt on input line 330.
|
||||
LaTeX Font Info: Trying to load font information for TS1+LinuxLibertineT-TLF
|
||||
on input line 318.
|
||||
on input line 330.
|
||||
|
||||
(/usr/local/texlive/2025/texmf-dist/tex/latex/libertine/TS1LinuxLibertineT-TLF.
|
||||
fd
|
||||
@@ -1194,160 +1194,166 @@ File: TS1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for TS1/
|
||||
LinuxLibertineT-TLF.
|
||||
)
|
||||
LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 8.8pt on input line 318.
|
||||
(Font) scaled to size 8.8pt on input line 330.
|
||||
Package microtype Info: Loading generic protrusion settings for font family
|
||||
(microtype) `LinuxLibertineT-TLF' (encoding: TS1).
|
||||
(microtype) For optimal results, create family-specific settings.
|
||||
(microtype) See the microtype manual for details.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
|
||||
(Font) scaled to size 10.0pt on input line 318.
|
||||
(Font) scaled to size 10.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
|
||||
(Font) scaled to size 7.0pt on input line 318.
|
||||
(Font) scaled to size 7.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 7.0pt on input line 318.
|
||||
(Font) scaled to size 7.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 318.
|
||||
(Font) scaled to size 9.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
|
||||
(Font) scaled to size 10.95pt on input line 318.
|
||||
(Font) scaled to size 10.95pt on input line 330.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 6.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 6.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 330.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 330.
|
||||
|
||||
Overfull \hbox (8.2084pt too wide) in paragraph at lines 318--318
|
||||
[]\T1/LinuxLibertineT-TLF/m/n/9 (-20) The con-tri-bu-tion is an al-ter-na-tive
|
||||
ap-proach by ex-ploit-ing capability-
|
||||
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 396.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 9.0pt on input line 396.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 396.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 396.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 9.0pt on input line 396.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 396.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 396.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 396.
|
||||
|
||||
Overfull \hbox (1.7376pt too wide) in paragraph at lines 403--406
|
||||
[]\T1/LinuxLibertineT-TLF/b/n/9 (-20) Memory Al-lo-ca-tion Al-go-rithms (FAT al
|
||||
-lo-ca-tor)\T1/LinuxLibertineT-TLF/m/n/9 (-20) : Presents
|
||||
[]
|
||||
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 6.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 6.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 8.0pt on input line 318.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 6.0pt on input line 318.
|
||||
|
||||
Overfull \hbox (2.8446pt too wide) in paragraph at lines 403--406
|
||||
\T1/LinuxLibertineT-TLF/m/n/9 (-20) mem-ory , and in-te-grat-ing huge pages wit
|
||||
h CHERI's capability-
|
||||
[]
|
||||
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 383.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 9.0pt on input line 383.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 383.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 383.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 9.0pt on input line 383.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 383.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 383.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 9.0pt on input line 383.
|
||||
|
||||
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 396.
|
||||
(Font) scaled to size 6.0pt on input line 406.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
LaTeX Font Info: Calculating math sizes for size <36.135> on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Calculating math sizes for size <36.135> on input line 406.
|
||||
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 26.37839pt on input line 396.
|
||||
(Font) scaled to size 26.37839pt on input line 406.
|
||||
LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 19.87434pt on input line 396.
|
||||
(Font) scaled to size 19.87434pt on input line 406.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 26.37839pt on input line 396.
|
||||
(Font) scaled to size 26.37839pt on input line 406.
|
||||
LaTeX Font Info: Font shape `OML/nxlmi/m/it' will be
|
||||
(Font) scaled to size 19.87434pt on input line 396.
|
||||
(Font) scaled to size 19.87434pt on input line 406.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 26.37839pt on input line 396.
|
||||
(Font) scaled to size 26.37839pt on input line 406.
|
||||
LaTeX Font Info: Font shape `LMS/ntxsy/m/n' will be
|
||||
(Font) scaled to size 19.87434pt on input line 396.
|
||||
(Font) scaled to size 19.87434pt on input line 406.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 26.37839pt on input line 396.
|
||||
(Font) scaled to size 26.37839pt on input line 406.
|
||||
LaTeX Font Info: Font shape `LMX/ntxexx/m/n' will be
|
||||
(Font) scaled to size 19.87434pt on input line 396.
|
||||
(Font) scaled to size 19.87434pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 26.37839pt on input line 396.
|
||||
(Font) scaled to size 26.37839pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxmia/m/it' will be
|
||||
(Font) scaled to size 19.87434pt on input line 396.
|
||||
(Font) scaled to size 19.87434pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 26.37839pt on input line 396.
|
||||
(Font) scaled to size 26.37839pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxsym/m/n' will be
|
||||
(Font) scaled to size 19.87434pt on input line 396.
|
||||
(Font) scaled to size 19.87434pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 26.37839pt on input line 396.
|
||||
(Font) scaled to size 26.37839pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxsyc/m/n' will be
|
||||
(Font) scaled to size 19.87434pt on input line 396.
|
||||
(Font) scaled to size 19.87434pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 36.135pt on input line 396.
|
||||
(Font) scaled to size 36.135pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 26.37839pt on input line 396.
|
||||
(Font) scaled to size 26.37839pt on input line 406.
|
||||
LaTeX Font Info: Font shape `U/ntxexa/m/n' will be
|
||||
(Font) scaled to size 19.87434pt on input line 396.
|
||||
(Font) scaled to size 19.87434pt on input line 406.
|
||||
[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
|
||||
@@ -1357,50 +1363,53 @@ ocal/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_naooyc.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 475.
|
||||
(Font) scaled to size 9.0pt on input line 488.
|
||||
|
||||
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 510.
|
||||
(Font) scaled to size 9.0pt on input line 523.
|
||||
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be
|
||||
(Font) scaled to size 7.0pt on input line 510.
|
||||
(Font) scaled to size 7.0pt on input line 523.
|
||||
[2.2]
|
||||
<diagram/drawing.pdf, id=154, 459.57687pt x 430.33751pt>
|
||||
File: diagram/drawing.pdf Graphic file (type pdf)
|
||||
<use diagram/drawing.pdf>
|
||||
Package pdftex.def Info: diagram/drawing.pdf used on input line 560.
|
||||
Package pdftex.def Info: diagram/drawing.pdf used on input line 574.
|
||||
(pdftex.def) Requested size: 192.91872pt x 180.64859pt.
|
||||
|
||||
|
||||
Class acmart Warning: A possible image without description on input line 563.
|
||||
Class acmart Warning: A possible image without description on input line 577.
|
||||
|
||||
|
||||
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be
|
||||
(Font) scaled to size 9.0pt on input line 623.
|
||||
(Font) scaled to size 9.0pt on input line 637.
|
||||
|
||||
Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
|
||||
|
||||
[3.3 <./diagram/drawing.pdf>]
|
||||
Package hyperref Info: bookmark level for unknown algorithm defaults to 0 on in
|
||||
put line 757.
|
||||
put line 771.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/sc' will be
|
||||
(Font) scaled to size 9.0pt on input line 760.
|
||||
(Font) scaled to size 9.0pt on input line 774.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 6.6pt on input line 761.
|
||||
(Font) scaled to size 6.6pt on input line 775.
|
||||
LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
(Font) scaled to size 5.5pt on input line 761.
|
||||
(Font) scaled to size 5.5pt on input line 775.
|
||||
|
||||
|
||||
LaTeX Font Info: Trying to load font information for T1+zi4 on input line 84
|
||||
6.
|
||||
LaTeX Font Info: Trying to load font information for T1+zi4 on input line 86
|
||||
0.
|
||||
(/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 846.
|
||||
(Font) scaled to size 9.0pt on input line 860.
|
||||
Package microtype Info: Loading generic protrusion settings for font family
|
||||
(microtype) `zi4' (encoding: T1).
|
||||
(microtype) For optimal results, create family-specific settings.
|
||||
@@ -1412,70 +1421,70 @@ nc}{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.en
|
||||
c}]
|
||||
|
||||
|
||||
|
||||
[5.5{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc
|
||||
}]
|
||||
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be
|
||||
(Font) scaled to size 9.0pt on input line 1073.
|
||||
|
||||
|
||||
|
||||
Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
|
||||
|
||||
[5.5{/usr/local/texlive/2025/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc
|
||||
}]
|
||||
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be
|
||||
(Font) scaled to size 9.0pt on input line 1080.
|
||||
|
||||
|
||||
|
||||
|
||||
[6.6]
|
||||
<diagram/benchmarks-group/bargraph-large-dtlb-walk.png, id=256, 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 1160.
|
||||
<diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png, id=258, 1011.78pt
|
||||
x 578.16pt>
|
||||
File: diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png Graphic file
|
||||
(type png)
|
||||
<use diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png>
|
||||
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-l1_tlb_r
|
||||
d.png used on input line 1167.
|
||||
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
|
||||
<diagram/benchmarks-group/bargraph-large-l1tlb-reads.png, id=258, 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 1165.
|
||||
<diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png, id=260, 1011.78pt
|
||||
x 578.16pt>
|
||||
File: diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png Graphic file
|
||||
(type png)
|
||||
<use diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png>
|
||||
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-l2_tlb_r
|
||||
d.png used on input line 1172.
|
||||
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
|
||||
<diagram/benchmarks-group/bargraph-large-l1tlb-refill.png, id=259, 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 1173.
|
||||
<diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png, id=261, 1011.78pt
|
||||
x 578.16pt>
|
||||
File: diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png Graphic file
|
||||
(type png)
|
||||
<use diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png>
|
||||
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-dtlb_wal
|
||||
k.png used on input line 1180.
|
||||
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
|
||||
<diagram/benchmarks-group/bargraph-large-l2tlb-reads.png, id=260, 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 1178.
|
||||
<diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png, id=262, 1011.7
|
||||
8pt x 578.16pt>
|
||||
File: diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png Graphic fi
|
||||
le (type png)
|
||||
<use diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png>
|
||||
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-l1tlb_re
|
||||
fill.png used on input line 1185.
|
||||
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
|
||||
<diagram/benchmarks-group/bargraph-large-ll-cache-rd.png, id=261, 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 1186.
|
||||
<diagram/benchmarks-group/large/bargraph-large-llcache.png, id=263, 1011.78pt x
|
||||
578.16pt>
|
||||
File: diagram/benchmarks-group/large/bargraph-large-llcache.png Graphic file (t
|
||||
ype png)
|
||||
<use diagram/benchmarks-group/large/bargraph-large-llcache.png>
|
||||
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-llcache.
|
||||
png used on input line 1193.
|
||||
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
|
||||
<diagram/benchmarks-group/bargraph-large-wallclock.png, id=262, 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 1191.
|
||||
<diagram/benchmarks-group/large/bargraph-large-wallclock.png, id=264, 1011.78pt
|
||||
x 578.16pt>
|
||||
File: diagram/benchmarks-group/large/bargraph-large-wallclock.png Graphic file
|
||||
(type png)
|
||||
<use diagram/benchmarks-group/large/bargraph-large-wallclock.png>
|
||||
Package pdftex.def Info: diagram/benchmarks-group/large/bargraph-large-wallcloc
|
||||
k.png used on input line 1198.
|
||||
(pdftex.def) Requested size: 241.14749pt x 137.79964pt.
|
||||
|
||||
|
||||
Class acmart Warning: A possible image without description on input line 1199.
|
||||
Class acmart Warning: A possible image without description on input line 1206.
|
||||
|
||||
|
||||
|
||||
@@ -1494,11 +1503,20 @@ Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
|
||||
|
||||
[8.8 <./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>] (./paper.bbl
|
||||
[8.8 <./diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png> <./diagram
|
||||
/benchmarks-group/large/bargraph-large-l2_tlb_rd.png> <./diagram/benchmarks-gro
|
||||
up/large/bargraph-large-dtlb_walk.png> <./diagram/benchmarks-group/large/bargra
|
||||
ph-large-l1tlb_refill.png> <./diagram/benchmarks-group/large/bargraph-large-llc
|
||||
ache.png> <./diagram/benchmarks-group/large/bargraph-large-wallclock.png>]
|
||||
Overfull \hbox (19.8336pt too wide) in paragraph at lines 1422--1452
|
||||
\T1/LinuxLibertineT-TLF/m/n/9 (-20) Although per-for-mance gains are less sig-n
|
||||
if-i-cant for larger or computation-
|
||||
[]
|
||||
|
||||
(./paper.bbl
|
||||
Underfull \vbox (badness 2698) has occurred while \output is active []
|
||||
|
||||
|
||||
|
||||
|
||||
Underfull \hbox (badness 2443) in paragraph at lines 164--168
|
||||
@@ -1537,11 +1555,11 @@ Package rerunfilecheck Info: File `paper.out' has not changed.
|
||||
(rerunfilecheck) Checksum: 21FD7693A5A3059545203AA7DB2EA238;4008.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
24399 strings out of 473190
|
||||
402361 string characters out of 5715801
|
||||
980070 words of memory out of 5000000
|
||||
24403 strings out of 473190
|
||||
402665 string characters out of 5715801
|
||||
983429 words of memory out of 5000000
|
||||
46493 multiletter control sequences out of 15000+600000
|
||||
781348 words of font info for 490 fonts, out of 8000000 for 9000
|
||||
781830 words of font info for 493 fonts, out of 8000000 for 9000
|
||||
1302 hyphenation exceptions out of 8191
|
||||
90i,17n,131p,1002b,778s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</usr/local/texlive/2025/texmf-dist/fonts/type1/public/inconsolata/Inconsolat
|
||||
@@ -1556,10 +1574,10 @@ lic/libertine/LinLibertineTB.pfb></usr/local/texlive/2025/texmf-dist/fonts/type
|
||||
/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, 830538 bytes).
|
||||
Output written on paper.pdf (9 pages, 962446 bytes).
|
||||
PDF statistics:
|
||||
387 PDF objects out of 1000 (max. 8388607)
|
||||
322 compressed objects within 4 object streams
|
||||
395 PDF objects out of 1000 (max. 8388607)
|
||||
330 compressed objects within 4 object streams
|
||||
67 named destinations out of 1000 (max. 500000)
|
||||
123628 words of extra memory for PDF output out of 128383 (max. 10000000)
|
||||
|
||||
|
||||
@@ -246,16 +246,28 @@
|
||||
% addressing, we introduce a memory allocator that can integrate block-based allocations within huge pages. Through our evaluation using both micro and macro benchmarks, we show that
|
||||
% our allocator can reduce TLB misses by up to 90\%, leading to improvements in wall clock runtimes for memory-intensive applications.
|
||||
|
||||
The increasing gap between workload memory requirements and the capacity of translation lookaside buffers (TLBs) in hardware cache management of modern processors means that TLB misses
|
||||
are more frequent, costing additional clock cycles and impacting runtime performance. One solution that has been explored is to use physically contiguous
|
||||
memory in conjunction with huge pages.
|
||||
% The increasing gap between workload memory requirements and the capacity of translation lookaside buffers (TLBs) in hardware cache management of modern processors means that TLB misses
|
||||
% are more frequent, costing additional clock cycles and impacting runtime performance. One solution that has been explored is to use physically contiguous
|
||||
% memory in conjunction with huge pages.
|
||||
|
||||
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. When the FAT allocator is ran independently and embedded inside Jemalloc, it reduces by up to 99\% walking the TLB hierarchy. This leads to
|
||||
decreasing runtimes for memory read and write intensive applications.
|
||||
% 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. When the FAT allocator is ran independently and embedded inside Jemalloc, it reduces by up to 99\% walking the TLB hierarchy. This leads to
|
||||
% decreasing runtimes for memory read and write intensive applications.
|
||||
% 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.
|
||||
|
||||
The widening gap between application memory demands and the limited capacity of hardware Translation Lookaside Buffers (TLBs)
|
||||
in modern processors leads to frequent TLB misses, incurring significant performance penalties due to additional clock cycles
|
||||
spent on page table walks. A common mitigation strategy involves the use of physically contiguous memory and huge pages to
|
||||
reduce TLB pressure.
|
||||
|
||||
This paper introduces a solution that leverages capability-based addressing in the CHERI architecture with huge pages.
|
||||
We present Fat Address Translations (FAT), a memory allocator that embeds allocation metadata directly within
|
||||
pointer capabilities and manages memory in block-based allocations within huge pages. By encoding allocation bounds in capabilities,
|
||||
FAT enables more efficient pointer dereferencing and reduces reliance on smaller page table entry lookups. Our evaluation shows that FAT,
|
||||
both as a standalone allocator and when integrated into Jemalloc, reduces TLB hierarchy walks by up to 99\% in contrast to standard system allocators and improves runtime performance for memory read intensive applications.
|
||||
This demonstrates that capability-based addressing can repurposed to mitigate TLB pressure.
|
||||
\end{abstract}
|
||||
|
||||
%%
|
||||
@@ -338,7 +350,8 @@
|
||||
% accelerating memory management operations.
|
||||
|
||||
In computing, achieving high performance is an ongoing challenge, especially as
|
||||
applications handle increasingly memory intensive workloads. Performance referring to memory access rather than compute bound.
|
||||
modern applications handle increasingly memory intensive workloads.
|
||||
% Performance referring to memory access rather than compute bound.
|
||||
Memory management is a key factor in reducing the time it takes to access a memory region.
|
||||
A Translation Lookaside Buffer (TLB) is a specialised cache in the memory management unit (MMU).
|
||||
It reduces the time required to convert virtual addresses to physical addresses. When a program accesses
|
||||
@@ -353,11 +366,11 @@ To tackle this issue, researchers have explored new solutions, including the use
|
||||
huge pages~\cite{panwar_hawkeye_2019}.
|
||||
|
||||
Huge pages also known as large pages allow for the allocation of memory in significantly larger chunks
|
||||
compared to traditional small pages by reducing the number of TLB entries needed to access a given amount
|
||||
compared to traditional small pages which leads to fewer number of TLB entries needed to access a given amount
|
||||
of memory. Huge pages offer a potential avenue for optimising TLBs which are used by reducing the number
|
||||
of entries needed to map large memory regions. This not only decreases the frequency of
|
||||
TLB misses but also lowers the overhead associated with address translation and therefore minimising
|
||||
these bottlenecks.
|
||||
TLB misses but also lowers the overhead associated with address translation in regards to traversing the TLB cache
|
||||
hierarchy and therefore minimising these bottlenecks.
|
||||
% huge pages can improve system performance in aspects such as speeding
|
||||
% up memory-intensive applications, reducing latency in data access and enhancing throughput for
|
||||
% workloads that rely heavily on large datasets.
|
||||
@@ -368,9 +381,9 @@ these bottlenecks.
|
||||
% Answer: The focus on this paper is on single core execution.
|
||||
|
||||
Simultaneously, advancements in hardware-level security, such as the Capability Hardware Enhanced RISC Instructions (CHERI)
|
||||
~\cite{woodruff_cheri_2014} which are pointers that are replaced with capabilities with 128-bit or 256-bit
|
||||
~\cite{woodruff_cheri_2014} which are standard 64-bit pointers that are replaced with capabilities with 128-bit or 256-bit
|
||||
encoding scheme which consists of both the address and metadata. The metadata includes bounds, permissions and validity of the pointer
|
||||
which forms a capability. This transformation enforces strict memory
|
||||
which forms a capability. This transformation of larger pointers enforces strict memory
|
||||
safety as capabilities prevent arbitrary pointer arithmetic and unauthorised memory access.
|
||||
CHERI's capability-based addressing approach not
|
||||
only strengthens system security by tightly controlling memory access but also opens avenues for optimising memory management
|
||||
@@ -387,7 +400,7 @@ memory allocations by emulating block allocations on physically contiguous memor
|
||||
used to optimise memory allocation by encoding memory bounds directly within pointers, reducing TLB reliance
|
||||
(Section ~\ref{sec:128bitCompressedBounds}).
|
||||
|
||||
\item \textbf{Memory Allocation Algorithms (FAT allocator)}: Provides an algorithm for allocating, freeing
|
||||
\item \textbf{Memory Allocation Algorithms (FAT allocator)}: Presents 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}).
|
||||
|
||||
@@ -519,7 +532,8 @@ bound encoding technique with an internal exponent mechanism that offers greater
|
||||
\label{sec:FatPointerTranslations}
|
||||
Fat Address Translations (FAT) is our new memory allocator for CHERI. It uses the CHERI architecture to
|
||||
bring about block-based allocations in physically contiguous memory.
|
||||
FAT leverages techniques like FlexPointer~\cite{chen_flexpointer_2023} and RMM~\cite{karakostas_redundant_2015} to
|
||||
FAT leverages techniques like FlexPointer~\cite{chen_flexpointer_2023}, RMM~\cite{karakostas_redundant_2015} in context of introducing
|
||||
a range table to store custom address translation memory ranges to
|
||||
reduce pressure on the TLB. A key component
|
||||
in this implementation is the use of range addresses with CHERI CC~\cite{woodruff_cheri_2019}.
|
||||
|
||||
@@ -671,7 +685,7 @@ representation of bounds within CHERI CC.
|
||||
|
||||
Instead of relying on fixed-size TLB entries with set page sizes (such as 4KB, 2MB, or 1GB), FAT uses CHERI
|
||||
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 approach offers flexible translation entry sizes compared 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
|
||||
@@ -739,7 +753,7 @@ to track and access memory within physically contiguous memory.
|
||||
|
||||
\section{Memory allocator design}
|
||||
\label{sec:MemoryAllocator}
|
||||
This section presents a straightforward memory allocator design which is implemented based on the
|
||||
This section presents a memory allocator design which is implemented based on the
|
||||
principles outlined in FAT (Section ~\ref{sec:FatPointerTranslations}). The allocator consists of three core functions: \textit{InitAlloc},
|
||||
\textit{malloc}, and \textit{free}. The \textit{InitAlloc} function initialises the memory pool, setting up the necessary
|
||||
data structures and metadata required for efficient memory management. The \textit{malloc} function is
|
||||
@@ -774,7 +788,7 @@ itself. The start and end addresses correspond to the size of the memory block r
|
||||
approach introduces a method of memory tracking, where the bounds of the allocated region is
|
||||
explicitly encoded in the address which enables efficient monitoring and management of memory usage.
|
||||
|
||||
Furthermore, this design uses shared huge page TLB entries to map
|
||||
Furthermore, this design uses 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 reducing the risk of out-of-bounds
|
||||
errors. This use of FAT and shared TLB entries not only align with the principles of
|
||||
@@ -890,7 +904,7 @@ for munmap the \textit{free} function (Algorithm \ref{alg:free}).
|
||||
|
||||
\subsection{Mmap replaced with MALLOC}
|
||||
|
||||
The os\_pages\_map function (Algorithm~\ref{alg:JemallocMalloc}) simulates jemalloc's low-level page
|
||||
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~\cite{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
|
||||
@@ -899,10 +913,10 @@ if one was provided. If there's a mismatch, it unmaps calling FREE() (Algorithm~
|
||||
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
|
||||
This approach mentioned above is embedded inside Jemalloc's strategy of managing memory through arenas~\cite{jemalloc} and size~\cite{jemalloc} 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}.
|
||||
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
|
||||
@@ -923,9 +937,9 @@ predefined structures, jemalloc minimizes fragmentation~\cite{evans_scalable_nod
|
||||
|
||||
\subsection{Munmap replaced with FREE}
|
||||
|
||||
The os\_pages\_unmap (Algorithm~\ref{alg:JemallocFree}) represents a customized abstraction of jemallocs
|
||||
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
|
||||
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}).
|
||||
@@ -933,12 +947,12 @@ 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
|
||||
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,
|
||||
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
|
||||
@@ -1012,7 +1026,7 @@ failing to overwrite the C program at runtime with the intended \textit{malloc}
|
||||
The second allocator was the standard OS memory allocator, which in the case of
|
||||
CHERIBSD is Jemalloc.
|
||||
|
||||
Performance measurements (table ~\ref{table:ARMPerf}) were carried out using ARM performance counters~\cite{PerformanceCounter} to
|
||||
Performance measurements (table ~\ref{table:ARMPerf}) were carried out using ARM hardware performance counters~\cite{PerformanceCounter} to
|
||||
ensure accurate evaluation. These counters provided detailed metrics allowing
|
||||
us to compare the performance of the two allocators and assess the impact of
|
||||
the proposed changes.
|
||||
@@ -1041,13 +1055,6 @@ the proposed changes.
|
||||
& due to a translation table walk \\
|
||||
& or accessing another level of TLB cache. \\
|
||||
& \\
|
||||
(p/cpu\_cycles) CPU cycles & The CPU CYCLES counter increases with \\
|
||||
& every clock cycle. However, it can be \\
|
||||
& affected by changes in clock frequency, \\
|
||||
& such as when WFI (Wait for Interrupt) \\
|
||||
& or WFE (Wait for Event) \\
|
||||
& instructions pause the clock. \\
|
||||
& \\
|
||||
(p/dtlb\_walk) Data TLB walks & Data TLB access with at least \\
|
||||
& one translation table walk. \\
|
||||
& \\
|
||||
@@ -1157,25 +1164,12 @@ This extension is described by Holt and Singh ~\cite{holt1995}.
|
||||
\begin{figure*}
|
||||
\begin{multicols}{2}
|
||||
\begin{subfigure}{\linewidth}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-dtlb-walk.png}
|
||||
\caption{DTLB Walks}
|
||||
\label{fig:dtlb-walk}
|
||||
\end{subfigure}\par
|
||||
\begin{subfigure}{\linewidth}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l1tlb-reads.png}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-l1_tlb_rd.png}
|
||||
\caption{L1 TLB Reads}
|
||||
\label{fig:l1tlb-reads}
|
||||
\end{subfigure}\par
|
||||
\end{multicols}
|
||||
|
||||
\begin{multicols}{2}
|
||||
\begin{subfigure}{\linewidth}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l1tlb-refill.png}
|
||||
\caption{L1 TLB Refill}
|
||||
\label{fig:l1tlb-refill}
|
||||
\end{subfigure}\par
|
||||
\begin{subfigure}{\linewidth}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-l2tlb-reads.png}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-l2_tlb_rd.png}
|
||||
\caption{L2 TLB Reads}
|
||||
\label{fig:l2tlb-reads}
|
||||
\end{subfigure}\par
|
||||
@@ -1183,12 +1177,25 @@ This extension is described by Holt and Singh ~\cite{holt1995}.
|
||||
|
||||
\begin{multicols}{2}
|
||||
\begin{subfigure}{\linewidth}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-ll-cache-rd.png}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-dtlb_walk.png}
|
||||
\caption{DTLB Walks}
|
||||
\label{fig:dtlb-walk}
|
||||
\end{subfigure}\par
|
||||
\begin{subfigure}{\linewidth}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-l1tlb_refill.png}
|
||||
\caption{L1 DTLB Refill}
|
||||
\label{fig:l1tlb-refill}
|
||||
\end{subfigure}\par
|
||||
\end{multicols}
|
||||
|
||||
\begin{multicols}{2}
|
||||
\begin{subfigure}{\linewidth}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-llcache.png}
|
||||
\caption{LL Cache Reads}
|
||||
\label{fig:ll-cache-rd}
|
||||
\end{subfigure}\par
|
||||
\begin{subfigure}{\linewidth}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/bargraph-large-wallclock.png}
|
||||
\includegraphics[width=\linewidth]{diagram/benchmarks-group/large/bargraph-large-wallclock.png}
|
||||
\caption{Wall Clock Time}
|
||||
\label{fig:wallclock}
|
||||
\end{subfigure}\par
|
||||
@@ -1207,7 +1214,7 @@ This extension is described by Holt and Singh ~\cite{holt1995}.
|
||||
% \caption{\label{fig:bargrapwh}Percentage difference between the modified memory allocator against the default system memory allocator}
|
||||
% \end{figure*}
|
||||
|
||||
Figure \ref{fig:benchmarks-group} highlights the performance comparison between the modified memory allocator and
|
||||
Figure~\ref{fig:benchmarks-group} highlights the performance comparison between the modified memory allocator and
|
||||
Jemalloc, the default memory allocator. The FAT memory allocator is specifically optimised
|
||||
for use with huge pages and demonstrates a clear advantage in scenarios where memory allocation
|
||||
patterns benefit from its design. The results align with expectations, showcasing the impact
|
||||
@@ -1225,7 +1232,7 @@ of its capability to handle memory more efficiently by leveraging huge pages.
|
||||
% FAT allocator embedded inside Jemalloc. These results suggest that FAT allocator embedded inside Jemalloc may arrange memory
|
||||
% in a manner that enhances spatial locality at the page level, particularly for workloads like Memaccess and Glibc.
|
||||
|
||||
\item L1 TLB reads: L1 TLB reads are critical for achieving fast memory access; therefore, a
|
||||
\item L1 TLB reads (Figure~\ref{fig:l1tlb-reads}): L1 TLB reads are critical for achieving fast memory access; therefore, a
|
||||
reduction in events that could signify misses or lead to further lookups is generally beneficial.
|
||||
In the Kmeans benchmark, the FAT allocator demonstrated 13\% fewer L1 TLB reads than the baseline allocator.
|
||||
However, when the FAT allocator was embedded within Jemalloc, the L1 TLB reads were the same as the baseline.
|
||||
@@ -1234,7 +1241,7 @@ of its capability to handle memory more efficiently by leveraging huge pages.
|
||||
there was no difference for either allocator. For the Barnes benchmark, the FAT allocator exhibited 5\%
|
||||
fewer L1 TLB reads, and the result was the same for the FAT allocator embedded within Jemalloc.
|
||||
|
||||
\item L2 TLB reads: L2 Data TLB reads (or lookups) serve as a secondary cache for address translations.
|
||||
\item L2 TLB reads (Figure~\ref{fig:l2tlb-reads}): L2 Data TLB reads (or lookups) serve as a secondary cache for address translations.
|
||||
FAT allocator consistently performed at 98\% lesser L2 TLB reads for this metric across all benchmarks except Barnes
|
||||
which was 4\% lesser. FAT allocator embedded inside Jemalloc also showed significant change for Kmeans, Memaccess, and Richards. However, for the Glibc benchmark
|
||||
it achieved a reduction of 60\% in L2 TLB reads. This mirrors its L1D TLB improvement for Glibc and suggests that its
|
||||
@@ -1242,7 +1249,7 @@ of its capability to handle memory more efficiently by leveraging huge pages.
|
||||
Glibc's high frequency of malloc calls that stress memory management. A minor reduction of 5 \% was also observed for the Barnes
|
||||
benchmark with FAT allocator embedded inside Jemalloc.
|
||||
|
||||
\item DTLB walks: which occur when a virtual-to-physical
|
||||
\item DTLB walks (Figure~\ref{fig:dtlb-walk}): which occur when a virtual-to-physical
|
||||
address translation is not found in the DTLB and a page table traversal is necessary, represent a performance
|
||||
cost. thus, fewer walks are preferable. In the observed tests neither FAT allocator nor FAT allocator embedded inside Jemalloc
|
||||
demonstrated significant deviation from the baseline performance of 99\% lesser walks.
|
||||
@@ -1253,7 +1260,7 @@ of its capability to handle memory more efficiently by leveraging huge pages.
|
||||
% of DTLB misses that necessitate page table walks within these specific workloads. Even for the Memaccess benchmark,
|
||||
% which is designed with random list traversals that can stress TLB pressure, the impact on dTLB walks was negligible according to the provided graphs.
|
||||
|
||||
\item L1 TLB refills: L1 Data TLB refills are a direct consequence of L1 TLB misses; therefore, fewer refills
|
||||
\item L1 TLB refills (Figure~\ref{fig:l1tlb-refill}): L1 Data TLB refills are a direct consequence of L1 TLB misses; therefore, fewer refills
|
||||
indicate better performance. Interestingly, despite the variations observed in L1 TLB reads for the FAT allocator
|
||||
embedded within Jemalloc, the L1 TLB refills metric showed a significant reduction of 99\% for both the standalone
|
||||
FAT allocator and the FAT allocator embedded within Jemalloc. This consistent and substantial improvement over the baseline was observed across all tested benchmarks: Kmeans, Memaccess, Glibc, Richards, and Barnes.
|
||||
@@ -1266,12 +1273,12 @@ of its capability to handle memory more efficiently by leveraging huge pages.
|
||||
% events than solely those leading to refills, or perhaps the absolute number of critical misses resulting in refills was minimal to begin with and thus
|
||||
% not significantly affected by the allocators in these tests.
|
||||
|
||||
\item Last-level cache: Cache read misses in the Last-Level Cache (LLC) are critical performance indicators, as they typically lead to
|
||||
\item Last-level cache (Figure~\ref{fig:ll-cache-rd}): Cache read misses in the Last-Level Cache (LLC) are critical performance indicators, as they typically lead to
|
||||
slower data retrievals from main memory. Consequently, a lower number of misses is highly desirable. The performance on this
|
||||
metric varied considerably across both allocators and benchmarks. The FAT allocator exhibited the highest variance in the
|
||||
kmeans benchmark, achieving 57\% fewer cache misses compared to the baseline allocator. In contrast, it recorded 18\% more
|
||||
misses in memaccess, 65\% fewer in glibc, 31\% more in Richards, and 18\% more in barnes.
|
||||
When the FAT allocator was embedded within jemalloc, the results shifted notably: kmeans experienced 19\% more misses
|
||||
When the FAT allocator was embedded within Jemalloc, the results shifted notably: kmeans experienced 19\% more misses
|
||||
relative to the baseline, memaccess saw a substantial 77\% reduction, while glibc incurred a dramatic 370\% increase particularly
|
||||
significant given its malloc intensive nature. There was no change in LLC misses for Richards, whereas barnes suffered from 68\%
|
||||
more misses.
|
||||
@@ -1292,11 +1299,11 @@ of its capability to handle memory more efficiently by leveraging huge pages.
|
||||
% This high variability indicates that memory placement strategies of the allocators interact diversely with the specific access patterns of each benchmark,
|
||||
% such as the difference between the large data arrays in K-Means versus the linked structures common in Memaccess or Richards.
|
||||
|
||||
\item Wall clock: Wallclock time serves as the definitive metric for evaluating overall execution performance.
|
||||
\item Wall clock (Figure~\ref{fig:wallclock}): Wallclock time serves as the definitive metric for evaluating overall execution performance.
|
||||
When using the FAT allocator, glibc demonstrated the most significant improvement, with a 51\% reduction in wallclock
|
||||
runtime compared to the baseline allocator. This was followed by memaccess with a 34\% decrease, barnes with a 4\% reduction,
|
||||
and kmeans with a modest 1.8\% improvement. Conversely, Richards exhibited a slight increase of 1\% in runtime.
|
||||
When the FAT allocator was integrated into jemalloc, the performance impact varied. Glibc experienced a 16.2\% increase
|
||||
When the FAT allocator was integrated into Jemalloc, the performance impact varied. Glibc experienced a 16.2\% increase
|
||||
in wallclock time, while barnes showed a 7\% rise. Both Richards and kmeans maintained the same runtime as the baseline
|
||||
allocator, whereas memaccess recorded a 4\% reduction.
|
||||
|
||||
@@ -1412,21 +1419,51 @@ bottlenecked by factors such as computation or I/O rather than memory translatio
|
||||
% This modification reduces the dependency on the TLB, decreasing latency and improving performance, especially for frequent memory operations.
|
||||
|
||||
\section{Conclusion} %Title of the Conclusion
|
||||
This paper addresses the growing disparity between application workloads and the capacity of TLBs.
|
||||
To mitigate this gap, FAT proposed leveraging physically contiguous memory with CHERI bounds to reduce TLB walks.
|
||||
FAT is a memory allocator that uses huge pages with the CHERI CC scheme to track allocations within the
|
||||
allocated huge page. This approach reduces the number of TLB entries needed while using bounds
|
||||
to minimise fragmentation.
|
||||
This paper has presented FAT, a memory allocator
|
||||
designed to address the growing mismatch between application memory demands and
|
||||
the limited reach of TLBs in modern processors.
|
||||
By leveraging physically contiguous memory through huge pages and embedding
|
||||
allocation metadata within CHERI's compressed capability based pointers,
|
||||
FAT significantly reduces the overhead associated with virtual-to-physical
|
||||
address translation.
|
||||
\newline
|
||||
FAT achieves block-based allocation within huge pages, enabling memory tracking
|
||||
without relying heavily on traditional page table mechanisms. Benchmark evaluations
|
||||
demonstrate that FAT can reduce TLB walks by up to 99\%, resulting in substantial
|
||||
performance improvements in memory-intensive workloads. When applied to
|
||||
microbenchmarks, FAT reduced wall-clock runtime by up to 51\% for Glibc and
|
||||
34\% for Memaccess, while also achieving up to 68\% fewer L1 TLB reads and 98\%
|
||||
fewer L2 TLB reads. In contrast, macro benchmarks such as Kmeans and Barnes
|
||||
showed more modest gains of 1.8\% and 4\% in runtime, respectively, reflecting
|
||||
the allocator's limited impact in compute-bound scenarios.
|
||||
\newline
|
||||
Although performance gains are less significant for larger or computation-heavy applications,
|
||||
the results underscore the allocator's potential to enhance memory management in
|
||||
high-throughput environments. More broadly, this work demonstrates how
|
||||
capability based architectures originally designed to ensure memory safety can
|
||||
be effectively repurposed to optimise address translation.
|
||||
FAT thus represents a promising direction for developing more scalable
|
||||
and efficient memory allocation strategies in systems adopting
|
||||
capability aware architectures.
|
||||
% This paper addresses the growing disparity between application workloads and the capacity of TLBs.
|
||||
% To mitigate this gap, FAT proposed leveraging physically contiguous memory with CHERI bounds to reduce TLB walks.
|
||||
% FAT is a memory allocator that uses huge pages with the CHERI CC scheme to track allocations within the
|
||||
% allocated huge page.
|
||||
|
||||
|
||||
% This approach reduces the number of TLB entries needed while using bounds
|
||||
% to minimise fragmentation.
|
||||
% Additionally,
|
||||
% the report explores advancements in system security, particularly through the Capability Hardware Enhanced RISC Instructions (CHERI)
|
||||
% architecture. CHERI's capability-based addressing enhances system security by associating capabilities with memory pointers,
|
||||
% 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 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.
|
||||
|
||||
% \newline
|
||||
% The benchmarks demonstrates the FAT allocator and the FAT allocator embedded within Jemalloc which reduces the TLB walks by upto 99\%,
|
||||
% 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.
|
||||
|
||||
|
||||
|
||||
|
||||