网络上面有很多坑爹的文章,误导不少人,很多人对linux的很多误解可能来自于这些广泛流传的技术文章。下面我们推出一个系列来总结。先从内存管理开始。
1. compact_memory
网上常见文字:
“
compact_memory
只有在启用了config_compaction选项才有效。当向该文件(/proc/sys/vm/compact_memory)写入1时,所有的内存域都会被压缩,使空闲的内存尽可能形成连续的内存块。
”“
当内核编译参数设置了config_compaction,就会在/proc/sys/vm/compact_memory有入口文件。将1写入到这个文件,则所有的zones就会进行压缩,以便能够尽可能地提供连续内存块。对于需要分配大页的时候这个功能非常重要,不过,进程会在需要时直接进行内存压缩(compact memory)。
”
修正
这里的compact与压缩(compress)没有半毛钱关系,compact是使得空闲内存更加紧凑的内存迁移技术。实现的效果如下:
假设红色和白色分别是空闲和被占用的页面,经过内存compaction之前的状态为:
那么内存的compact行为可以达到如下目的,空闲内存被扎堆了,这样如果要申请更大的连续内存,则可以满足:
如果要直译,compact memory可以翻译为“内存紧凑”。但是绝对不是压缩,因为zram之类的才是采用了压缩技术。
2. cached和buffers的区别
网上常见文字:
“
buffers与cached啥区别
a buffer is something that has yet to be “written” to disk.
a cache is something that has been “read” from the disk and stored for later use
对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.
”
修正
此处极容易让人产生误解,以为free命令里面的buffers是为了写而产生,而cached是为了读而产生。
真实情况下,cached和buffers与读写没有半毛钱关系,它们都是缓存,唯一的区别是,如果你cat /dev/sda1 > /dev/null,这样/dev/sda1内容进入buffers,如果你cat /mnt/aaa/bbb.c > /dev/null,则/mnt/aaa/bbb.c的内容进入cached。所以,这两种cache,一个以裸设备或分区为背景,一个以文件系统里面的文件为背景,无论读写皆然。
buffers主要有2个用户:
应用直接访问裸分区
文件系统本身的实现,会认为/dev/sda1是个裸设备,因此文件系统的metadata会缓存到buffers
3. pss
许多人引用了关于pss的这个解释:
https://yq.aliyun.com/articles/24048
“pss - proportional set size 实际使用的物理内存(比例分配共享库占用的内存)uss - unique set size 进程独自占用的物理内存(不包含共享库占用的内存)
”
修正
这个文档有3个问题:
两个进程共享的部分,远远不是只有共享库,比如我们在linux里面开2个bash进程,那么这2个bash,实际是共享1个代码段;其他的mmap()的时候shared的映射当然也是。
共享库里面的内存,也不是都共享,只是代码段等不会做cow(写时拷贝)的内存才会跨进程共享。
uss去掉的是所有跨进程共享的内存,不是只去掉了共享库。
上图中的4这片内存,是libc的代码段在内存驻留的部分,被3个进程共享;5这段内存,是bash的代码段,被2个进程(1044和1045)指向。在计算pss的时候,这些都需要被比例化。
MO磁光盘机的数据传送速率
城市利用物联网绘制空气质量地图
便宜2000块 特殊版iPhone到底特殊在哪里?
4种常用的电压比较器
为止颓势!三星推出Note7老铁版 专卖粉丝!说好的销毁提纯呢?
Linux资料汇总之内存管理
盘点最具潜力的国产嵌入式系统
基于USB 2.0协议的高速图像传输系统
[图文]多元折合振子天线
大功率电力电子技术对智能电网的重要性
AI模型底层机制解析GPT与神经网络的关系
应用在蓝牙耳机领域的国产蓝牙芯片
半岛医疗携半岛超声炮及家用产品亮相CMEF,民族品牌显实力
液晶拼接屏的安装步骤是什么你知道吗
软包锂硫电池实现商业化将要面临哪些挑战
专业移动办公解决方案!远程控制软件RayLink内测火热进行中!
Power Integrations发布InnoSwitch3系列高效率(94%)离线 反激式开关电源IC
硅晶圆销售于第三季度开始下滑
Imagination的智能家居关键模块及解决方案
基于虚拟仪器技术的705D雷达自动检测系统