• 2024-11-04linux内存管理学习总结
    一、内存寻址1.1逻辑地址、线性地址、物理地址的概念1.2逻辑地址转换线性地址步骤1.3线性地址到物理地址的转换二、内存管理2.1引导内存分配器阶段2.2内存管理子系统2.332位架构的地址空间划分2.464位架构的地址空间划分2.5内核态的内存管理2.6用户态内存管理
  • 2024-11-02伙伴系统和slab分配器
    伙伴系统(buddysystem)当一个请求需要分配m个物理页,buddysystem会寻找一个有\(2^n\)页的块(\(2^n-1<m<2^n\))分配给他。我们使用一个空闲链表数组实现buddysystem,其中a[i]代表块大小为\(2^i个页\)(每页为4kb)假设我们要分配15kb内存,根据buddysystem,我们需要寻找一个16
  • 2024-09-28slab分配器
    主要参考这本书:《UnderstandingtheLinuxvirtualmemorymanager》,链接:https://www.eecg.utoronto.ca/~yuan/teaching/archive/ece344_2017w/linux-vmm.pdf,书上的Chapter9就是讲slab分配器的。注意这本书是2004的,很多参数可能已经过时了,这个博客会结合我自己的电脑硬件配置来
  • 2024-09-15Linux内存管理方式
    Linux内存管理涉及到多个方面,包括物理内存的分配和回收、虚拟内存的管理、页面置换、内存保护等。以下是Linux内存管理的主要方式和机制:1.虚拟内存(VirtualMemory)虚拟地址空间:每个进程拥有自己的虚拟地址空间,虚拟地址空间与物理内存是分开的。进程在运行时使用虚拟地
  • 2024-08-30Redis全体系:基础、高级特性与性能调优
    一、Redis的内存管理Redis作为一个内存数据库,性能的关键之一就在于其高效的内存管理。在了解Redis的内存管理之前,我们需要了解其存储结构。1.Redis对象和编码Redis中的每一个数据存储在内存中都是以对象的形式存在的。Redis对象包括以下几种:字符串对象:REDIS_STRING列表
  • 2024-08-26学懂C++(四十四):C++ 自定义内存管理的深入解析:内存池与自定义分配器
    目录1.内存池(MemoryPool)概念模型特点核心点实现适用场景经典示例实现代码解析2.自定义分配器(CustomAllocators)概念模型特点核心点实现适用场景经典示例实现代码解析高级自定义分配器示例代码解析总结        C++作为一种高性能编程语言,在
  • 2024-08-13【C++ STL分配器】详细介绍
    C++中的分配器(Allocator)是用于抽象和管理内存分配与释放的机制,主要用于标准模板库(STL)容器。分配器的设计允许开发者自定义内存管理策略,从而优化性能、满足特殊需求或实现特定功能(如内存池、共享内存等)。本文将详细介绍C++分配器的概念、作用、自定义分配器的实现以及
  • 2024-07-20Chromium源码阅读(8):了解Base库里的PartitionAlloc模块
    Chromium代码库不是只使用malloc()。例如:渲染器(Blink)的大部分使用两个自制的分配器,PartitionAlloc和BlinkGC(Oilpan)。一些子系统(例如V8JavaScript引擎)可以自主处理内存管理。代码库的各个部分使用诸如SharedMemory或DiscardableMemory之类的抽象,与上述类似,它们有自己
  • 2024-07-06内存管理-15-slab、slob和slub分配器-初探
    一、slab简介1.简介首先,“slab”已成为一个通用名称,指的是使用对象缓存的内存分配策略,可实现内核对象的高效分配和释放。它最初由Sun工程师JeffBonwick记录下来,并在Solaris2.4内核中实现。Linux目前为其“slab”分配器提供了三种选择:Slab是最初的分配器,基于Bonwic
  • 2024-06-21Go 内存模型与分配机制
  • 2024-05-16buffer/cach太高导致k8s无法新建pod分配内存
    1.使用hcache查看buff/cache占用情况执行下面的命令安装hcache,原hcache项目地址https://github.com/silenceshell/hcachewgethttps://silenceshell-1255345740.cos.ap-shanghai.myqcloud.com/hcachechmod+xhcachemvhcache/usr/local/bin/查看缓存排名前十的进程hc
  • 2024-04-24K8S集群问题:案例一:Java调用Glibc2.28-69内存分配器无法限制虚拟内存VIRT问题
    一、问题描述1、背景:租户反馈,Apr711:22容器出现夯死现象,容器部署的单个java进程;宿主机上,top显示的容器进程virt内存持续增长32G,目前messages日志没有看到oom的记录,基本是。租户其他bc7、8系统上有添加参数MALLOC_ARENA_MAX进行限制,基本维持在16G左右,目前bcoe21.10系统配置
  • 2024-04-10软件系统复杂度带来的问题--高性能
    复杂度来源:高性能       计算机,从电子管计算机到晶体管计算机再到集成电路计算机,运算性能从每秒几次提升到每秒几亿次。但伴随性能越来越高,相应的方法和系统复杂度也是越来越高。现代的计算机CPU集成了几亿颗晶体管,逻辑复杂度和制造复杂度相比最初的晶体管计算机,根本不
  • 2024-03-21【Linux】内核学习笔记(一)——进程管理
    1.进程描述符1.1.进程描述符的表示和存放进程描述符task_struct完整地描述了进程的所有信息,它由slab分配器 (小内存分配)分配产生,并存放在叫任务队列(tasklist)的双向循环链表中。  一文看懂slab分配器实现https://zhuanlan.zhihu.com/p/523241576 伙伴系统和slab分配
  • 2024-03-10nand2tetris_选择器和分配器
    布尔函数基础布尔运算符AndOrNot布尔函数布尔函数类比数学里的方程,可以认为自变量的取值只有0和1两种,也就是说,布尔函数是可以枚举的,即真值表。布尔函数(可能需要化简)可以认为是等价于真值表。更多时候,往往需要从真值表(结果,或者说需求)推导出布尔函数,再化简设计出最优电
  • 2023-12-25ncnn的blob_vkallocator、workspace_vkallocator、staging_vkallocator区别
    ncnn::Extractor中有三个成员函数:voidset_blob_vkallocator(VkAllocator*allocator);voidset_workspace_vkallocator(VkAllocator*allocator);voidset_staging_vkallocator(VkAllocator*allocator);blob_vkallocator是一个用于blob数据的分配器,它可以为一些长期存储
  • 2023-12-17Redis不同版本,内存分配,硬件的性能研究
    Redis不同版本,内存分配,硬件的性能研究前言Konwmore!Domore!Gainmore!骨折之后开始减肥.前段时间跳绳导致膝盖不舒服,现在改骑车和走路.在有限的没人有烦的时间里,还是想能够多学习一些东西.之前了解了isolcpus现在突然想内存分配可能也有性能影响.所以想研
  • 2023-12-09genalloc/genpool 子系统 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/genalloc.htmlgenalloc/genpool子系统内核中有许多内存分配子系统,每个子系统都针对特定的需求。然而,有时内核开发人员需要为特定范围的特定用途内存实现新的分配器;通常这些内存位于设备的某个位置。该设备的驱动程序的作者当
  • 2023-12-09引导时内存管理 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/boot-time-mm.html#c.memblock_flags"Boottimememorymanagement"(引导时间内存管理)早期系统初始化不能简单地使用“正常”的内存管理,因为它还没有设置。但是仍然需要为各种数据结构分配内存,例如物理页面分配器。一种名为mem
  • 2023-12-09内存分配指南 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/memory-allocation.html内存分配指南Linux提供了各种用于内存分配的API。您可以使用kmalloc或kmem_cache_alloc系列来分配小块内存,使用vmalloc及其衍生物来分配大的虚拟连续区域,或者直接使用alloc_pages从页面分配器请求页面。
  • 2023-11-141825_ChibiOS的OSLIB中的存储分配器
    GreyZhang/g_ChibiOS:IfoundanewRTOScalledChibiOSanditseemsinteresting!(github.com)1.之前有点不是很理解什么是静态OS,从这里基本上得到了这个答案。所谓的静态,其实就是内核之中不会使用Free以及Malloc这样的存储分配功能。2.虽然内核之中没有用到这样的存储动态
  • 2023-10-27Unity ECS内存分配器原理详解
    ECS为什么会高效,性能好,Entity的内存布局与分配就是非常重要的部分,今天我们一起来分析一下UnityECS架构里面如何来做高效的内存分配器。这种思路也可以给我们做内存分配提供很好的一个思路。1:ECS 里面基本的一些概念UnityECS框架里面有几个重要的概念:Entity,ComponentD
  • 2023-10-23怎么用电脑连接会议室显示屏?
     现代会议显示设备中,越来越多的高清技术应用于会议场景中,这些显示产品不仅可以实现会议功能,还能实现网络化和智能投屏,因其在会议中大部分还是会使用电脑来操作这些显示屏,那今天小编分三种产品来指导下怎么用电脑直接操作显示屏? 第一种:拼接屏除了拼接屏和电脑之外,需要一个控制设备
  • 2023-10-08slab分配器
    前言slab分配器从伙伴系统获取页帧进行管理,对外为一些固定size的小内存块和特定内核数据结构提供缓存和内存分配服务。slab分配器为的是满足内核中小内存块的分配需求,毕竟伙伴系统的内存分配以page为单位实在太大了。使用slab带来以下几个好处:减少了伙伴系统的访问次数,小内存
  • 2023-09-26Redis内存碎片:深度解析与优化策略
    本文已收录至GitHub,推荐阅读