Halloc記憶體分配器

2022-08-09 11:42:18 字數 593 閱讀 5195

max_nsbs 8192:預設的最大superblocks數量

sb_set_sz(max_nsbs / word_sz):superblock set的大小,每個set32個superblcoks

free_mem_g:裝置上釋放的總記憶體

max_alloc_mem_g:可以被分配的最大記憶體

total_mem_g:總的記憶體

cuda_mem_g:cuda分配器可使用的記憶體

初始化:

記憶體池不超過3/4global memory

定義slab的大小

記憶體池劃分為兩部分,一部分halloc使用,一部分cuda使用

將halloc可使用的部分記憶體劃分為superblocks,返回superblocks的記憶體位址(cudamalloc分配的)

定義superblock計數器

superblocks:

size_id:slab的size id

is_head:slab是否是head

chunk_id:slab chunk id

chunk_sz:slab chunk的大小

void *ptr:指向suprblock擁有的記憶體

記憶體分配 定長記憶體分配器

在各種記憶體分配演算法中,有一種很實用,實現起來也簡單 定長的記憶體分配器。即每次分配的記憶體大小是固定的。大概邏輯是 在一些區域性的單執行緒邏輯中,可以有效提高效率。很短,很容易看懂 fallocator.h pragma once 固定長度的記憶體分配器 include include incl...

記憶體分配器一

glibc記憶體管理學習 x86平台linux程序記憶體布局 text elf格式程式 data 程式執行時就能確定的資料,可讀可寫 bss 沒有初始化的全域性變數和靜態表裡 heap stack 由編譯器自動分配釋放,存放函式引數 區域性變數等 mmap 對映區域 實現乙個malloc 分頁與位址...

(六)記憶體分配器

c 的stl中定義了很多容器,容器的第二個模板引數通常為allocator型別。標準庫中allocator類定義在標頭檔案memory中,用於幫助將記憶體分配和物件的構造分離開來。它分配的記憶體是原始的 未構造的。allocatoralloc 定義了乙個可以分配string的allocator物件 ...