FreeBSD下的系统性能调优

SYSTEM SETUP - DISKLABEL , NEWFS , TUNEFS , SWAP

当用disklabel(8) 在你的硬盘上布局文件系统时 , 重要的是要记住硬盘在传送
数据时外磁道比内磁道快 。为了利用这个特点 , 你应该把较小的文件系统和交
换区靠近外磁道 , 随后是较大的文件系统 , 最后是最大的文件系统 。还有重要
的是把标准文件系统大小确定在当你要增加这台机器负荷时也不需要重定他
们的大小 。我经常建立的文件系统的次序是128M的root , 1G的swap , 128M的
/var/tmp , 3G的/usr , 其余的空间留给/home 。

典型地 , 你应该把交换区大小定为2倍的内存大小 。如果你没有很多内存 , 那样
的话 , 你将需要更多的交换区空间 。不建议将交换区定在小于256M , 当你确定
交换区大小的时候 , 你要考虑到将来可能要扩充内存 。内核的VM(虚拟内存)换页
算法性能是准对交换区至少是内存大小2倍的条件进行优化的 。配置太小的交换
区会导致VM页面扫描的低效率 , 当内存扩充后 , 随之也会导致问题 。最后在一个
有多个SCSI硬盘的大系统上(或者有多个IDE磁盘工作在多个IDE 控制器上) ,
我们强烈建议在每个驱动器上配置交换分区 , 每个交换分区的大小应该是几乎
一样的 , 内核能处理任意大小的交换区 , 但是内部数据结构放大到最大分区的4
倍大小 。保持交换分区同样的大小允许内核优化地将交换空间交叉分布在N个
磁盘上 。不要担心这样做有点过份 , 交换区是Unix的救星 , 甚至于你虽然通常不用
那么多交换区 , 在被迫重新启动之前 , 它也可以给你时间去从一个出轨的程序中
把系统恢复过来 。

怎样为你的/var分区定大小主要依赖于你将怎样使用这台机器 。这个分区主要
存放邮箱 , 打印缓冲区和日志文件 。有些人甚至于把/var/log作为一个独立的
分区(但是除非有特别的情况 , 这样做不值得 , 只会浪费一个分区ID) 。如果你这
台机器主要用做邮件或打印服务器 , 或者运行一个大访问量的WEB服务器 , 你应
该考虑把这个分区建的更大一点 , 可能1G或更多 。很容易低估日志文件的存储需
求 。

确定/var/tmp的大小依赖于你将需要怎样使用你的临时文件 。128M是建议的最
小的尺寸 。注意sysinstall将建立一个/tmp目录 , 但是通常把/tmp作为/var/tmp
的连接是个好注意 。为临时文件建立一个分区有两个重要的原因: 首先 , 它减少
了系统崩溃后文件系统损坏的可能性 , 再就是减少一个出轨程序填满[/var]/tmp
时影响其他重要子系统(mail , logging等等)的机会 。填满[/var]/tmp是经常发
生的问题 。

在以前/tmp和/var/tmp是不同的东西 , 但是引入/var(和/var/tmp)是被程序员
引起的大迷惑 , 今天的程序间或使用一个或另一个 , 它们两者变的没有区别 。
所以把它们变成一个临时目录是有道理的.然而 , 当你处理/tmp时 , 有一件事
情是你不想做的 , 就是把/tmp驻留在根分区上 , 导致根分区被填满或崩溃后重
启时文件系统损坏.

/usr分区存放大量用于支持系统的文件 , 子目录/usr/local存放大量从ports(7)
安装的文件.如果你不那么多使用ports , 也不将系统源代码(/usr/src)存放在
机器上 , 你可以为/usr节省1G的磁盘空间.相反 , 如果你安装大量的ports(特
别是窗口管理和Linux仿真)建议你至少2G的/usr , 如果你还要将系统源代码放
在机器上 , 我们建议你3G的/usr , 不要低估所需的空间 , 它会慢慢爬起来 , 让你
大吃一惊.

/home分区存放用户自己的数据 , 我通常把余下的空间留给这个分区.

推荐阅读