如何写论文?写好论文?免费论文网提供各类免费论文写作素材!
当前位置:免费论文网 > 美文好词 > 优质好文 > linux,内存使用

linux,内存使用

来源:免费论文网 | 时间:2017-05-11 07:04 | 移动端:linux,内存使用

篇一:LINUX中限制CPU和内存占用率方法

查看cpu占用

在命令行中输入 top

即可启动 top

top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。

使用top查看系统负荷

top命令可以动态监视系统负荷,包括CPU、内存的使用率和占用资源较多的进程详情等。

动态查看系统负荷(占用一个终端)

top

显示后退出

top -n 1

以文本方式输出,以备其它程序使用

top -b

好了,我们现在来看限制CPU和内存占用率方法

脚本内容:

代码如下

#!/bin/sh

UPID=`top -bn 1 | grep ^ *[1-9] | awk '{ if($9 ; 20 || $10 ; 25 && id -u $2 ; 500) print $1}'`

for PID in $UPID

do

renice +10 $PID

echo renice +10 $PID

done

我对上面的脚本进行了修改,可以让其针对整个服务器的进程进行限制.

修改后的脚本:

代码如下

#!/bin/sh

UPID=`top -bn 1 | grep ^ *[1-9] | awk '{ if($9 ; 50 || $10 ; 25 ) print $1}'`

for PID in $UPID

do

renice +10 $PID

echo renice +10 $PID

done

可以将这个脚本放到cron中运行,让其每分钟检查一次:

代码如下

chmod +x limit.sh

vi /etc/crontab

*/1 * * * * /bin/sh /root/soft_shell/limit.sh

ps: n : 更新的次数,完成后将会退出 top b : 批次档模式,搭配 n 参数一起使用,可以用来将 top 的结果输出到档案内 那么top -bn 1 就是获取一次,top的输出结果。 grep ^*[1-9] : 是为了直接获取PID号,排除掉表头等信息。 awk '{ if($9 ; 20 || $10 ; 25 && id -u $2 ; 500) print $1}' : 取得cpu使用率大于20%或者内存使用率大于25%,且用户uid大于500的进程pid。

篇二:Linux服务器内存使用Free命令结果解析

Linux服务器内存使用Free命令结果解析

By lixiangjing on 04 9月 2012

这篇文章讲解很透彻,老李先前对于free命令的结果不是很明白,通过这篇文章我终于明白了Linux的内存机制,建议童鞋阅读。查看Linux服务器下的内存使用情况,可以使用命令free -m。

#free -m

total used free shared buffers cached

Mem: 1002 769 232 0 62 421

-/+ buffers/cache: 286 715

Swap: 1153 0 1153

?

?

?

?

?

?

?

? total:内存总数 used:已经使用的内存数 free:空闲的内存数 shared:多个进程共享的内存总额 -buffers/cache:(已用)的内存数,即used-buffers-cached +buffers/cache:(可用)的内存数,即free+buffers+cached 可用内存的计算公式为: 可用内存=free+buffers+cached,即2551MB+268MB+917MB=3737MB 在第一部分Mem行中有如下参数:

total:内存总数,即1002MB

used:已经使用的内存数,即769MB

free:空闲的内存数,即232MB

shared:当前已经废弃不用,总是0

buffers Buffer:缓冲内存数,即62MB

cached Page:缓存内存数,即421MB

其中,内存总数与已使用内存数和空闲内存数的关系是:

total(1002MB)=used(769MB)+free(232MB)

在第二部分内容(-/+buffers/cache)中各参数如下所示。

(-buffers/cache):used内存数,即286MB(指的是第一部分Mem行中的used-buffers-cached)。

(+buffers/cache):free内存数,即715MB(指的是第一部分Mem行中的free+buffers+cached)。

可见-buffers/cache反映的是被程序实实在在用掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三部分是指交换(swap)分区,大家应该都明白。

有可能大家看了上面的解释还是不太明白。比如:第一部分(Mem)与第二部分(-/+buffers/cache)的结果有关,used和free为什么这么奇怪?其实我们可以从两个方面来分析。对操作系统来讲这两项是Mem的参数,buffers/cached都属于被使用,所以它认为free只有232MB;对应用程序来讲+buffers/cached等同于可用的内存,因为buffer/cached可提高程序执行的性能,当程序使用内存时,buffer/cached很快就会被使用。所以从应用的角度来看,应以

(-/+buffers/cache)的free和used为主,即我们主要看与它相关的free和used就可以了。内幕:为了提高磁盘和内存的存取效率,对Linux做了很多精心的设计,除了对dentry进行缓存(用于VFS、加速文件路径名到inode的转换)外,还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者用

于针对磁盘块的读写,后者用于针对文件inode的读写。这些Cache能有效地缩短I/O系统调用(比如read、write、 getdents)的时间。

在Linux中,内存是拿来用的,不是拿来看的。而在Windows中,无论你的真实物理内存有多少,它都会用硬盘交换文件来读,即使是内存还有一 大部分。这也就是Windows常常提示虚拟空间不足的原因。可以想见,硬盘怎么会快过内存,所以我们在观察Linux的内存使用情况时,只要没发现用 swap的交换空间,就不用担心自己的内存太少。如果常常看到swap用了很多,那么你就要考虑加物理内存了。这也是在Linux服务器上看内存是否够用 的标准。

篇三:在linux查看内存的大小

用free -m查看的结果:

# free -m

total used free shared buffers cached

Mem: 504 471 32 0 19 269

-/+ buffers/cache: 183 321

Swap: 996 0 996

查看/proc/kcore文件的大小:

# ll -h /proc/kcore

-r-------- 1 root root 512M 10月 26 20:40 /proc/kcore

在Linux下查看内存我们一般用free命令:

[root@scs-2 tmp]# free

total used free shared buffers cached

Mem: 3266180 325000416176 0 110652 2668236 -/+ buffers/cache: 471116 2795064

Swap:204827680160 1968116

下面是对这些数值的解释:

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

第三行(-/+ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行就不多解释了。

区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,

buffer/cached会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

如上例:

2795064=16176+110652+2668236

接下来解释什么时候内存会被交换,以及按什么方交换。 当可用内存少于额定值的时候,就会开会进行交换。

如何看额定值:

cat /proc/meminfo

[root@scs-2 tmp]# cat /proc/meminfo

MemTotal:3266180 kB

MemFree:17456 kB

Buffers: 111328 kB

Cached: 2664024 kB

SwapCached: 0 kB

Active:467236 kB

Inactive:2644928 kB

HighTotal: 0 kB

HighFree:0 kB

LowTotal:3266180 kB

LowFree:17456 kB

SwapTotal: 2048276 kB

SwapFree:1968116 kB

Dirty:8 kB

Writeback: 0 kB

Mapped:345360 kB

Slab: 112344 kB

Committed_AS:535292 kB

PageTables: 2340 kB

VmallocTotal: 536870911 kB

VmallocUsed: 272696 kB

VmallocChunk: 536598175 kB

HugePages_Total: 0

HugePages_Free:0

Hugepagesize: 2048 kB

用free -m查看的结果:

[root@scs-2 tmp]# free -m

total used free shared buffers cached

Mem: 3189 317316 0 107 2605

-/+ buffers/cache: 460 2729

Swap:200078 1921

查看/proc/kcore文件的大小(内存镜像):

[root@scs-2 tmp]# ll -h /proc/kcore

-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore

备注:

占用内存的测量

测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。

/proc/meminfo 机器的内存使用信息

/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。

/proc/pid/statm 进程所占用的内存

[root@localhost ~]# cat /proc/self/statm

654 57 44 0 0 334 0

输出解释

CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:

参数 解释 /proc//status

Size (pages) 任务虚拟地址空间的大小 VmSize/4

Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4

Shared(pages) 共享页数 0

Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4

Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4

Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4

dt(pages) 04

查看机器可用内存

/proc/28248/>free

total used free shared buffers cached

Mem: 1023788 926400 97388 0 134668 503688

-/+ buffers/cache: 288044 735744

Swap: 1959920 89608 1870312

我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

所以 空闲内存=free+buffers+cached=total-used


linux,内存使用》由:免费论文网互联网用户整理提供;
链接地址:http://www.csmayi.cn/meiwen/36237.html
转载请保留,谢谢!
相关文章