|
楼主 |
发表于 2004-11-16 12:03:44
|
显示全部楼层
7. 增加系统打开的文件数目
8. 文件“atime”属性
9. 文件的“noatime”属性
10. 特定的TCP/IP栈
11. 交换分区
12. 调整IDE硬盘性能
7. 增加系统打开的文件数目
增加当前进程打开文件的数目。RedHat 6.0(内核2.2.5)中,用这种方法进程可以至少打开31000个文件描述符;内核版本为2.2.12中,可以至少打开90000个文件描述符(在适当的限制下)。它的上限仅受限于可用内存。
编辑“.bashrc”文件(例如:vi /root/.bashrc)并加入下面一行:
ulimit -n 90000
然后退出,重新登录。为了验证,可以以root身份登录,然后键入“ulimit –a”,在打开文件数一项中应该显示“90000”,例如:
[root@deep]# ulimit -a
core file size (blocks) 1000000
data seg size (kbytes) unlimited
file size (blocks) unlimited
max memory size (kbytes) unlimited
stack size (kbytes) 8192
cpu time (seconds) unlimited
max user processes unlimited
pipe size (512 bytes) 8
open files 90000 * this line.
virtual memory (kbytes) 2105343
注意:在早于2.2版内核的系统中,即使进行了上述修改,每个进程所能打开的文件数目仍然限制为1024。
8. 文件“atime”属性
Linux除了记录文件的创建和修改时间外,还记录文件最近的访问时间。该信息作用不大,但为保留它,系统需要消耗相应的资源。ext2文件系统允许超级用户对单个文件进行标记,以忽略对这条信息的记录。
这种优化调整,对于文件查找操作,系统性能提高显著,另外,对于需要经常访问的文件(如:/var/spool/news)也是很有用的。设置该属性的命令为:
[root@deep]# chattr +A filename
若需要对某个目录下的所有文件进行这种设置,可以使用:
[root@deep /root]# chattr -R +A /var/spool/
[root@deep /root]# chattr -R +A /cache/
[root@deep /root]# chattr -R +A /home/httpd/ona/
9. 文件的“noatime”属性
Linux在mount文件系统时,可以使用“noatime”选项。并可以在文件“/etc/fstab”的mount选项区域中加入。当含有该选项的
文件系统被挂入(mount)系统时,对该文件系统中的文件的读访问,不再更新文件的atime信息。一般情况下,atime信息没有用,所以不更新该域并无大碍。这一选项的重要性在于:当只对文件进行读操作时,不再需要向文件系统中该文件的相应区域写入信息。因为写入操作的开销某种意义下是昂贵的,因此该选项可以获得明显的性能的改善。该选项对于文件的wtime属性没有影响,每次文件写操作时,都会更新文件的wtime信息。
编辑“fstab”文件(vi /etc/fstab)并且加入如下一行(举例说明):
E.I: /dev/sda7 /chroot ext2 defaults,noatime 1 2
重新启动系统, 然后用以下命令测试结果:
[ root@deep ]# reboot
[ root@deep ]# cat /proc/mounts
10. 特定的TCP/IP栈
RedHat Linux , 一般情况下,并不优化 TCP/IP 窗口大小。这能使系统性能的差别很大。如需更多的信息,参阅:RFC 1106 - High Latency WAN links - Section 4.1 and RFC 793 - Transmission Control Protocol。
编辑文件“/etc/sysconfig/network-scripts/ifup”,在110、112、117、125和134行,有:
110: "route add -net ${NETWORK} netmask ${NETMASK} ${DEVICE}"
112: "route add -host ${IPADDR} ${DEVICE}"
117: "route add default gw ${GATEWAY} metric 1 ${DEVICE}"
125: "route add default gw ${GATEWAY} ${DEVICE}"
134: "route add default gw $gw ${DEVICE}"
修改为:
110: "route add -net ${NETWORK} netmask ${NETMASK} window 8192 ${DEVICE}"
112: "route add -host ${IPADDR} window 8192 ${DEVICE}"
117: "route add default gw ${GATEWAY} window 8192 metric 1 ${DEVICE}"
125: "route add default gw ${GATEWAY} window 8192 ${DEVICE}"
134: "route add default gw $gw window 8192 ${DEVICE}"
11. 交换分区
尽量把交换分区放在硬盘的开始区域。硬盘的开始区域物理上位于硬盘柱面的外环部分,因此硬盘的每转能在这一部分读写更多的信息。我曾经见过,在运行命令“hdparm –t”时,把交换分区放在硬盘的结尾部分市,系统的读写速度比放在硬盘的开始部分低3MB/s。
12. 调整IDE硬盘性能
在有大量的磁盘 I/O 操作时,设置IDE硬盘使用 DMA 、32 位的传送和多重的扇区模式(Multiple sector mode),可以大幅提高系统性能。除非显式的告诉内核使用这些模式,内核缺省是使用保守设置的。
使用如下命令,以使PCI总线允许32位I/O操作:
[root@deep]# /sbin/hdparm -c 1 /dev/hda (或hdb, hdc 等等)
hdparm( 的帮助信息(manpage)中说明了:对于某些芯片需要使用选项“-c 3”。所有的(E)IDE硬盘与接口卡相连的扁平电缆中只用16-bit的连接。
使用如下命令,以允许DMA方式:
[root@deep]# /sbin/hdparm -d 1 /dev/hda (或hdb, hdc 等等)
这取决于编译内核时选择的主板芯片组。
使用如下命令,以允许多字的DMA模式2传送:
[root@deep]# /sbin/hdparm -d 1 -X34 /dev/hda (或hdb, hdc 等等)
这为较新的(E)IDE/ATA2硬盘设置IDE的传送模式。(参阅硬盘手册,以核实你的硬盘是否支持这种模式)
使用如下命令,以允许UltraDMA 模式2:
[root@deep]# /sbin/hdparm -d 1 -X66 /dev/hda (或hdb, hdc 等等)
使用该命令之前,事先应该有支持UltraDMA的芯片组,并参看hdparm的帮助信息。使用该命令时,务必小心。
使用如下命令,以允许多扇区I/O模式:
[root@deep]# /sbin/hdparm -m XX /dev/hda (或hdb, hdc 等等)
其中,参数XX是指使用硬盘支持的最大设置。可以使用“-i”选项来自动查找所装硬盘支持的最大设置。可以在输出中查看MaxMultSect的值。例如:
[root@deep]# /sbin/hdparm -i /dev/hda (或hdb, hdc 等等)
/dev/hda:
Model=Maxtor 7540 AV, FwRev=GA7X4647, SerialNo=L1007YZS
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>5Mbs FmtGapReq }
RawCHS=1046/16/63, TrkSize=0, SectSize=0, ECCbytes=11
BuffType=3(DualPortCache), BuffSize=32kB, MaxMultSect=8, MultSect=8
DblWordIO=yes, maxPIO=2(fast), DMA=yes, maxDMA=1(medium)
CurCHS=523/32/63, CurSects=379584528, LBA=yes, LBA=yes, LBAsects=1054368
tDMA={min:150,rec:150}, DMA modes: sword0 sword1 *sword2 *mword0
IORDY=on/off, tPIO={min:240,w/IORDY:180}, PIO modes: mode3
目前的大多数的硬盘驱动器都支持多扇区模式(Multiple sector mode 或aka IDE Block Mode),它允许一次中断中传送多个扇区而不是一次中断传送一个扇区。具有这种特性的硬盘驱动器,能使操作系统在硬盘I/O时的负载下降30-50%。在许多系统中,它能提高数据的吞吐率5-50%。
可以用hdparm的测试模式,来测试所作修改的结果:
[root@deep]# /sbin/hdparm -t /dev/hda (或hdb, hdc 等等) |
|