linux 下如何查看服务器物理内存状况
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 下如何查看服务器物理内存状况相关的知识,希望对你有一定的参考价值。
如果你真的喜欢计算机,Linux绝对是你梦想中的操作系统。它比现在所有其他的操作系统更加有意思。然而,Linux的真正革命在于它是开放的软件。我们在科技和技术方面的发展为今日的免费信息和相互检查提供了可能性。举个例子,如果你外出,你会乘坐那些是使用秘密技术和没有监督检查的方案制造出来的飞机吗?那些除了制造商以外再也没有人能够了解内部结构的飞机?你如何信任一个可能隐含秘密代码的程序?只有代码开放的Linux系统才能够真正符合运行关键任务的要求――它的安全性和性能是由基于每个人都可以阅读,批评和改进的全面解决方案,也是当今科学计算领域的集中体现。
制造马靴和精致的玻璃,测量时间等技术曾经是被严密保护的商业秘密。500年前印刷出版技术的出现使得科学和技术的知识共享开始得到普及。在印刷业发展的早期,那些敢于共享的人会以“泄漏商业秘密”的罪名被起诉。Linux 相对于计算机时代,就像当年古滕贝格(Johannes Gutenberg,1400-1468,“西方版”的活字印刷术发明人)对于印刷的作用。希望这次不会再有什么起诉-J。Linux的确让那些自称信息拥有权想让时间倒退五百年的人感到极不舒服。
Linux有什么好处?Linux可以给你:
· 一个新潮,非常稳定,多用户,多任务的环境。Linux基于非昂贵硬件,而且软件是免费的(或者近于免费)。Linux是一个功能齐全而且强健的平台――不要错认为它是一个“穷人”才用的操作系统。开启包装盒后的Linux的功能相当于微软的Windows NT加上5,500美元的其他软件的总和,而且Linux更稳定,运行相似的任务比Windows要求更少的硬件资源。
· 标准的平台。Linux非常的标准――它基本上是一个与POSIX兼容的Unix系统(没错,Linux是Unix最好的衍生品。Unix不再用来和Linux产生任何关联是因为Unix是一个注册商标)。Linux包含了所有标准的Unix工具和应用程序。
· 无法超越的计算能力,可移动性和适应性。1999年4月,一台集群的Linux机器在性能测试上击败了Gray超级计算机。出于价格考虑,Linux大部分运行在便宜的Intel的芯片上,但是它在其他很多硬件平台上(从小玩具到大型机)也运行良好。一个Linux发行商(Debian)声称: “Linux是一个无所不在的操作系统”。Linux几乎可以通过量身定做去适应任何计算任务的需要。
· 先进的图形用户界面。Linux使用一个标准,网络透明的X-Window系统,并且自带窗口管理程序(KDE或者GNOME)。
· 几十个异常出色而且免费的桌面应用程序。这些软件包括网络浏览器,电子邮件程序,字处理,电子表格,图形和线性图形程序,文件管理器,音频播放机,CD刻录程序,游戏等等。
· 成千上万个免费的工具和应用小程序。“小的就是好的”在Linux哲学里表现得淋漓尽致。这些应用小程序协调工作用于实现非常复杂的计算任务。
· 几百上千个专业程序由全世界的无数研究人员编制,覆盖了天文,信息技术,化学,物理,工程,语言,生物等各个学科领域。在很多专业领域,Linux更像是“唯一”的操作系统(试着看看你搞天文学的朋友的计算机用的是什么操作系统)。的确这一类的软件不是非常好使用,但是,如果你需要超强的计算能力,Linux是现在在这个领域里最好的软件。不相信?看看以下链接:
· 很多顶级的商业软件包括大型数据库(比如Oracle,Sybase,当然――不包含微软)。这些软件很多(或者几乎)都提供给开发者和个人免费使用。
· 一个真正杰出的学习系统。如果你是家长看到你的儿子或者女儿在折腾Linux,你真应该感到高兴,他们正在学习一些可以长久保值的东西。如果你是一个教师,你应该考虑在学校里安装一个Linux。如果你更注重于教育而不是培训,你应该选择Linux。好的大学更多的是用Linux来作为教学的主要内容。举个例子,在Linux系统下,你可以让你的学生立刻学习如何编译一个电子表格应用程序的代码,这个程序和微软的Excel具有同样先进的功能。Linux让你始终站在科学技术的前沿,比如信息技术,项目管理,质量控制,方法学等等。很多教师不在日常教学里使用Linux,是因为他们本身缺少计算机教育背景。
· 出色的网络功能已经内置的系统。你可能会想你不需要网络?如果你试图实现家庭联网,没有网络功能根本不行。如何把两台或者更多的计算机联在一起,让它们共享硬盘,CDROM, 声卡,Modem,打印机?如何只用一个因特网连接就能够让两台或者更多的计算机同时浏览网络?如何和你的儿子在家里打网络游戏?甚至,通过联网使用在奔腾服务器上的网络资源,你的老掉牙的386带Windows 3.1的机器可以再发挥相当的作用。支持这些功能所需的软件都在标准的Linux软件包里,绝对免费,只是按照你的要求设置一下就行了。它们并非“二流共享软件”,绝对是那些在因特网上运用广泛的软件(比如Apache, 几乎占据50%的网络服务器的分额,而Sendmail几乎占据涉及70%的所有电子邮件的总和)。充分享受家庭联网的快乐,是我之所有很喜欢Linux的主要原因。
· 可以连接到微软,NOVLE和APPLE的网络。还照样可以读写微软MS DOS和MS Windows的其他文件格式。包括那些存放在微软Windows操作系统下的硬盘分区的文件。
· 很多顶级的系统开发平台,友好的编程语言及编程工具都免费包含在操作系统里面。如果你有特别需要必须阅读操作系统的源代码,也是免费的。Linux自带的C语言编译器的兼容性和适应性可以说比现在所有其他不同的平台要好得多。Perl, Python, Guide, Tcl, Ruby,功能强大的shell脚本,甚至连汇编程序的编译器也包含在标准的Linux里面。
· 病毒入侵,计算机的“后门”,软件提供商的“特别要求”,强迫性的软件升级,专有的文件格式,软件使用许可证和市场策略,产品注册登记,高得惊人的软件价格,等等。觉得这些东西怎么样?Linux没有病毒,因为它是一个极其安全的操作系统可以有效的防止病毒发作和大规模的传播。余下的那些,因为Linux遵循源代码开放和非商业化的原则,它封装了最佳的计算方法,可靠的代码验证,安全性,适应性,实用性和极佳的性能。
· Linux操作系统平台保证它的“永久性”。既然Linux不是属于哪一家公司私人拥有,它就不可能因为公司的倒闭就消失。Linux的通用公共许可证(General Public License, GPL)将保证,只要还有Linux的用户,他们就能够提供对操作系统的开发和维护。
· 一个技术快速更新的平台。这个由Linux的新式的开放软件开发模型所决定:“基于前一开发者的成果”和“对等代码检查”(相比于一般的封闭式软件开发模型的“一切从头开始”和“没有人能够读我的代码”)。即使现在这些Linux迷们都见上帝去了,Linux的开发还是会和刚开初的那样继续下去。开放源代码的软件开发模型有它自己的特性:开发的过程从速度上来讲感觉好像很慢,但是整个开发过程展得很开,这样,一些程序的安全漏洞在这个过程中就被解决掉了,因为对于一个程序来说,实现相似的功能可能有几种不同的选择。如果你还想了解更多关于通用公共许可证(GPL),请查阅著名的GNU资料库:
简单说来,GNU通用公共许可证允许任何人:· 免费使用软件,没有任何限制· 复制,分发和销售没有修改过的软件的源代码或者二进制格式文件· 复制,分发和销售修改过的软件,只要程序的源代码还包含在通用公共许可证的许可范围以内· 销售软件的服务支持 这个许可证“不允许”做的是:对软件做了修改,但是仅提供二进制的软件格式而不包含程序源代码。简而言之,通用开放许可证就是要尽量禁止有人盗窃别人的软件,然后把它们合成到自己的封闭性商业软件里。当然,如果你从程序作者那里获得许可,也可以把通用开放许可证软件合并到自己专有的商业软件里。被发现违反通用开放许可证的个人,也会被禁止使用通用开放许可证下的软件。
哪一个Linux发行商的许可证,可能是最重要的决定因素。它设计用来保证信息自由的长久性。另外还有一些重要的“开放源代码”的项目,比如科学和法律(不是开玩笑的)。Linux的方式说起来也不是什么特别的新鲜事,简单的说就是科学的方法在软件开放上的应用:你免费得到信息,你加入你的意见和想法,最后,你又让其他人免费得到。不幸的是,某些大公司和他们的律师们很拼命的想去改变这种状况,把我们向后拉,最好拉回到大黑暗时代,这样信息就可以变成“专有”而不是“共有”。后果就是,你经常在报纸上看到一些著名的和Linux有关联的人被卷入到一些乱七八糟的纷争里面。
也许你想知道Linux的真正价值?以下是一些在亚马孙网站()的软件价格。所有的软件价格按美元计算,调查的日期是2001年2月3日,带打折价。几乎所有Linux对等的软件都包含在Linux的光盘里,而且没有最大用户数的限制。还有,Linux在硬件的开销上绝对的便宜,因为几乎所有的Linux服务都可以在单一的服务器上运行。
Microsoft Windows 2000 Server (5-client)--$848.99;
Microsoft Exchange 2000 Server (5-client)--$1,279.99;
Microsoft Outlook 2000 (1-client)--$94.99;
Systems Management Server 2.0 (10-Cals)--$994.99;
Proxy Server 2.0--$886.99; Microsoft SQL Server 2000 Standard Edition (5-client)--$1,229.99;
Microsoft SQL Server 2000 Standard Edition (1-user License)--$4,443.99;
Microsoft BackOffice Small Business Server 4.5 NT (Add-On 5-CAL)--$264.99;
Windows NT Server Prod Upgrade From BackOffice SBS Small Bus Server (25-client)--$558.99;
Microsoft Windows 2000 Advanced Server Upgrade (25-client)--$3,121.99;
Microsoft FrontPage 2000--$129.99;
Microsoft Internet Security and Acceleration Server --$664.99;
Site Server Commerce 3.0 (25-client)--$4,092.99;
Visual C++ 6.0 Professional Edition with Plus Pack--$525.99;
Microsoft Visual Basic Enterprise 6.0 with Plus Pack--$1,128.99;
Microsoft Visual Sourcesafe 6.0 CD--$469.99;
Microsoft Office 2000 Standard (1-client)--$384.99;
Adobe Photoshop 6.0--$551.99;
Microsoft Plus Game Pack--$19.99.在英文里,“免费”(free)有两种完全不同的解释,有些时候会导致对Linux产生一些概念上的误解。这两个意思分别来自于拉丁语的形容词“自由”(liber)和副词“免费的”(gratis),这两个不同的意思经常用这样的例子来解释:“自由言论”和“免费啤酒”。大部分的Linux软件同时包含这两层意思,但是,只有第一层的意思是Linux的真正根本所在。 参考技术A $ free -m
total used free shared buffers cached
Mem: 1002 769 232 0 62 421
-/+ buffers/cache: 286 715
Swap: 1153 0 1153
第一部分Mem行:
total 内存总数: 1002M
used 已经使用的内存数: 769M
free 空闲的内存数: 232M
shared 当前已经废弃不用,总是0
buffers Buffer 缓存内存数: 62M
cached Page 缓存内存数:421M
关系:total(1002M) = used(769M) + free(232M)
第二部分(-/+ buffers/cache):
(-buffers/cache) used内存数:286M (指的第一部分Mem行中的used - buffers - cached)
(+buffers/cache) free内存数: 715M (指的第一部分Mem行中的free + buffers + cached)
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第三部分是指交换分区, 我想不讲大家都明白.
我想大家看了上面,还是很晕.第一部分(Mem)与第二部分(-/+ buffers/cache)的结果中有关used和free为什么这么奇怪.
其实我们可以从二个方面来解释.
对操作系统来讲是Mem的参数.buffers/cached 都是属于被使用,所以它认为free只有232.
对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。
所以,以应用来看看,以(-/+ buffers/cache)的free和used为主.所以我们看这个就好了.另外告诉大家一些常识.Linux为了提高磁盘和内存存取效率, Linux做了很多精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路 径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
记住内存是拿来用的,不是拿来看的.不象windows, 无论你的真实物理内存有多少,他都要拿硬盘交换文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分 的时候,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常 swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准哦. 参考技术B Linux下看内存和CPU使用率一般都用top命令,但是实际在用的时候,用top查看出来的内存占用率都非常高,如:
Mem: 4086496k total, 4034428k used, 52068k free, 112620k buffers
Swap: 4192956k total, 799952k used, 3393004k free, 1831700k cached
接近98.7%,而实际上的应用程序占用的内存往往并没这么多,
PID
USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
25801 sybase 15 0 2648m 806m 805m S 1.0 20.2 27:56.96
dataserver
12084 oracle 16 0 1294m 741m 719m S 0.0 18.6 0:13.50
oracle
27576 xugy 25 0 986m 210m 1040 S 1.0 5.3 28:51.24 cti
25587 yaoyang 17 0 1206m 162m 3792 S 0.0 4.1 9:21.14 java
仔细看top关于内存的显示输出,有两个数据buffers和cached,在Linux系统下的buffer指的是磁盘写缓存,而cache则指的是磁盘读缓存。
(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.)
而这两块是为了提高系统效率而分配的内存,在内存富余的时候,操作系统将空闲内存利用起来,而有内存需求时,系统会释放这部分的内存供应用程序使用。
这样,真正应用程序可用的内存就是free+buffer+cache,上面的例子就是:
52068k + 112620k + 1831700k = 1996388k
而已用内存则是used-buffer-cache,上面的例子为:
4034428k - 112620k - 1831700k = 2090108k
Linux下查看内存还有一个更方便的命令,free:
$ free
total used free shared buffers cached
Mem: 4086496 4034044 52452 0 112756 1831564
-/+ buffers/cache: 2089724 1996772
Swap: 4192956 799952 3393004
Mem:这列就是用top命令看到的内存使用情况,而-/+buffers/cache这列就是刚刚做的计算结果,used-buffer-cache/free+buffer+cache
也可以加-m或者-g参数查看按MB或者GB换算的结果。
$ free -m
total used free shared buffers cached
Mem: 3990 3906 83 0 90 1786
-/+ buffers/cache: 2029 1961
Swap: 4094 781 3312
这样,真正应用程序的内存使用量就可以得出来了,上面的例子中内存占用率为51.1% 参考技术C 用 free -m 命令或者直接查看 /proc/meminfo 文件 参考技术D free -m 或者 top
Linux系统下如何查看物理内存占用率
Linux系统下如何查看物理内存占用率
Linux下看内存和CPU使用率一般都用top命令,但是实际在用的时候,用top查看出来的内存占用率都非常高,如:
Mem: 4086496k total, 4034428k used, 52068k free, 112620k buffers
Swap: 4192956k total, 799952k used, 3393004k free, 1831700k cached
接近98.7%,而实际上的应用程序占用的内存往往并没这么多,
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25801 sybase 15 0 2648m 806m 805m S 1.0 20.2 27:56.96 dataserver
12084 oracle 16 0 1294m 741m 719m S 0.0 18.6 0:13.50 oracle
27576 xugy 25 0 986m 210m 1040 S 1.0 5.3 28:51.24 cti
25587 yaoyang 17 0 1206m 162m 3792 S 0.0 4.1 9:21.14 java
看%MEM这列的数字,按内存排序后,把前几名加起来,撑死了才不过55%,那剩下的内存都干嘛用了?
一般的解释是Linux系统下有一种思想,内存不用白不用,占用了就不释放,听上去有点道理,但如果我一定要知道应用程序还能有多少内存可用呢?
仔细看top关于内存的显示输出,有两个数据buffers和cached,在Linux系统下的buffer指的是磁盘写缓存,而cache则指的是磁盘读缓存。
(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.)
而这两块是为了提高系统效率而分配的内存,在内存富余的时候,操作系统将空闲内存利用起来,而有内存需求时,系统会释放这部分的内存供应用程序使用。
这样,真正应用程序可用的内存就是free+buffer+cache,上面的例子就是:
52068k + 112620k + 1831700k = 1996388k
而已用内存则是used-buffer-cache,上面的例子为:
4034428k - 112620k - 1831700k = 2090108k
Linux下查看内存还有一个更方便的命令,free:
$ free
total used free shared buffers cached
Mem: 4086496 4034044 52452 0 112756 1831564
-/+ buffers/cache: 2089724 1996772
Swap: 4192956 799952 3393004
Mem:这列就是用top命令看到的内存使用情况,而-/+buffers/cache这列就是我们刚刚做的计算结果,used-buffer-cache/free+buffer+cache
也可以加-m或者-g参数查看按MB或者GB换算的结果。
$ free -m
total used free shared buffers cached
Mem: 3990 3906 83 0 90 1786
-/+ buffers/cache: 2029 1961
Swap: 4094 781 3312
这样,真正应用程序的内存使用量就可以得出来了,上面的例子中内存占用率为51.1%。
from http://www.linuxidc.com/Linux/2012-08/67839.htm
以上是关于linux 下如何查看服务器物理内存状况的主要内容,如果未能解决你的问题,请参考以下文章