saving current changes
This commit is contained in:
@@ -52,10 +52,10 @@
|
||||
\newlabel{alg:free}{{2}{4}{Free implementation}{algorithm.2}{}}
|
||||
\citation{jemalloc}
|
||||
\citation{cheribsd}
|
||||
\citation{Benchmark}
|
||||
\citation{Morello}
|
||||
\citation{BenchmarkABI}
|
||||
\citation{PerformanceCounter}
|
||||
\citation{Benchmark}
|
||||
\citation{singh1993}
|
||||
\citation{holt1995}
|
||||
\@writefile{loa}{\contentsline {algorithm}{\numberline {3}{\ignorespaces Init alloc function to create a initial 1 GB huge page}}{5}{algorithm.3}\protected@file@percent }
|
||||
@@ -73,6 +73,7 @@
|
||||
\newlabel{sec:Results}{{6.3}{6}{Results}{subsection.6.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}{}}
|
||||
\newlabel{table:ARMPerf}{{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 }
|
||||
@@ -92,10 +93,10 @@
|
||||
\bibcite{chen_flexpointer_2023}{{11}{2023}{{Chen et~al.}}{{Chen, Tong, Yang, Yi, and Cheng}}}
|
||||
\bibcite{jemalloc}{{12}{2006}{{Evans}}{{}}}
|
||||
\bibcite{cheribsd}{{13}{}{{che}}{{}}}
|
||||
\bibcite{Morello}{{14}{}{{Mor}}{{}}}
|
||||
\bibcite{BenchmarkABI}{{15}{2023}{{Watson et~al.}}{{Watson, Clarke, Sewell, Woodruff, Moore, Barnes, Grisenthwaite, Stacer, Baranga, and Richardson}}}
|
||||
\bibcite{PerformanceCounter}{{16}{}{{Per}}{{}}}
|
||||
\bibcite{Benchmark}{{17}{}{{Ben}}{{}}}
|
||||
\bibcite{Benchmark}{{14}{}{{Ben}}{{}}}
|
||||
\bibcite{Morello}{{15}{}{{Mor}}{{}}}
|
||||
\bibcite{BenchmarkABI}{{16}{2023}{{Watson et~al.}}{{Watson, Clarke, Sewell, Woodruff, Moore, Barnes, Grisenthwaite, Stacer, Baranga, and Richardson}}}
|
||||
\bibcite{PerformanceCounter}{{17}{}{{Per}}{{}}}
|
||||
\bibcite{singh1993}{{18}{1993}{{Singh}}{{}}}
|
||||
\bibcite{holt1995}{{19}{1995}{{Holt and Singh}}{{}}}
|
||||
\newlabel{tocindent-1}{0pt}
|
||||
|
||||
@@ -128,6 +128,12 @@ Benchmark {ABI} - {CheriBSD} 23.11 new features tutorial.
|
||||
\newblock URL
|
||||
\url{https://www.cheribsd.org/tutorial/23.11/benchmark/index.html}.
|
||||
|
||||
\bibitem[Ben()]{Benchmark}
|
||||
{CHERI}-allocator/benchmarks/benchmarks/{StressTestMalloc}/glibc-bench.c at
|
||||
main · akilan1999/{CHERI}-allocator.
|
||||
\newblock URL
|
||||
\url{https://github.com/Akilan1999/CHERI-Allocator/blob/main/benchmarks/benchmarks/StressTestMalloc/glibc-bench.c}.
|
||||
|
||||
\bibitem[Mor()]{Morello}
|
||||
Department of computer science and technology – {CHERI}: The arm morello
|
||||
board.
|
||||
@@ -149,12 +155,6 @@ Robert N.~M. Watson, Jessica Clarke, Peter Sewell, Jonathan Woodruff, Simon~W.
|
||||
Arm architecture reference manual for a-profile architecture.
|
||||
\newblock URL \url{https://developer.arm.com/documentation/ddi0487/latest}.
|
||||
|
||||
\bibitem[Ben()]{Benchmark}
|
||||
{CHERI}-allocator/benchmarks/benchmarks/{StressTestMalloc}/glibc-bench.c at
|
||||
main · akilan1999/{CHERI}-allocator.
|
||||
\newblock URL
|
||||
\url{https://github.com/Akilan1999/CHERI-Allocator/blob/main/benchmarks/benchmarks/StressTestMalloc/glibc-bench.c}.
|
||||
|
||||
\bibitem[Singh(1993)]{singh1993}
|
||||
Jaswinder~Pal Singh.
|
||||
\newblock \emph{Parallel Hierarchical N-body Methods and Their Implications for
|
||||
|
||||
@@ -23,9 +23,9 @@ Warning--empty year in woodruff_cheri_2019
|
||||
Warning--empty year in karakostas_redundant_2015
|
||||
Warning--empty year in karakostas_redundant_2015
|
||||
Warning--empty year in cheribsd
|
||||
Warning--empty year in Benchmark
|
||||
Warning--empty year in Morello
|
||||
Warning--empty year in PerformanceCounter
|
||||
Warning--empty year in Benchmark
|
||||
You've used 19 entries,
|
||||
2481 wiz_defined-function locations,
|
||||
694 strings with 9651 characters,
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# Fdb version 4
|
||||
["bibtex paper"] 1745589516.16405 "paper.aux" "paper.bbl" "paper" 1745589517.84714 0
|
||||
["bibtex paper"] 1746119832.08846 "paper.aux" "paper.bbl" "paper" 1746120482.23376 0
|
||||
"./paperReferences.bib" 1745589340.63702 48697 d4883e407b5f720043f557e554344075 ""
|
||||
"/usr/local/texlive/2025/texmf-dist/bibtex/bst/natbib/unsrtnat.bst" 1233624470 24550 a41a6405f4de768c43e871d9fbce2bc8 ""
|
||||
"paper.aux" 1745589517.5207 8552 e0b379fd395dbbe6ebf080ac5170b445 "pdflatex"
|
||||
"paper.aux" 1746120481.91943 8630 8ff874d683ff65b7a1eef85ee83441f1 "pdflatex"
|
||||
(generated)
|
||||
"paper.bbl"
|
||||
"paper.blg"
|
||||
(rewritten before read)
|
||||
["pdflatex"] 1745589516.25369 "paper.tex" "paper.pdf" "paper" 1745589517.84729 0
|
||||
["pdflatex"] 1746120480.61771 "paper.tex" "paper.pdf" "paper" 1746120482.23388 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 ""
|
||||
@@ -219,10 +219,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" 1745589517.5207 8552 e0b379fd395dbbe6ebf080ac5170b445 "pdflatex"
|
||||
"paper.bbl" 1745589516.2507 7952 406fd33fafd3f295010669ce5a521439 "bibtex paper"
|
||||
"paper.out" 1745589517.52145 3219 ff23a20e7f9cd62748c922bd1981ad35 "pdflatex"
|
||||
"paper.tex" 1745589509.64475 84123 a4d189845b5fe4a229f1c06aa03b110b ""
|
||||
"paper.aux" 1746120481.91943 8630 8ff874d683ff65b7a1eef85ee83441f1 "pdflatex"
|
||||
"paper.bbl" 1746119832.17155 7952 3cec73ed2c35c17fe652d73c68776561 "bibtex paper"
|
||||
"paper.out" 1746120481.92017 3219 ff23a20e7f9cd62748c922bd1981ad35 "pdflatex"
|
||||
"paper.tex" 1746120448.7184 84344 b3fefa270d2a57b400742b41f24533a9 ""
|
||||
(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) 25 APR 2025 14:58
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025) (preloaded format=pdflatex 2025.4.2) 1 MAY 2025 18:28
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
@@ -1334,34 +1334,34 @@ LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be
|
||||
[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 (2.01144pt too wide) in paragraph at lines 751--754
|
||||
\T1/LinuxLibertineT-TLF/m/n/9 (-20) loc [[]]. Je-mal-loc is the de-fault mem-or
|
||||
y al-lo-ca-tor for CHERIBSD [[]].
|
||||
Overfull \hbox (12.4271pt too wide) in paragraph at lines 751--754
|
||||
\T1/LinuxLibertineT-TLF/m/n/9 (-20) con-ducted. Je-mal-loc is the de-fault mem-
|
||||
ory al-lo-ca-tor for CHERIBSD [[]].
|
||||
[]
|
||||
|
||||
|
||||
|
||||
LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/it' will be
|
||||
(Font) scaled to size 9.0pt on input line 868.
|
||||
LaTeX Font Info: Trying to load font information for T1+zi4 on input line 86
|
||||
9.
|
||||
(Font) scaled to size 9.0pt on input line 869.
|
||||
LaTeX Font Info: Trying to load font information for T1+zi4 on input line 87
|
||||
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 869.
|
||||
(Font) scaled to size 9.0pt on input line 870.
|
||||
Package microtype Info: Loading generic protrusion settings for font family
|
||||
(microtype) `zi4' (encoding: T1).
|
||||
(microtype) For optimal results, create family-specific settings.
|
||||
(microtype) See the microtype manual for details.
|
||||
<diagram/bargraph.png, id=183, 1156.32pt x 722.7pt>
|
||||
<diagram/bargraph.png, id=184, 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 912.
|
||||
Package pdftex.def Info: diagram/bargraph.png used on input line 913.
|
||||
(pdftex.def) Requested size: 455.6624pt x 284.78517pt.
|
||||
|
||||
|
||||
Class acmart Warning: A possible image without description on input line 914.
|
||||
Class acmart Warning: A possible image without description on input line 915.
|
||||
|
||||
|
||||
LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
@@ -1380,18 +1380,18 @@ Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
|
||||
[6.6]
|
||||
<./diagram/kmeans.png, id=208, 1011.78pt x 578.16pt>
|
||||
<./diagram/kmeans.png, id=209, 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 962.
|
||||
Package pdftex.def Info: ./diagram/kmeans.png used on input line 963.
|
||||
(pdftex.def) Requested size: 265.2637pt x 151.57959pt.
|
||||
|
||||
Overfull \hbox (24.11621pt too wide) in paragraph at lines 962--963
|
||||
Overfull \hbox (24.11621pt too wide) in paragraph at lines 963--964
|
||||
[][]
|
||||
[]
|
||||
|
||||
|
||||
Class acmart Warning: A possible image without description on input line 964.
|
||||
Class acmart Warning: A possible image without description on input line 965.
|
||||
|
||||
|
||||
Underfull \vbox (badness 2096) has occurred while \output is active []
|
||||
@@ -1404,9 +1404,12 @@ Underfull \vbox (badness 10000) has occurred while \output is active []
|
||||
|
||||
|
||||
[7.7 <./diagram/bargraph.png> <./diagram/kmeans.png>] (./paper.bbl
|
||||
Underfull \vbox (badness 3623) has occurred while \output is active []
|
||||
|
||||
|
||||
Underfull \hbox (badness 2443) in paragraph at lines 153--157
|
||||
|
||||
|
||||
Underfull \hbox (badness 2443) in paragraph at lines 132--136
|
||||
[]\T1/LinuxLibertineT-TLF/m/n/7 (+20) CHERI-allocator/benchmarks/benchmarks/Str
|
||||
essTestMalloc/glibc-bench.c at
|
||||
[]
|
||||
@@ -1442,11 +1445,11 @@ Package rerunfilecheck Info: File `paper.out' has not changed.
|
||||
(rerunfilecheck) Checksum: FF23A20E7F9CD62748C922BD1981AD35;3219.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
24068 strings out of 473190
|
||||
394868 string characters out of 5715801
|
||||
972033 words of memory out of 5000000
|
||||
46206 multiletter control sequences out of 15000+600000
|
||||
777479 words of font info for 467 fonts, out of 8000000 for 9000
|
||||
24072 strings out of 473190
|
||||
394964 string characters out of 5715801
|
||||
973149 words of memory out of 5000000
|
||||
46207 multiletter control sequences out of 15000+600000
|
||||
777850 words of font info for 469 fonts, out of 8000000 for 9000
|
||||
1302 hyphenation exceptions out of 8191
|
||||
90i,16n,131p,1002b,645s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</usr/local/texlive/2025/texmf-dist/fonts/type1/public/inconsolata/Inconsolat
|
||||
@@ -1460,10 +1463,10 @@ lic/libertine/LinLibertineTB.pfb></usr/local/texlive/2025/texmf-dist/fonts/type
|
||||
1/public/libertine/LinLibertineTI.pfb></usr/local/texlive/2025/texmf-dist/fonts
|
||||
/type1/public/newtx/NewTXMI.pfb></usr/local/texlive/2025/texmf-dist/fonts/type1
|
||||
/public/newtx/txsys.pfb>
|
||||
Output written on paper.pdf (8 pages, 714425 bytes).
|
||||
Output written on paper.pdf (8 pages, 714473 bytes).
|
||||
PDF statistics:
|
||||
314 PDF objects out of 1000 (max. 8388607)
|
||||
265 compressed objects within 3 object streams
|
||||
316 PDF objects out of 1000 (max. 8388607)
|
||||
267 compressed objects within 3 object streams
|
||||
61 named destinations out of 1000 (max. 500000)
|
||||
119498 words of extra memory for PDF output out of 128383 (max. 10000000)
|
||||
|
||||
|
||||
Binary file not shown.
@@ -240,11 +240,11 @@
|
||||
% 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) means TLB misses
|
||||
are more frequent, costing additional clock cycles and impacting runtime performance. One solution is to use physically contiguous
|
||||
memory in conjunction with huge pages. We propose an alternative approach, by exploiting capability-based addressing in the
|
||||
CHERI architecture. This paper presents a new memory allocator. It associates capabilities with memory pointers. Integrating
|
||||
block-based allocations within huge pages. Our allocator reduces TLB misses by up to 90\%, which leads to decreasing runtimes
|
||||
The increasing gap between workload memory requirements and the capacity of translation lookaside buffers (TLBs) means 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 which associates capabilities with memory pointers by integrating
|
||||
block-based allocations within huge pages. Our allocator reduces TLB misses by up to 90\%, which leads to decreasing runtime
|
||||
for memory-intensive applications.
|
||||
\end{abstract}
|
||||
|
||||
@@ -335,12 +335,12 @@ memory address translations. A TLB is a specialised cache in the memory manageme
|
||||
It reduces the time required to convert virtual addresses to physical addresses. When a program accesses
|
||||
data in memory, the MMU first checks the TLB for a matching entry and avoids the slow process of
|
||||
accessing the page tables situated in memory. However, as applications grow more complex, the fixed size of
|
||||
TLBs often cannot keep up leading to more TLB misses and performance slowdowns~\cite{mittal_survey_2017}.
|
||||
TLBs often cannot keep up, leading to more TLB misses and performance slowdowns~\cite{mittal_survey_2017}.
|
||||
To tackle this issue, researchers have explored new solutions, including the use of
|
||||
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
|
||||
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
|
||||
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. By minimising
|
||||
@@ -351,10 +351,10 @@ workloads that rely heavily on large datasets.
|
||||
Simultaneously, advancements in hardware-level security, such as the Capability Hardware Enhanced RISC Instructions (CHERI)
|
||||
~\cite{woodruff_cheri_2014} architecture presents additional opportunities for performance enhancement. CHERI's capability-based addressing approach not
|
||||
only strengthens system security by tightly controlling memory access but also opens avenues for optimising memory management
|
||||
operations. By integrating CHERI's compressed encoded bounds~\cite{woodruff_cheri_2019} with the use of huge pages we have shown it is possible to track, manage
|
||||
operations. By integrating CHERI's compressed encoded bounds~\cite{woodruff_cheri_2019} with the use of huge pages, one of the contribution is demonstrating that it is possible to track, manage
|
||||
large and physically contiguous memory blocks without requiring numerous TLB entries. This combination reduces the TLB pressure by minimising the number of
|
||||
entries required to map extensive memory regions thereby decreasing TLB misses and improving address translation performance.
|
||||
Furthermore, we introduce FAT which accelerates memory-intensive tasks by reducing the overhead associated with managing non-contiguous
|
||||
Furthermore, this paper introduces Fat Address Translations(FAT) which accelerates memory-intensive tasks by reducing the overhead associated with managing non-contiguous
|
||||
memory allocations. The contributions for the following paper are as follows:
|
||||
\begin{itemize}
|
||||
\item \textbf{FAT Addresses Translations}: Introduces FAT that include memory bounds, allowing
|
||||
@@ -364,13 +364,13 @@ memory allocations. The contributions for the following paper are as follows:
|
||||
used to optimise memory allocation by encoding memory bounds directly within pointers, reducing TLB reliance
|
||||
(Section ~\ref{sec:128bitCompressedBounds}).
|
||||
|
||||
\item \textbf{Memory Allocation Algorithms}: Provides an algorithms for allocating, freeing
|
||||
\item \textbf{Memory Allocation Algorithms}: Provides an algorithm for allocating, freeing
|
||||
physically contiguous memory , and integrating huge pages with CHERI's capability-based bounds for enhanced memory management
|
||||
(Section ~\ref{sec:MemoryAllocator}).
|
||||
\end{itemize}
|
||||
|
||||
Through comprehensive evaluation including micro and macro benchmarks, we demonstrate the allocators ability
|
||||
to reduce TLB misses by up to 90\% which yields in significant improvements in wall clock runtimes for memory-intensive
|
||||
Through comprehensive evaluation including micro and macro benchmarks, It demonstrates the allocator's ability
|
||||
to reduce TLB misses by up to 90\% which yields significant improvements in wall clock runtimes for memory-intensive
|
||||
applications. While its impact on larger and computation-heavy workloads is less pronounced.
|
||||
The proposed allocator shows strong potential for advancing memory management in scenarios requiring
|
||||
high memory throughput by reducing the address translation overhead.
|
||||
@@ -516,7 +516,7 @@ in this implementation is the use of range addresses with CHERI CC~\cite{woodruf
|
||||
\end{figure*}
|
||||
|
||||
Figure \ref{fig:HighOverviewArchitecture} illustrates a comparison between standard memory allocation (\textit{malloc}) and the proposed FAT method. The standard approach involves a C program interacting with a custom allocator which uses 48-bit
|
||||
virtual addresses and a TLB walker (L1, L2 and L3 cache) to achieve non-contiguous allocation in physical memory.
|
||||
virtual addresses and the TLB hierarchy (L1, L2 and L3 cache) to achieve non-contiguous allocation in physical memory.
|
||||
This typically results in more TLB entries and increased TLB misses increasing the reasoning to have more TLB walks.
|
||||
In contrast, the FAT method employs a custom allocator leveraging
|
||||
physically contiguous memory by using CHERI to encode
|
||||
@@ -577,7 +577,7 @@ By using the CHERI bounds, this method maintains the contiguity of the allocated
|
||||
% within the FAT-Pointer which can be repurposed as ranges in memory allocators with custom allocation
|
||||
% sizes rather than fixed sized TLB entries.
|
||||
|
||||
We use CHERI CC~\cite{woodruff_cheri_2019} to track regions of memory in physically contiguous space.
|
||||
FAT uses 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 to decode bounds from the
|
||||
capability register and the bounds that are decoded are repurposed for tracking memory which is eagerly
|
||||
@@ -619,9 +619,9 @@ This approach offers a more flexible alternative to the traditional fixed-size T
|
||||
\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
|
||||
FAT is able to pre-allocate memory using huge pages and is able to mark smaller allocations
|
||||
using ranges by storing them as bounds within the pointer. Each of these memory ranges can be
|
||||
called a block. Since we have numerous blocks inside a huge page we allow block-based
|
||||
called a block. Since there are numerous blocks inside a huge page, This allows for abbreviated block-based
|
||||
memory patterns within physically contiguous memory.
|
||||
% As demonstrated with the allocator
|
||||
% implementation in section ~\ref{sec:MemoryAllocator}.
|
||||
@@ -655,7 +655,7 @@ on physically contiguous memory.
|
||||
|
||||
\section{Memory allocator design}
|
||||
\label{sec:MemoryAllocator}
|
||||
This section presents a straightforward memory allocator designed and is implemented based on the
|
||||
This section presents a straightforward 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
|
||||
@@ -748,11 +748,11 @@ applications and kernel-level operations.
|
||||
|
||||
\section{Evaluation}
|
||||
\label{sec:Evaluation}
|
||||
We conducted tests of the FAT memory allocator against Jemalloc~\cite{jemalloc}.
|
||||
Jemalloc is the default memory allocator for CHERIBSD~\cite{cheribsd}. We evaluated
|
||||
the reduction in TLB walks and misses and its impact on wall clock runtime.
|
||||
Benchmarks of the FAT memory allocator against Jemalloc~\cite{jemalloc} was conducted.
|
||||
Jemalloc is the default memory allocator for CHERIBSD~\cite{cheribsd}. The objective was to evaluate
|
||||
the reduction of TLB walks ,misses and its impact on the wall clock runtime.
|
||||
|
||||
To comprehensively analyse the proposed allocator, we categorised benchmarks into
|
||||
To comprehensively analyse the proposed allocator, the benchmarks~\cite{Benchmark} were categorised into
|
||||
two classes which are micro and macro benchmarks. Micro benchmarks comprise smaller
|
||||
C programs designed to target specific allocator patterns which enables us to evaluate
|
||||
detailed aspects of the allocators behavior. Macro benchmarks, on the other hand,
|
||||
@@ -808,7 +808,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 were carried out using ARM performance counters~\cite{PerformanceCounter} to
|
||||
Performance measurements (table ~\ref{table:ARMPerf}) were carried out using ARM 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.
|
||||
@@ -853,10 +853,11 @@ the proposed changes.
|
||||
& during a memory read operation.) \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\label{table:ARMPerf}
|
||||
\end{table*}
|
||||
|
||||
\subsection{Benchmarks}
|
||||
We elaborate here on the two classes of benchmarks~\cite{Benchmark}. Micro benchmarks
|
||||
Elaborated here are two classes of benchmarks. Micro benchmarks
|
||||
focus on particular allocation, deallocation patterns such as sequential and
|
||||
random memory accesses. This is to stress-test the allocator under controlled conditions.
|
||||
Macro benchmarks involves real-world applications offering insights into how
|
||||
@@ -899,7 +900,7 @@ which are held tasks for performance evaluation. Configurable iterations and
|
||||
timing help measure system performance to ensure correctness.
|
||||
\item \texttt{BARNES}: Implements the Barnes-Hut algorithm to efficiently simulate the interactions within
|
||||
an \(N\)-body system. A comprehensive overview of the Barnes-Hut method is provided by Singh in his doctoral
|
||||
dissertation ~\cite{singh1993}. The implementation we benchmark extends the original method by permitting multiple
|
||||
dissertation ~\cite{singh1993}. This implementation extends the original method by permitting multiple
|
||||
particles to be stored within each leaf cell of the spatial decomposition, enhancing performance and scalability.
|
||||
This extension is described by Holt and Singh ~\cite{holt1995}.
|
||||
\end{itemize}
|
||||
@@ -963,10 +964,10 @@ bottlenecked by factors such as computation or I/O rather than memory translatio
|
||||
\caption{\label{fig:org8683315}Kmeans COZ benchmark executed against various cluster sizes}
|
||||
\end{figure}
|
||||
|
||||
The K-means algorithm was executed with varying cluster sizes to evaluate the performance difference
|
||||
between the FAT allocator and Jemalloc as the workload scales. This analysis
|
||||
aims to understand how the allocators optimisations, particularly its ability to manage memory
|
||||
more efficiently with huge pages, impact performance under different workload conditions.
|
||||
The K-means algorithm was executed with varying cluster sizes as shown in figure~\ref{fig:org8683315}, to evaluate the performance difference
|
||||
between the FAT allocator and Jemalloc as the workload scales. This analysis
|
||||
aims to understand how the allocators optimisations, particularly its ability to manage memory
|
||||
more efficiently with huge pages, impact performance under different workload conditions.
|
||||
|
||||
For most cluster sizes tested, the percentage difference in performance remained relatively
|
||||
consistent. This indicates that the allocators efficiency scales predictably with increasing
|
||||
@@ -975,7 +976,7 @@ consistent performance gain is likely due to the allocators ability to minimise
|
||||
and efficiently manage memory allocations for the centroid and data point structures used in
|
||||
the K-means algorithm.
|
||||
|
||||
However, an anomaly was observed at a cluster size of 2000, where the percentage difference
|
||||
However, an anomaly was observed at a cluster size of 200k, 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 allocator. For example, the memory layout
|
||||
might interact with system-level caching mechanisms or TLB behavior differently leading to an
|
||||
@@ -1033,7 +1034,7 @@ applications with frequent and intensive memory operations rather than are compu
|
||||
\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.
|
||||
We designed a memory allocator that uses huge pages with the CHERI CC scheme to track allocations within the
|
||||
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,
|
||||
|
||||
Reference in New Issue
Block a user