LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1832|回复: 6

用内存虚拟硬盘暂存编译时的临时文件,提高编译速度[zz]

[复制链接]
发表于 2005-7-30 09:36:08 | 显示全部楼层 |阅读模式
转载自http://forums.gentoo.org/viewtopic-t-281345.html
我试试效果,不错。大内存的朋友有福了:)

以下为原文:
-----------------

買了新PC,Dell 4700c,配置了1GB內存,但由於散熱不好,就所以就在這頭疼。於是找?硪韵碌姆椒ǎ http://gentoo-wiki.com/TIP_Speeding_up_portage_with_tmpfs

  原理: 用內存虚擬硬盘,?頃捍婢幾g時的臨時文件。

好處:
1. 快;
2. 硬盘少轉幾圈,熱量減少些(環保,保謢地球 --就看你有沒有看到這個帖了 8) );


使用:
0. 把下面的腳本於在/usr/bin/temerge;
1. chmod u+x temerge;
2. 以前用emerge 的,現在全用 temerge;


  1. #!/bin/bash
  2. MEMSIZE=850M
  3. mounted=false

  4. . /sbin/functions.sh

  5. mounttmpfs() {
  6.      mount -t tmpfs tmpfs -o size=$MEMSIZE /var/tmp/portage
  7.      mounted="true"
  8. }

  9. compile() {
  10.      ebegin "emerging ${*}"
  11.           emerge ${*}
  12.      eend $?
  13. }

  14. unmount() {
  15.      ebegin "unmounting tmpfs"
  16.           umount -f /var/tmp/portage
  17.      eend $?
  18. }

  19. ebegin "Mounting $MEMSIZE of memory to /var/tmp/portage"
  20. if [ -z "$(mount | grep /var/tmp/portage)" ]
  21. then
  22.      mounttmpfs
  23. else
  24.      eerror "tmpfs already mounted!"
  25.      exit 0
  26. fi
  27. eend $?

  28. compile ${*}

  29. if [ -n "$mounted" ]
  30. then
  31.      unmount
  32. fi
复制代码

_________________
Akar
我也?凵线@五個字: 時時事事試!

---------------------------
以上是原文
 楼主| 发表于 2005-7-30 09:42:38 | 显示全部楼层
我的一个建议是:

在/etc/make.conf中加入
  1. AUTOCLEAN="yes"
复制代码


这样会每编译完成一个package就自动清理掉临时文件,所以temerge建立的“内存硬盘”不会因大量编译而塞爆;而清理动作发生在内存,所以速度几乎不受什么影响。而且这样一来,较小内存(比如512M)或许也可以用temerge呢! 不过,太小的内存还是不太稳妥哦。。
回复 支持 反对

使用道具 举报

发表于 2005-7-30 11:38:48 | 显示全部楼层
如果是256M呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-30 11:54:02 | 显示全部楼层
256m麼,还是老老实实用硬盘暂存吧,因为扣除系统以及用户自己的开销,用来虚拟硬盘的空间所剩无几。

我刚才temerge个xorg,花了750m左右内存:)
当然,大部分package花费300M以下空间的。如果有2G内存,那就无敌了恩
回复 支持 反对

使用道具 举报

发表于 2005-7-31 00:43:53 | 显示全部楼层
我觉得还是1G的内存稳妥些。512都不一定能顶住,要是内存虚拟盘耗尽,可能编译也被迫终止
回复 支持 反对

使用道具 举报

发表于 2005-7-31 12:17:26 | 显示全部楼层
tmpfs依赖于virtual memory
所以可以用swap分区/文件
所以即使内存耗尽,只要swap还有空间就没事

这是和ramdisk的一个根本区别,ramdisk只能使用内存
回复 支持 反对

使用道具 举报

发表于 2005-8-1 04:01:22 | 显示全部楼层
楼主啊,你的人头换一下吧,受不了啊。
可以直接在fstab里面写好tmpfs的,何必这么麻烦用这样的脚本呢?
如果有512M swap 1G内存,分个512做tmpfs是没有问题的,太大似乎意义也不大。
回复 支持 反对

使用道具 举报

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

本版积分规则

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