echo 3 > /proc/sys/vm/drop_cache 保证了对pagecache和slab的回收,但是匿名页的回收没什么办法呀, 其实原理很简单,page-cache是缓存,没有人拥有,并且slab中注册的那些shrinker也是只回收没有用到的内存,都不属于任何进程的 但是匿名页就不一 ...
分类:
其他好文 时间:
2017-11-10 23:02:04
阅读次数:
172
1.前言 本文所述关于内存管理的系列文章主要是对陈莉君老师所讲述的内存管理知识讲座的整理。 本讲座主要分三个主题展开对内存管理进行讲解:内存管理的硬件基础、虚拟地址空间的管理、物理地址空间的管理. 本文将主要以X86架构为例来介绍伙伴算法和slab分配 2.伙伴算法概述 块链表 Linux的伙伴算法 ...
分类:
编程语言 时间:
2017-07-20 01:00:00
阅读次数:
192
由于项目需要,需要将DHT11移植到Linux。驱动程序如下 [plain] view plain copy #include <linux/kernel.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/inp ...
分类:
系统相关 时间:
2017-07-19 23:24:16
阅读次数:
266
分内存和进程两部分。内存1)查看内存及内存分配的几个命令:a)nmon:图形化的界面,不只能看内存,还可以看cpu,网络,内核,磁盘信息,内存可以看swap,slab,pagetable的使用量。b)top=cat/proc/pid/statm,里面比较重要的是virt/res/shr的三个数值,分别代表虚拟内存,物理内存,..
分类:
系统相关 时间:
2017-07-18 21:09:31
阅读次数:
200
近期在调试PCIe的行情加速卡的驱动。当中使用DMA在CPU和FPGA间数据传输。最開始使用的是低16M的DMA ZONE的内存,用slab分配器的kmalloc分配获取。但因为最新的需求,须要使用的内存远远超过16M,这样再使用DMA ZONE区域的内存就不够了,那就仅仅能使用DMA32区域的内存 ...
分类:
其他好文 时间:
2017-07-08 14:13:35
阅读次数:
155
1.基本介绍vmstat命令的含义为显示虚拟内存状态(“ViryualMemorStatics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。2.语法vmstat(选项)(参数)选项:
-a:显示活动内页;
-f:显示启动后创建的进程总数;
-m:显示slab信息;
-n:头信息仅显示一次;
-s:以表..
分类:
系统相关 时间:
2017-06-06 10:52:52
阅读次数:
211
本章主要介绍Linux内核的内存管理。 kmalloc函数的内幕 不正确所获取的内存空间清零分配的区域在物理内存中也是连续的flags參数 <linux/slab.h><linux/gfp.h> GFP_KERNEL 在空暇内存较少时把当前进程转入休眠以等待一个页面分配内存的函数必须是可重入的 GF ...
分类:
系统相关 时间:
2017-06-03 09:48:56
阅读次数:
251
1. page(页)为内存分配的最小单位 Memcached 的内存分配以page为单位,默认情况下一个page是1M,可以通过-I参数在启动时指定。如果需要申请内存时,memcached会划分出一个新的 page并分配给需要的slab区域。page一旦被分配在重启前不会被回收或者重新分配 2. C ...
分类:
系统相关 时间:
2017-05-24 10:04:30
阅读次数:
230
Nginx的高性能的是用非常多细节来保证,epoll下的多路io异步通知。阶段细分化的异步事件驱动,那么在内存管理这一块也是用了非常大心血。上一篇我们讲到了slab分配器,我们能够能够看到那是对共享内存的管理的优化。Nginx在进程内也实现了自己的内存池,目的在于降低内存碎片,降低向操作系统的申请次 ...
分类:
其他好文 时间:
2017-05-23 21:38:10
阅读次数:
248
工作原理 基本概念:slab,page。chunk。 slab,是一个逻辑概念。它是在启动memcached实例的时候预处理好的,每一个slab相应一个chunk size。也就是说不同slab有不同的chunk size。详细分配多少个slab由參数 -f (增长因子)和 -n (chunk最小尺 ...
分类:
系统相关 时间:
2017-05-15 10:08:07
阅读次数:
364