linux内存管理的主要概念是虚拟内存,你知道linux内存管理基础及方法?

描述

一、基本概念

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

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

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

9e01572aa5e00074ebeb1a885a0fe71d.png

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 miss(Translation lookaside buffer 页表寄存器缓冲)。一般来讲,使用较小的页存可以减少碎片化,但是会导致进程的页表过长、降低页面换进换出的效率。

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

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

二、内存查看:

[plain] 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 +Buffers/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 estimated available memory

Many load balancing and workload placing programs check /proc/meminfo to estimate 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 ramfs, and it does not include reclaimable slab memory, which can take up a large fraction 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/Documentation/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) copied, 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分区变大了。

打开APP精彩内容

点击阅读全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R plot图片背景设置为透明_R语言入门第十二讲:基础绘图(二)------plot与par函数(1)...

上一次给大家简单展示了plot函数的用法,以及par函数的使用。今天我们继续应用这两个函数,看看它的其他功能。下面这个图是数据的一部分[1]。我一直认为,作图简单,但关键是要知道数据在数据库中的格式,才能更好的应用到…

visual studio 2015 搭建python开发环境,python入门到精通[三]

在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo,这里略带一句,其实就"学习python"而言,比较建议使用pycharm,pychar…

如何给打印机墨盒加墨

今天打印东西突然遇到问题了,显示墨盒黑色没墨了,网上一搜,整套的墨盒大几十,随手换了一个关键词 墨盒墨水 这下不到十块钱解决,正好锻炼下自己的动手能力(其实就是穷嘛。。。) 接下来就分享下动…

全局莫兰指数_空间自相关 | 莫兰指数

空间自相关:是指一些变量在同一个分布区内的观测数据之间潜在的相互依赖性。其中,自相关中的“自”表示当你进行相关性观察统计量,是来源于不同对象的同一属性。Tobler(1970)曾指出“地理学第一定律:任何东西与别的东西之间都是相…

linux vi 排序命令,10 个你必须掌握的超酷 VI 命令技巧

摘要:大部分Linux开发者对vi命相当熟悉,可是遗憾的是,大部分开发者都只能掌握一些最常用的Linux vi命令,下面介绍的10个vi命令虽然很多不为人知,但是在实际应用中又能让你大大提高效率。在使用vi 编辑器时—无论是初次…

arduino 水位传感器_云南可信赖的威卡压力传感器哪里有

云南可信赖的威卡压力传感器哪里有 k52gh264云南可信赖的威卡压力传感器哪里有 在生产生活中,对压力表的正确使用为工业生产提供了一定程度的便利。.指针转动受阻在检修过程中,先给弹賛管式压力表施加压力,如果发现被检测表的指针成比例变快或…

小甲鱼Python笔记(下)

二十八 二十九 文件 打开文件 open(文件名[,模式][,缓冲])  注意open是个函数不是方法 模式: 缓冲: 大于1的数字代表缓冲区的大小(单位是字节),-1(或者是任何负数)代表使用默认缓冲区大小 只…

linux服务器搭建_学linux可以做什么具体的就业方向是什么

学linux可以做什么当今世界流行的操作系统有3大类,Linux、Mac OS和Windows操作系统,Linux操作系统因其开源、免费、跨平台、良好的界面等特性,深受广大程序员们的青睐!Linux操作系统被广泛的应用于企业服务器领域,目前…

linux下安装两个tomcat,linux安装两个tomcat-Go语言中文社区

解压apache-tomcat-7.0.86.tar.gz,把解压后的复制一份修改/etc/profile文件:vim /etc/profile#################我添加的start######################################first tomcat######################CATALINA_BASE/root/app/apache-tomcat-7.0.86CA…

中文域名销售平台_中国开关网.商城被搭建为南京某公司官网,这样的域名你喜欢吗?...

南京盛企电子有限公司是一个民营企业,成立于1997年6月,主要生产led广告板、薄膜开关、薄膜面板及其相类似的产品。公司拥有国内先进的制版系统、精细的丝网晒版设备、世界先进的丝网印刷机、数控恒温远红外烘道、uv固化机、模切机、激光切割机、电子产品…

linux远程虚拟桌面,2020-07-23 Linux 远程连接虚拟桌面

写在前面我的服务器为Centos7,其他 Linux 发行版可能略有差异。此方法不需要有物理显示屏。可以多用户同时登录,同一用户可以开启多个虚拟桌面。TigerVNC 安装使用这个软件提供 VNC 服务。Centos 下安装sudo yum install -y tigervnc-server用户模式开启…

2019数据安装勾选_【安装部署】esweb服务器如何单独部署

推荐指数:☆☆☆☆☆背景:在勤哲Exce服务器软件的使用过程中,有的客户并发用户数多,可将esweb服务器单独部署。具体安装步骤:首先,在一台服务器上安装除填报网站外的应用程序。双击安装包运行。点击”接受“…

html css 前端实现消息提醒数_自学的福音,web前端学习全套视频教程+最新学习思维导图都在这里...

1、产品经理。这些是负责策划应用程序的一群人。他们会想出很多新鲜的、奇怪的、甚至是不可能实现的应用。一般来说,产品经理都追求丰富的功能。2、UI设计师。这些人负责应用程序的视觉设计和交互模拟。3、项目经理。这些人负责实际地运行和维护应用程序。4、最终用…

5233杨光--Linux第一次实验

学习计时:共14小时 读书:2小时 代码:7小时 作业:2小时 博客:3小时 一、学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令/系统相关命令/文件目录相关命…

asp.net web开发步骤_WEB开发流程

1.需求确定2.分析与设计 (1)架构分析与设计 (2)业务逻辑分析 (3)业务逻辑设计 (4)界面设计3.开发环境搭建4.开发-测试-开发-测试5.文档编纂各个阶段过程都是有文档的,需求有需求的文档,设计有设计的文档,测试也有测试的文档.首先来看需求确定:需求…

psv黑商店pkgj最新版下载_e收银app下载安装_e收银软件最新版免费下载

e-Cashier应用程序是一种高效的收银员服务客户端应用程序。 e-Cashier的移动版本支持多种刷卡方法,使商户可以自定义订单日期,从而使每天的收入一目了然,并且从多个角度分析商店的业务状况非常实用 。特征电子收银机是一种高效便捷的收银工具…

微分方程的数值解法与程序实现 pdf_初中数学知识点|一元一次方程的概念及讲解(二)建议收藏!内含pdf版...

长按关注【初中数学解题大全】 获取更多!电子课本|学习资料|学习方法|家教知识后台回复“数学”等学科名称即可获取初中数学电子课本后台回复“初一”等相应年级即可获取数学视频讲解及知识点大全后台回复“真题”即可获取2017-2019初中数学各市真题试卷大全后台回复…

Linux下rgmii接口与fpga相连,FPGA控制RGMII接口PHY芯片88E1512网络通信

一、前言网络通信中的PHY芯片接口种类有很多,之前接触过GMII接口的PHY芯片RTL8211EG。但GMII接口数量较多,本文使用RGMII接口的88E1512搭建网络通信系统。这类接口总线位宽小,可以降低电路成本,在实际项目中应用更广泛。二、从GMI…

esxi usb插口_酷暑大作战 | USB-C风扇新体验

“枯藤老树昏鸦,空调 Wi-Fi 西瓜”每到炎热的夏天,人类的梦想就变得朴实、无华而简单但当我们吹不到空调时,如何还能享受阵阵清凉?今天我们介绍的两款新型电扇或许可以提供新思路:edon 循环电扇GUZI 挂颈电扇越来越多人…

手写tomcat socket closed_【消费电子】:重在阅读,新增手写 BOOX Nova Pro 体验评测...

此文出自于《消费电子》对BOOX Nova Pro的评测,本文已征得李强作者授权转载。【《消费电子》杂志社】越来越多的人选择在移动设备上阅读、学习,正所谓“需求诞生市场”,如今这类产品已经相当之丰富。越来越多的人选择在移动设备上阅读、学习&…