自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RToax

Just for Fun

转载 TCMalloc内存分配器如何减少内存碎片?

目录 前言 什么是内存碎片? 内存碎片-Freelist 内存碎片-Segregated-Freelist 内存碎片-Buddy-System 内存分配算法的比较 TCMalloc的内存碎片 TCMalloc的外部碎片 size-class的合并 size到size-class...

2020-11-24 22:45:53 7 2

转载 ptmalloc、tcmalloc与jemalloc内存分配器对比分析

目录 背景介绍 ptmalloc 系统向看ptmalloc内存管理 用户向看ptmalloc内存管理 线程中内存管理 Chunk说明 tcmalloc 系统向看tcmalloc内存管理 用户向看tcmalloc内存管理 tcmalloc的优势 jemalloc 系统向看je...

2020-11-24 22:22:28 42 4

翻译 TCMalloc:线程缓存Malloc以及tcmalloc与ptmalloc性能对比

目录 动机 用法 总览 小对象分配 大对象分配 跨度 解除分配 小型物品中央free清单 线程缓存的垃圾收集 性能说明 PTMalloc2单元测试 注意事项 Paul Menage的Sanjay Ghemawat <opensource@google.com>...

2020-11-24 22:08:21 6 1

转载 jemalloc内存分配器简介

目录 JeMalloc 基础知识 size_class - jemalloc 分配的内存大小 base - jemalloc 元数据内存的结构 bin -使用中的slab集合 extent -管理 jemalloc 内存块的结构 slab -用于分配small_class内存 ex...

2020-11-24 21:54:28 13 0

转载 图解tcmalloc内存分配器

目录 前言 如何分配定长记录? 如何分配变长记录? 大的对象如何分配? Span如何分配? 从Page到Span PageHeap 全局对象分配 ThreadCache 总结 参考 推荐阅读 前言 TCMalloc是 Google 开发的内存分配器,在不少项目中都有...

2020-11-24 21:43:34 7 1

翻译 使用jemalloc在Go中进行手动内存管理

目录 通过Cgo创建内存 jemalloc 在字节片上放置Go结构 用分配器摊销Calloc的成本 明智地参考 处理分配的GB 排序可变长度数据 捕捉内存泄漏 结论 推荐阅读 曼尼斯·赖·贾因(Manish Rai Jain) 自2015年成立以来,Dgraph L...

2020-11-24 20:54:04 7 0

转载 Linux内存管理:ARM64体系结构与编程之cache(3):cache一致性协议(MESI、MOESI)、cache伪共享

目录 为什么系统软件人员要深入了解cache? cache一致性协议 神马是MESI协议? MESI的操作 MESI状态图 演示:初始化状态为I的cache line 当本地CPU的缓存行状态为I时,发起读操作 当本地CPU的缓存行状态为I时,收到一个总线读的信号 当初始化状态为...

2020-11-21 23:52:34 33 0

转载 Linux虚拟化KVM-Qemu分析(六)之中断虚拟化

《Linux虚拟化KVM-Qemu分析(一)》 《Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化》 《Linux虚拟化KVM-Qemu分析(三)之KVM源码(1)》 《Linux虚拟化KVM-Qemu分析(四)之CPU虚拟化(2)》 《Linux虚拟化KVM-Qemu分析(五...

2020-11-21 22:13:06 17 0

转载 Linux I/O原理和零拷贝Zero-copy技术全面揭秘

目录 导言 计算机存储器 物理内存 虚拟内存 静态重定位 存储器抽象 交换(swapping)技术 虚拟内存技术 用户态和内核态 Linux I/O I/O 缓冲区 I/O 模式 程序控制 I/O 中断驱动 I/O DMA I/O 传统 I/O 读写模式 零拷贝 ...

2020-11-21 20:34:14 164 2

原创 DPDK 20.05 | rte_pci_bus思维导图 | 第一版

rte_pci_bus结构如下: struct rte_pci_bus rte_pci_bus = { .bus = { .scan = rte_pci_scan, .probe = pci_probe, .find_device = pci_find_device, .pl...

2020-11-21 18:03:35 17 0

转载 Linux虚拟文件系统:数据结构与文件系统注册、文件打开读写

数据结构 超级块 - super_block 索引节点 - inode 目录项 - dentry 文件结构 - file 虚拟文件系统实现 注册文件系统 -register_filesystem 打开文件 -sys_open 读写文件 -sys_read、sys_write 目录 ...

2020-11-21 17:59:03 24 1

转载 Linux文件系统IO:直接IO原理与实现:缓存I/O、直接I/O

目录 缓存I/O 缓存I/O的优缺点 直接I/O 直接I/O实现 -direct_IO(),brw_kiovec() 推荐阅读 缓存I/O 一般来说,当调用open()系统调用打开文件时,如果不指定O_DIRECT标志,那么就是使用缓存I/O来对文件进行读写操作。我们先来看看op...

2020-11-21 17:41:23 18 0

转载 Linux虚拟内存管理 | 虚拟地址与物理地址映射、段错误SIGSEGV

Linux的内存管理分为虚拟内存管理和物理内存管理,本文主要介绍虚拟内存管理的原理和实现。在介绍虚拟内存管理前,首先介绍一下x86 CPU内存寻址的具体过程。 x86 内存寻址 Intel x86 CPU把内存地址分为3种:逻辑地址、线性地址和物理地址。 逻辑地址:由段寄存器:偏移量组成...

2020-11-21 17:35:01 21 0

原创 华为ICT大赛 | 官网 报名入口 赛事视频

官方网址:https://e.huawei.com/topic/ict-competition-2020/cn/index.html 预约网址:https://events02.huawei.com/custom/ICTRegisterCn/register/232842045/register...

2020-11-21 16:26:18 64 0

转载 Linux文件系统与持久性内存介绍:块设备、闪存(NAND/NOR)、NVDIMM(非易失性内存)、PMEM(PMDK)- ndctl

《持久内存开发套件(Persistent Memory Development Kit-PMDK) - pmem.io: PMDK》 《PMDK介绍》 《PMDK(NVML)事务实现机制源码分析》 目录 1、Linux 虚拟文件系统介绍 1.1、硬件层面 1.2、内核空间层面 2、下...

2020-11-20 21:39:44 58 0

转载 Linux内存管理:反向映射机制(匿名页,文件页和ksm页)

目录 1.反向映射的发展 2.反向映射应用场景 3.匿名页的反向映射 4.文件页的反向映射 5.ksm页的反向映射 6.总结 7.作者简介 8.推荐阅读 为了系统的安全性,Linux内核将各个用户进程运行在各自独立的虚拟地址空间,用户进程之间通过虚拟地址空间相互隔离,不能相互...

2020-11-20 20:58:51 22 1

原创 Linux四种共享内存技术(附源码):SystemV、POSIX mmap、memfd_create、dma-buf

《Linux 下的进程间通信:管道、消息队列、共享文件、共享内存》 《【共享内存】基于共享内存的无锁消息队列设计》 《File Sealing & memfd_create() | 文件密封和memfd_create()》 《Linux环境无文件渗透执行ELF:memfd_creat...

2020-11-20 20:36:24 26 1

翻译 File Sealing & memfd_create() | 文件密封和memfd_create()

File Sealing & memfd_create() From: David Herrmann <dh.herrmann@gmail.com> To: linux-kernel@vger.kernel.org Subject: ...

2020-11-20 14:56:15 19 1

转载 利用ptrace和memfd_create混淆程序名和参数

《GDB调试之ptrace实现原理》 《C语言程序调用栈:backtrace+backtrace_symbols+backtrace_symbols_fd》 《strace实现原理:ptrace系统调用》 《Linux环境无文件渗透执行ELF:memfd_create、ptrace》 《利...

2020-11-20 13:34:31 26 1

转载 Linux环境无文件渗透执行ELF:memfd_create、ptrace

《GDB调试之ptrace实现原理》 《C语言程序调用栈:backtrace+backtrace_symbols+backtrace_symbols_fd》 《strace实现原理:ptrace系统调用》 《Linux环境无文件渗透执行ELF:memfd_create、ptrace》 《利...

2020-11-20 13:31:27 30 1

转载 Linux内存管理:ARM64体系结构与编程之cache(2):cache一致性

《Linux内存管理:ARM64体系结构与编程之cache(1)》 《Linux内存管理:ARM64体系结构与编程之cache(2)》 《ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)》 《内核引导参数IOMMU与INTEL_IOMMU有何不同?》 ...

2020-11-19 22:33:27 78 0

转载 Linux内存管理:ARM64体系结构与编程之cache(1)

《Linux内存管理:ARM64体系结构与编程之cache(1)》 《Linux内存管理:ARM64体系结构与编程之cache(2)》 《ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)》 《内核引导参数IOMMU与INTEL_IOMMU有何不同?》 ...

2020-11-19 22:19:27 77 0

转载 Linux系统调用表(system call table)

《Linux系统调用表》 《linux系统调用表(system call table)》 《线上环境 Linux 系统调用追踪》 《Linux系统调用权威指南》 《为什么系统调用会消耗较多资源?系统调用的三种方法:软件中断(分析过程)、SYSCALL指令、vDSO(虚拟动态链接对象linu...

2020-11-19 21:22:31 17 0

转载 strace实现原理:ptrace系统调用

《GDB调试之ptrace实现原理》 《C语言程序调用栈:backtrace+backtrace_symbols+backtrace_symbols_fd》 目录 strace是什么? ptrace系统调用 运行被跟踪程序 编写跟踪进程代码 获取进程寄存器的值 strace是什么?...

2020-11-19 21:19:11 103 0

转载 利用jemalloc分析内存泄漏以及LD_PRELOAD

《Linux环境下的LD_PRELOAD:库预加载》 GitHub代码:https://github.com/Rtoax/test/tree/master/jemalloc 目录 Install Getting Started Leak Checking Jemalloc不仅实现了...

2020-11-19 21:05:35 41 0

转载 Linux进程管理:进程和线程基础知识

《Linux进程管理:进程和线程基础知识》 《Linux-进程管理》 《C语言进程的内存地址空间分配》 《进程和线程模型》 《(1)Linux进程调度》 《(2)Linux进程调度器-CPU负载》 《(3)Linux进程调度-进程切换》 《(4)Linux进程调度-组调度及带宽控制》...

2020-11-18 22:14:40 33 0

转载 Linux内存管理:内存分配:slab分配器

《linux内核之slob、slab、slub》 《Linux内核:kmalloc()和SLOB、SLAB、SLUB内存分配器》 《Linux内存管理:内存分配:slab分配器》 目录 1 slab综述 1.1 slab分配器产生的背景 1.2 对象缓存(object cache) ...

2020-11-18 21:29:52 27 1

转载 Linux文件系统之:通用块处理层 ll_rw_block | +往期文章回顾

《/proc 文件系统并使用/proc 进行输入》 《Linux虚拟文件系统概述》 《Linux文件系统概述:硬盘驱动>通用块设备层>文件系统>虚拟文件系统(VFS)》 《Linux内核:一文读懂文件系统、缓冲区高速缓存和块设备、超级块》 《Linux文件系统:编写一个内核文件系统》 《...

2020-11-18 21:13:10 29 0

转载 多路复用IO: select、sys_select、do_select源码分析

《srsLTE源码学习:逻辑信道多路复用与MAC CE分解pdu_queue.h,pdu_queue.cc》 《select用法》 《从select函数谈及系统调用原理》 《Linux Socket C语言网络编程:Select Socket》 《Linux Socket C语言网络编程:...

2020-11-18 21:01:01 22 0

转载 八千字硬核长文梳理Linux内核概念及学习路线

目录 什么是内核 内核分类 Linux内核文件在哪里 Linux内核体系结构 内核模块 Linux 内核学习经验总结 结尾 本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。 拥有...

2020-11-18 20:52:06 50 0

翻译 在多线程数据平面开发套件(DPDK)应用程序中优化内存使用

目录 介绍 参考申请 环与堆叠 从环形内存池转移到堆栈内存池所需的代码更改 测试方法 结果 结论 关于作者 资源资源 尾注 介绍 高速数据包处理应用程序可能会占用大量资源。软件工程师和架构师可以提高其应用程序性能的一种方法是,将其数据包处理管道划分为多个线程。但是,这可...

2020-11-18 16:16:00 44 0

原创 int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));

/** * pthread_atfork 示例程序 * * 作者:rtoax * 日期:2020年11月18日 */ #include <stdio.h> #include <stdlib.h> #include <pthread.h> #i...

2020-11-18 15:08:26 24 0

原创 int pthread_getcpuclockid(pthread_t thread, clockid_t *clock_id);

#include <pthread.h> #include <stdio.h> #include <time.h> pthread_cond_t cond2; pthread_condattr_t cond2attr; #define test(clk_id...

2020-11-18 14:32:27 20 0

原创 Linux mcheck机制检测内存溢出、内存越界

更多源码:https://github.com/Rtoax/test/tree/master/c/glibc/mcheck #include <stdio.h> #include <stdlib.h> #include <mcheck.h> #include...

2020-11-17 11:34:04 21 0

转载 如何实现一个连接池?

目录 前言 什么是连接池? 为什么需要连接池? 怎样做一个连接池? 高级连接池 推荐源码 前言 【2w1h】是技术领域中一种非常有效的思考和学习方式,即What、Why和How;坚持【2w1h】,可以快速提升我们的深度思考能力。 今天我们通过【2w1h】方式来讨论“连接池”:...

2020-11-15 10:40:28 32 0

翻译 PMDK介绍

PMDK 的全称是 Persistent Memory Development Kit,它包含了 Intel 开发的一系列旨在 方便非易失性内存的应用开发的函数库和工具。PMDK 是一个还在快速发展变化的新鲜事物,不过版本的迭代更新等很多信息都可以公开看到[1]。需要注意的是,PMDK 的网站入口...

2020-11-14 18:36:14 26 0

转载 持久内存开发套件(Persistent Memory Development Kit-PMDK) - pmem.io: PMDK

目录 libpmemobj libpmemblk libpmemlog libpmem libpmem2 libvmem libvmmalloc libpmempool pmempool librpmem librpma libpmemset libvmemcache ...

2020-11-14 18:25:46 29 0

转载 使用持久内存开发工具包 (PMDK) 创建持久内存感知队列

《使用持久内存开发工具包 (PMDK) 创建持久内存感知队列》 目录 简介 libpmemobj 中的 C++ 支持 libpmemobj 核心概念 使用 C++ 绑定实施队列 设计决策 构建指令 总结 关于作者 简介 文将介绍如何使用链表和持久内存开发工具包 (PMDK...

2020-11-14 18:11:29 26 0

转载 Linux面试题100道

导读:本文整理了最新的Linux面试题,近3万字,约100道题,分享至此,希望对大家有帮助。 目录 一、Linux 概述 二、磁盘、目录、文件 三、安全 Shell 四、编程题 七、文档编辑命令 八、磁盘管理命令 九、网络通讯命令 十、系统管理命令 十一、备份压缩命令 一...

2020-11-14 18:01:34 57 0

转载 DPDK内存篇(三): 标准大页、NUMA、DMA、IOMMU、IOVA、内存池

作者简介:Anatoly Burakov,英特尔软件工程师,目前在维护DPDK中的VFIO和内存子系统。 目录 引言 标准大页 将内存固定到NUMA节点 硬件、物理地址和直接内存存取(DMA) IOMMU和IOVA 内存分配和管理 内存池 结论 推荐阅读 系列文章 引...

2020-11-14 17:39:45 31 0

提示
确定要删除当前文章?
取消 删除