Linux的内存到底有多少密码

之前关于Linux的内存做过几次实验,得出的结论是

pannic_on_oom如果打开的话,当内存不够用的时候,系统会重启,否则,程序会被干掉以释放掉内存。

由于Linux在使用Swap的时候会降低APP的性能等,那么,到底啥时候会使用内存呢?

之前以为是swapniess造成的,但是这个只是个概率值,即使它的取值空间在0~100。经过今天的一点点测试发现,目前能影响swap时间早晚的是 /proc/sys/vm/min_free_kbytes这个参数,这个保留一部分内存,有默认值,当然也可以使用设置。 如果这个设置的越高,那么swap使用的时候会越早,反之亦然。

好吧,先到这儿,还是需要继续学习。

  • 留段代码,下面的代码是今天测试的时候使用,当swap!=0的时候会退出程序。
#!/usr/bin/env python
#coding: utf8

import os
import sys
import time

r1 = {}
j = 1

def getMem():
    with open('/proc/meminfo') as f:
        total = int(f.readline().split()[1])
        free = int(f.readline().split()[1])
        buffers = int(f.readline().split()[1])
        cache = int(f.readline().split()[1])
        for i in range(0,9):
            f.readline()
        swaptotal = int(f.readline().split()[1])
        swapfree = int(f.readline().split()[1])
        swapused = swaptotal - swapfree
        mem_use = total-free-buffers-cache
    #print swaptotal
    #print swapfree
    #print swapused
    if ( swapused > 0):
        print "%s %s"%(mem_use,swapused)
        print "马上退出"
        sys.exit(0)
    #mem_use = total-free-buffers-cache
    #print mem_use/1024

#getMem()
#sys.exit()

j =0 
for x1 in range (0,10000000):
    print "enter 1 for"
    r1[x1] = {}
    for x2 in range(0,10240000):
        r1[x1][x2] = ' ' * ( 1 * 1024 * 100)
        #print "request for 1MB"
        j = j + 1
        print "request %s "%(j)
        getMem()
        #time.sleep(1)
  • 另外,如果swap已经使用了,即使程序退出了,但是swap的释放还是需要些时间,如何加快呢?
swapoff -a
swapon -a

附录:

内存测试手稿

这里写图片描述

参考:
http://huoding.com/2012/11/08/198

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值