LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: heng

linux用什么软件来释放内存....?大家推荐一个!

[复制链接]
发表于 2005-7-4 10:00:23 | 显示全部楼层
Swap: 1020088k total, 144k used, 1019944k free, 1847384k cached
很好呀。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-4 10:45:03 | 显示全部楼层
Post by sunmoon1997
Swap: 1020088k total, 144k used, 1019944k free, 1847384k cached
很好呀。。。。


内存使用太高啦...用什么办法释放物理内存??怎么说明它好呢?现在服务器好慢呀!...老总一定要我解决这个问题呀???

我看过有关文章:
内存申请和释放
include/linux/kernel.h里声明了kmalloc()和kfree()。用于在内核模式下申请和释放内存。
void *kmalloc(unsigned int len,int priority);
void kfree(void *__ptr);
与用户模式下的malloc()不同,kmalloc()申请空间有大小限制。长度是2的整次方。可以申请的最大长度也有限制。另外kmalloc()有priority参数,通常使用时可以为GFP_KERNEL,如果在中断里调用用GFP_ATOMIC参数,因为使用GFP_KERNEL 则调用者可能进入sleep状态,在处理中断时是不允许的。
kfree()释放的内存必须是kmalloc()申请的。如果知道内存的大小,也可以用kfree_s()释放。
2.4.2 request_irq()、free_irq()
这是驱动程序申请中断和释放中断的调用。在include/linux/sched.h里声明。
request_irq()调用的定义:
int request_irq(unsigned int irq,
void (*handler)(int irq, void *dev_id, struct pt_regs *regs),
unsigned long irqflags,
const char * devname,
void *dev_id);
irq是要申请的硬件中断号。在Intel平台,范围0--15。handler是向系统登记的中断处理函数。这是一个回调函数,中断发生时,系统调用这个函数,传入的参 数包括硬件中断号,device id,寄存器值。dev_id就是下面的request_irq时传递 给系统的参数dev_id。irqflags是中断处理的一些属性。比较重要的有SA_INTERRUPT,
标明中断处理程序是快速处理程序(设置SA_INTERRUPT)还是慢速处理程序(不设置SA_INTERRUPT)。快速处理程序被调用时屏蔽所有中断。慢速处理程序不屏蔽。还有 一个SA_SHIRQ属性,设置了以后运行多个设备共享中断。dev_id在中断共享时会用到。一般设置为这个设备的device结构本身或者NULL。中断处理程序可以用dev_id 找到相应的控制这个中断的设备,或者用irq2dev_map找到中断对应的设备。
void free_irq(unsigned int irq,void *dev_id);
回复 支持 反对

使用道具 举报

发表于 2005-7-4 10:49:54 | 显示全部楼层
Mem: 2074444k total, 2019440k used, 55004k free, 76212k buffers
Swap: 1020088k total, 144k used, 1019944k free, 1847384k cached

从这个数据上看不出来什么问题.
把TOP输出结果贴出来.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-4 10:59:48 | 显示全部楼层
Post by 弥敦路九号
Mem: 2074444k total, 2019440k used, 55004k free, 76212k buffers
Swap: 1020088k total, 144k used, 1019944k free, 1847384k cached

从这个数据上看不出来什么问题.
把TOP输出结果贴出来.



top的部分显示因为服务器流量大,apache进程不能完全显示)

top - 10:56:18 up 3 days,  1:49,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  85 total,   1 running,  84 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5% us,  0.3% sy,  0.0% ni, 99.0% id,  0.0% wa,  0.0% hi,  0.2% si
Mem:   2074444k total,  2011784k used,    62660k free,    76268k buffers
Swap:  1020088k total,      144k used,  1019944k free,  1840048k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
24136 apache    15   0 10920 3848 2612 S  0.3  0.2   0:00.06 httpd
24140 apache    15   0 10920 3848 2612 S  0.3  0.2   0:00.08 httpd
24266 apache    15   0 10920 3848 2612 S  0.3  0.2   0:00.01 httpd
24273 apache    15   0 10920 3848 2612 S  0.3  0.2   0:00.01 httpd
24276 apache    15   0 10920 3848 2612 S  0.3  0.2   0:00.02 httpd
    1 root      16   0  1680  552  480 S  0.0  0.0   0:00.68 init
    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.04 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:01.43 ksoftirqd/0
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.04 migration/1
    5 root      34  19     0    0    0 S  0.0  0.0   0:00.09 ksoftirqd/1
    6 root      10  -5     0    0    0 S  0.0  0.0   0:10.07 events/0
    7 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 events/1
    8 root      12  -5     0    0    0 S  0.0  0.0   0:00.01 khelper
   13 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
   23 root      14  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid
  109 root      10  -5     0    0    0 S  0.0  0.0   0:00.18 kblockd/0
  110 root      10  -5     0    0    0 S  0.0  0.0   0:00.01 kblockd/1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-4 11:05:39 | 显示全部楼层
内存申请和释放
要不要进行重新编译内核和更改内核
回复 支持 反对

使用道具 举报

发表于 2005-7-4 11:05:40 | 显示全部楼层
你认为如果是物理内存不够的话, 那为什么 swap 几乎没有使用了?
free -m 的结果了?
回复 支持 反对

使用道具 举报

发表于 2005-7-4 12:39:27 | 显示全部楼层
apache在我以前的破机器上(PIII 1.0G, 512M),在大流量的时候,CPU早都満载啦,Mem应该不是主要问题。看你的机器,CPU还很闲嘛。
再说了,内存管理得不好,命中率低,就会频繁读取硬盘上的数据,如果你老释放内存,apache server的硬盘灯就会亮个不停。。嘿嘿。。
还是用ab先做个stress test,我给个正常的结果你对比一下:

Server Software:        Apache/2.0.46
Server Hostname:        192.168.200.118
Server Port:            80

Document Path:          /
Document Length:        489 bytes

Concurrency Level:      20
Time taken for tests:   9.226171 seconds
Complete requests:      50000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    50003
Total transferred:      39802388 bytes
HTML transferred:       24451467 bytes
Requests per second:    5419.37 [#/sec] (mean)
Time per request:       3.690 [ms] (mean)
Time per request:       0.185 [ms] (mean, across all concurrent requests)
Transfer rate:          4212.91 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     2 4610 2660.6   4608    9223
Waiting:        0    3   2.1      2      61
Total:          2 4610 2660.6   4608    9223
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-4 13:26:03 | 显示全部楼层
写下脚本定时整理内存也行呀!谁能我建议.......
回复 支持 反对

使用道具 举报

发表于 2005-7-4 13:38:43 | 显示全部楼层
楼主显示的数据一切正常啊。。。干嘛非要把正常的搞成不正常的呢?
慢得话,用多一台作squid 代理?不清楚楼主的具体情况
回复 支持 反对

使用道具 举报

发表于 2005-7-4 13:45:59 | 显示全部楼层
我看也很正常,swap才用了那么一点点。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表