Linux Memory
Posted 芒果牛奶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Memory相关的知识,希望对你有一定的参考价值。
free -h
total used free shared buff/cache available
Mem: 3.7G 1.1G 1.4G 1.0M 1.2G 2.4G
Swap: 0B 0B 0B
used: 已使用内存
free: 目前剩余内存
shared: 多个程序共享使用的内存
buff/cache: 文件查找,inode,之类的缓存,提高性能
available: 表示应用程序可以申请到的内存
buff(Buffer Cache)是一种IO缓存,用于内存和硬盘的缓冲,是io设备的读写缓冲区。根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
cache(Page Cache)是一种高速缓存,用于CPU和内存之间的缓冲 ,是文件系统的cache。
把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
它们都是占用内存。两者都是RAM中的数据。简单来说,buff是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
可使用内存= free + buff/cache
已使用内存= used + shared + buff/cache
清除 buff/cache (高并发下慎用,清除cache,直接读取硬盘会造成压力过大,出现不良情况)
* sync:将所有未写的系统缓冲区写到磁盘中,包含已修改的i-node、已延迟的块I/O和读写映射文件
* echo 1 > /proc/sys/vm/drop_caches:清除page cache
* echo 2 > /proc/sys/vm/drop_caches:清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
* echo 3 > /proc/sys/vm/drop_caches:清除pagecache和slab分配器中的缓存对象。
/proc/sys/vm/drop_caches的值,默认为0
以上是关于Linux Memory的主要内容,如果未能解决你的问题,请参考以下文章
Linux MTD (Memory Technology Device) subsystem analysis -For Atheros char device
在Linux 5.15 中有望看到Memory Folios的应用
linux打开终端如何启动scala,如何在终端下运行Scala代码片段?
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段