PROS002Linux free命令Word格式文档下载.docx
- 文档编号:16211413
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:7
- 大小:151.32KB
PROS002Linux free命令Word格式文档下载.docx
《PROS002Linux free命令Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《PROS002Linux free命令Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
版次
Rev.
变更单编号
AlterationNO.
修订内容
ModifiedContents
编写
Prepared
发行日期
IssueDate
A
初版发行
2016/11/14
目录
1、Linuxfree命令………………………………………………….………………………………………………..……………4
(了解内存buffers和cached的含义和区别)
---文章来自Internet
相信大家刚刚接触Linux时,看到free命令,完全想不到它会和内存扯上关系,毕竟free在英语里的含义是“免费的、空闲的、自由的”。
为什么叫作free呢?
为此,我还特意发邮件询问了free命令的维护者albert,但是很遗憾,他也不知道当时选择这个单词的典故和轶事。
我猜,因为Linux发明之初,内存是极其稀缺的资源,内存都是按照KB来计价的,当时的工程师们非常不爽,所以用free命名内存,希望有朝一日,内存资源可以变成“免费、自由之物”,听着很有道理吧,哈哈!
free的最常用用法
最最常用的用法,当然就是直接输入free啦,输出内容则以KB为单位:
[root@soft1testdb~]#free
totalusedfreesharedbufferscached
Mem:
59905444908312108223201375924062740
-/+buffers/cache:
7079805282564
Swap:
62914486094845681964
如果想让数字更可读,大家往往会加上-m选项,让输出内容以MB为单位展示:
[root@soft1testdb~]#free-m
58504788106101343967
6865163
61435955548
[root@soft1testdb~]#
从free的输出内容中,可以看出,这台服务器拥有6GB内存容量,对于一台入门级服务器来说,已经不算小了。
要慎用-g选项
有些同学比较喜欢使用-g选项,让输出内容以GB为单位显示。
这样虽然可以增加可读性,但却存在不小的隐患:
1.首先,-g选项并非是官方支持的选项,你会发现在manfree时是看不到这个选项的,所以不确认在所有的free版本中都支持。
2.最重要的是,-g项会采用向下取整的方式显示内存容量,就如本文给出的例子,原本3031MB内存容量,换算后变为2.96GB,最后会显示成2GB,这会在很大程度上误导用户。
就像下面这样,本来服务器的内存总量是6GB,但是这里却显示成了5GB,是不是很坑人呢?
[root@soft1testdb~]#free-g
541003
05
505
想查看最精确的内存容量
无论用-k选项、-m选项,还是-g选项,free命令的输出策略都是向下取整,所以如果你想查看一台服务器最精确的内存容量,那么请使用-b选项,这会让free命令以最小的byte为单位显示内存使用状况:
[root@soft1testdb~]#free-b
61343170565031501824110281523201416888324159029248
7307837445403533312
64424427526241198085818322944
大家应该看到free命令输出的shared这个指标了吧,它的值总是0,这是怎么回事呢?
我们继续往下看。
说说shared被弃用这事儿在执行manfree时,会有对free命令的简单介绍:
freedisplaysthetotalamountoffreeandusedphysicalandswapmemory
inthesystem,aswellasthebuffersusedbythekernel.Thesharedmemory
columnshouldbeignored;
itisobsolete.
里面有一个单词obsolete,XX翻译意思是:
显而易见,这一段的最后一句话,就是在说有关shared的事情,那就是shared已经被正式弃用,大家不必花时间研究这个名词啦。
在此之前,shared是指系统中多个进程所共享的内存容量,它可以用来反映系统中可被复用的内存量。
但这个指标对于反映整个系统的内存使用情况并没有太多指导意义,所以在新版的free中,shared被弃用,并总是显示为0。
buffers、cached傻傻分不清楚
接下来,我们就重点说说buffers和cached的含义和区别。
首先,要和大家明确的一点是,无论buffers还是cached,都是属于内存的一部分,了解这一点格外重要,它们和空闲内存、已用内存一起构成了整个内存容量。
众所周知,硬盘和内存的读写速度有着本质的区别,目前消费级市场最快的DDR4内存,读写速度大概在60GB/s量级,而目前最快的SSD固态硬盘的读写速度也仅仅是600MB/s的水平。
可见,内存和硬盘之间,存在着100倍左右的速度差。
当有大量数据要从内存写入硬盘时,为了防止读写数据速度的巨大差距导致的时间等待,伟大的科学家们想到了一个策略,那就是在内存中创造一个叫作buffers的内存区域,数据不再直接“缓慢”地写入硬盘,而是先写入buffers中,然后再在后台慢慢地写入硬盘中,这样对于应用程序来说,就不需要再等待数据完全写入硬盘,就可以去做其他事情了。
这个策略一经发明,大大提升了应用程序的工作效率。
那么,cache又是什么呢?
我们的故事继续。
大家已经知道,内存和硬盘之间的速度差距巨大,所以,系统设计的一个重要原则就是“要尽量减少内存从磁盘读数据的次数”。
毕竟在内存看来,每次从硬盘读数据,还是挺慢的,所以,科学家们又发明了一个叫作cache的内存区域。
从硬盘读取的内容,往往会暂存在cache里,下次如果又读到了,那么就不用再找硬盘要了,而是直接从cache里拿就好了。
从经验来看,一个数据被重复读取的概率,还是挺大的,所以cache对于加速数据读取,起到了非常关键的作用。
细心的同学可能会说,“你讲的是cache,可cached又是什么呢”。
是的,cache是一个名词,表示那块专用的内存区域中的内容,而cached则表示“被缓存住的”,是一种状态。
相信学过英语的同学,应该可以理解两者的异同。
好了,通过故事性的描述,大家应该已经了解了buffers和cached的含义和区别了。
更深层次理解buffers和cached
为了让求知欲更强的小伙伴可以对buffers和cached理解得更深入,我们再补充一些高级解释。
free命令中的buffers和cached值,是读取自/proc/meminfo文件中的对应值。
而/proc中的绝大部分内容是Linux内核来控制和更新的。
从Linux内核源码中,可以看到buffers的值是由nr_blockdev_pages()函数来产生的,cached的值是由global_page_state(NR_FILE_PAGES)–total_swapcache_pages–i.bufferram计算得来的。
感兴趣的同学,可以深入到fs/proc/meminfo.c中继续研究。
从源码分析可以得出更专业的结论,即:
•buffers是块设备I/O相关的缓存页。
•cached是普通文件相关的缓存页。
好了,有关buffers和cached的知识就说到这里,相信应该足够Linux工程师用了。
free命令输出里的秘密以往每次面试,我都会问面试者有关free命令的问题,但是几乎没有人能准确说出free输出内容中各种名词的含义,以及它们对服务器的影响。
所以,接下来,我们就来攻克这道难关,让大家以后再遇到类似问题时,可以信心满满,对答如流。
58504815103501553981
6785172
[root@soft1testdb~]#
上面是最典型的free命令输出的内容。
为了让大家更直观地学习和理解,我特地绘制了一张速查图:
-o选项的小故事
我们先直观地看一下-o选项的作用:
[root@soft1testdb~]#free-om
58504831101801553983
发现有什么不一样了么,如果没有的话,那么我们玩一次“大家来找茬”,来看一下没有-o选项时的差异:
揭晓答案,当使用-o选项时,命令输出中“-/+buffers/cache:
”这一行就消失了。
原来,早期的free命令中的used和free,就是第一行的样子,即4815和1035。
读了上文的同学一定知道,1035里是没有包括buffers和cached的。
这就造成了一个问题,内存空闲量有时候会看起来非常少,因为有可能大部分内存都被buffers和cached占据了。
这时工程师会误认为空闲内存已经很少了,从而造成不必要的恐慌。
为了降低free命令造成误解的频率,提高其可读性和易用性,在后来的版本中,就默认加入了“-/+buffers/cache”一行,其中的free值(5172)便是增加了buffers和cached的,而对应的used值(678)则是减去了buffers和cached的。
这就能更真实地反映“内存使用量”和“内存空闲量”了。
而为了做到与老版本的命令相兼容,所以允许用户使用-o选项来不显示“-
/+buffers/cache”。
好了,关于free命令的各种故事,我们就讲到这里了。
相比于网络上的各种free文章,本文应该算是从基础到高级,讲解最为全面的文章之一了。
我们为大家制作的free命令的图解,大家可以贴到自己的工位,便于查看。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PROS002Linux free命令 free 命令
![提示](https://static.bdocx.com/images/bang_tan.gif)