你知道linux内存管理基础及方法?

 一、基本概念

(1)物理内存和虚拟内存

物理内存:系统硬件提供的真实物理内存

虚拟内存:利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为swap,swap类似于windows的虚拟内存。

 你知道linux内存管理基础及方法?_设计制作_MEMS/传感技术

1、     linux   的内存管理采取的分页存取机制,会将内存中不经常使用的数据块交换到虚拟内存中。linux会不时地进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事需要内存,linux也会交换出暂时不用的内存页面。

(2)buddy内存分配

linux内核中引入的伙伴系统算法,将空闲页框分为11个块链表:1、2、4、8、16、32、64、128、256、512、1024个连续的页框块,每个页框为4K。比如,当申请100K的空间时,会先在大于100/4=25的页框中寻找,释放后,会将相邻的页框合并。但是频繁的申请和释放,会导致已分配页框的内存块中分散了很多小块的空闲页框。

(3)slab内存分配

针对经常分配/释放的对象,如进程描述符等,在用伙伴系统进行分配释放时会造成大量的内存碎片,处理速度也慢。而slab是基于对象管理的,每当申请时,就从slab列表中分配一个出去,释放时,也是释放到slab表中,而不是返回给伙伴系统,从而避免碎片化(也就是直接在内存中进行)。

查看slab信息的命令是slabtop,其是读取/proc/slabinfo中的信息

(4)页存大小

linux支持大页内存技术hugepage,从而减少TLB     mi   ss(Transla     ti   on lookaside buffer 页表     寄存器   缓冲)。一般来讲,使用较小的页存可以减少碎片化,但是会导致进程的页表过长、降低页面换进换出的效率。

可以在/proc/meminfo中查看大页内存相关信息(HugePages*)

也可通过echo 2000 > /proc/sys/vm/nr_hugepages生效。

二、内存查看:

[pl     ai   n] view plain copy

[root@localhost Desktop]# free -m

total        used        free      shared  buff/cache   available

Mem:          977         690         71         3        215       111

Swap:          2047        150        1897


(1) 其中含义:

mem:物理内存(第二行显示)

swap:交换区内存(第三行显示)

total:总的物理内存大小977,总的交换内存2047

used:已经使用的

free:空闲的

shared:多个进程共享的内存

buff/cache:磁盘缓存的大小

buffer是为了解决写磁盘的效率

cache是为了解决读磁盘的效率

available:可用的

关系:total = used + free +Buffe     rs   /cached

这里重点描述一下free和available的区别:

free = 当前空闲的物理内存

available = free + Buffers/cached - 不可回收的

参见:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773

/proc/meminfo: provide es  TI ma     te   d available memory

Many load balancing and workload placing progr     ams   check /proc/meminfo to es  TI mate how much free memory is available. They generally do this by adding up "free" and "cached", which was fine ten years ago, but is pretty much guaranteed to be wrong today. It is wrong because Cached includes memory that is not freeable as page cache, for example shared memory segments, tmpfs, and     ram   fs, and it does not include reclaimable slab memory, which     can   take up a large frac  TI on of system memory on mostly idle systems with lots of files.

(2) free命令查询的结果是/proc/meminfo中的信息,也可以用cat查看具体的meminfo中的内存。

三、内存释放和扩容:

(1) 内存释放:

在linux中,buffer和cached主要是用于缓存已打开的文件、目录信息、inode等,频繁的文件访问,会导致cache使用的增加,使用free的大小减少。

命令1:sync,将缓存(即buffer)中的待写入磁盘的内容立即写入到磁盘中

命令2:清空/proc/sys/vm/drop_caches中的内容

(详情参见:https://www.kernel.org/doc/Documenta  TI on/sysctl/vm.txt)

cache中文件包括page cache和buffer cache两种,前者用于文件、inode等操作,后者用于块设备操作

/proc/sys/vm/下的文件包括虚拟内存的管理,以及脏数据写入磁盘。

To free pagecache(页面内存):

[plain] view plain copy

echo 1 > /proc/sys/vm/drop_caches

To free reclaimable slab objects (includes dentries and inodes)(索引节点链接):

echo 2 > /proc/sys/vm/drop_caches

To free slab objects and pagecache:

echo 3 > /proc/sys/vm/drop_caches


不过还是建议使用:

sysctl -w vm.vfs_cache_pressure=200

因为直接使用echo会太暴力。

(2) 内存扩容:

实际上,并不是对物理内存扩容,而是增加swap交换分区,间接的增加内存,因为swap分区会存放内存溢出的、使用频次较低的数据:

[plain] view plain copy

[root@localhost Desktop]# free -m

total        used        free      shared  buff/cache   available

Mem:            977         419          62           3         495         390

Swap:          2047         160        1887

[root@localhost Desktop]# dd if=/dev/zero of=/home/swap bs=1024 count=512000    # 创建一个块

512000+0 records in

512000+0 records out

524288000 bytes (524 MB) co     pi   ed, 2.83537 s, 185 MB/s

[root@localhost Desktop]# du /home/swap -sh

500M    /home/swap

[root@localhost Desktop]# mkswap /home/swap # 变为swap分区

Setting up swapspace version 1, size = 511996 KiB

no label, UUID=b10175fc-d933-43ee-8979-a1d466fea54f

[root@localhost Desktop]# /sbin/swapon /home/swap   # 使其生效

swapon: /home/swap: insecure permissions 0644, 0600 suggested.

[root@localhost Desktop]# free -m

total        used        free      shared  buff/cache   available

Mem:            977         420          71           3         485         389

Swap:          2547         160        2387


很明显,可以看到swap分区变大了。



42
60
0
83

相关资讯

  1. 1、行到水穷处坐看云起时带上你的“Ta”去追寻闪光人生1969
  2. 2、TOGAF认证可以不参加培训直接考取吗?TOGAF认证的意义有哪些?4854
  3. 3、2020年人工智能的十大事件2292
  4. 4、华为计划推麒麟A1芯片新耳机和智能眼镜或年底亮相4827
  5. 5、考CISP认证对工作经验和学历的要求分别是什么?591
  6. 6、企业为什么要做微信小程序开发?微信小程序开发未来的发展前景怎么样?2389
  7. 7、51岁黎明近照,脸上老年斑美颜都遮不住,身材走样成了这般!3071
  8. 8、中国自主品牌工业机器人占有率去年创新高4394
  9. 9、甄嬛传:谁注意到?皇上送给甄嬛的鹦鹉为何是哑的,真相令人恐惧2199
  10. 10、开心麻花新作《西虹市首富》有口碑跌落风险,请先穿好防雷服3488
全部评论(0)
我也有话说
0
收藏
点赞
顶部