DPDK記憶體管理一 結構體

2021-08-14 04:55:32 字數 1916 閱讀 4956

dpdk的記憶體管理工作主要分布在幾個大的部分:大頁初始化與管理,記憶體管理。使用大頁可以減少頁表開銷,是為了儘量減少tbl miss導致的效能損失。基於大頁,dpdk又進一步細化管理這部分記憶體,使得分配,**更加方便。

大頁記憶體的基本原理在前面已經解釋過了,這裡就不在繼續。

/**

* the structure for the memory configuration for the rte.

* used by the rte_config structure. it is separated out, as for multi-process

* support, the memory details should be shared across instances

*/struct rte_mem_config __attribute__((__packed__));

/**

* physical memory segment descriptor.

*/struct rte_memseg ;

#ifdef rte_librte_ivshmem

phys_addr_t ioremap_addr; /**< real physical address inside the vm */

#endif

size_t len; /**< length of the segment. memseg的包含的空間size*/

uint64_t hugepage_sz; /**< the pagesize of underlying memory 大頁記憶體的size 2m /1g? */

int32_t socket_id; /**< numa socket id. */

uint32_t nchannel; /**< number of channels. */

uint32_t nrank; /**< number of ranks. */

#ifdef rte_librte_xen_dom0

/**< store segment mfns */

uint64_t mfn[dom0_num_memblock];

#endif

} __rte_packed;

/**

* a structure describing a memzone, which is a contiguous portion of

* physical memory identified by a name.

*/struct rte_memzone ;

#ifdef rte_librte_ivshmem

phys_addr_t ioremap_addr; /**< real physical address inside the vm */

#endif

size_t len; /**< length of the memzone. */

uint64_t hugepage_sz; /**< the page size of underlying memory */

int32_t socket_id; /**< numa socket id. */

uint32_t flags; /**< characteristics of this memzone. */

uint32_t memseg_id; /**< memseg it belongs. */

} __attribute__((__packed__));

記憶體管理 結構體

一.記憶體存放位置 全域性變數 靜態區域性變數儲存在全域性資料區,初始化的和未初始化的分別儲存在一起 普通區域性變數儲存在堆疊中 全域性變數和區域性變數在記憶體裡的區別?預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放...

記憶體管理,結構體

1.如何防止記憶體分配不成功,卻錯誤的使用記憶體?使用前用if p null 來防錯 2.使用free釋放記憶體後,需要將指標置null嗎 需要,不然會產生野指標 3.出現段錯誤的原因?訪問了錯誤的記憶體段,一般是你沒有許可權,或者根本就不存在對應的物理記憶體,常見的是訪問0位址 4.如何快速定位造...

dpdk記憶體管理 初始化

dpdk的記憶體初始化工作,主要是將hugetlbfs的配置的大記憶體頁,根據其對映的實體地址是否連續 屬於哪個socket等,有效的組織起來,為後續管理提供便利。eal hugepage info init 主要是獲取配置好的hugetlbfs的相關資訊,並將其儲存在struct internal...