Linux系统性能优化

一、开启硬盘 DMA 支持。

系统安装完毕後,硬盘的 DMA 是没有打开的,我的方法是在
/etc/rc.d/rc.local
最後面加上一行 /sbin/hdparm -d1 -c3 -m16 /dev/hda 这样每次开机後,硬盘的 DMA 就会开启,不必每次手动设定。

如果您的硬盘机支持 ATA33 可以加上 -X66 这个参数,ATA66则是 -X68,像我的硬盘是 ATA66 那麽完整参数就是 /sbin/hdparm -d1 -X68 -c3 -m16 /dev/hda 经过我的测试 ,在 DMA 未开启以前,实际读取效率是每秒约 4.10 Mb 左右,开启 DMA 後,每秒实际读取效率跃升为 20 Mb 大约提升 5 倍之多。

§
未开启 DMA 时的测试

[root@firefly /root]# hdparm -d0 /dev/hda

/dev/hda:

setting using_dma to 0 (off)
using_dma = 0 (off)

[root@firefly /root]# hdparm -Tt /dev/hda

/dev/hda:

Timing buffer-cache reads: 128 MB in 2.75 seconds = 46.55 MB/sec
Timing buffered disk reads: 64 MB in 15.58 seconds = 4.11 MB/sec

§
开启 DMA 後的测试结果

[root@firefly /root]# hdparm -d1 -X68 -c3 -m16 /dev/hda

/dev/hda:

setting 32-bit I/O support flag to 3
setting multcount to 16
setting using_dma to 1 (on)
setting xfermode to 69 (UltraDMA mode5)
multcount = 16 (on)
I/O support = 3 (32-bit w/sync)
using_dma = 1 (on)

[root@firefly /root]# hdparm -Tt /dev/hda/dev/hda:

Timing buffer-cache reads: 128 MB in 2.75 seconds = 46.55 MB/sec
Timing buffered disk reads: 64 MB in 3.20 seconds = 20.00 MB/sec

由以上的数据,可以看得出来,硬盘 DMA 是否开启,对读取效率影响很大。

二、关闭多馀的系统服务。

这是老生常谈的题目了,一般我们当作桌上型工作站的时候,只需要激活几个基本的?Service 即可,其他的不但没用,一方面会占用系统资源,另一方面则会有安全上的顾虑,我平常只用来连网、打打文件、听听音乐、看看电影,多半时间只是一个 Client 端,实在没必要激活 Server 端的服务,所以,我在 Setup System Services时,只留下以下几个 Service,其馀的都关闭。

1. crond
2. network
3. syslogd

真的,相信我,只要这3个就足够了!

三、下载 Kernel 重新编程。

因为系统所默认安装的 Kernel 是为了适用大部分的计算机而做的,并未对你的计算机作最优化,所以显得臃肿肥大,因为 Kernel 直接掌控著计算机的一切,所以对系统效率影响当然很大。

我的作法是下载最新的 Kernel 重新编程,将我计算机上的硬件直接编程进 Kernel 里面,不要作成 Module ,对於不需要的就不编程,这样,打造出完全面向自己环境的 Kernel ,才能完全发挥计算机的威力。

至於 Kernel 怎样编程?这就不是我的主题了,大家可以到CLDP 自行参考 KERNEL HOW-TO 中译版。

四、减少虚拟终端机的数量。

系统默认是6个,也就是 CTRL+ALT F1F6 那六个,我关掉其中四个,只留下 CTRL+ALT F1F2,大约省下 4 Mbytes 的记忆体,但是这样一来,X-Window 会从原来的 CTRL+ALT F7 变成 CTRL+ALT F3

修改 /etc/inittab 中,将 mingetty 3 6 全部加上 # 字号,然後下指令 #init q

五、调整 X-Windows 环境

我习惯操作 KDE ,对 GNOME 不熟,所以,以下是都是面向 KDE而设,GNOME 的使用者,我想,应该也差不多啦!

1、颜色数设为 16 Bit 就有很好的效果了,24 Bit 除了浪费资源,看不出有何好处。
2、不要使用屏幕保护程序。
3、取消动画窗口功能。
4、尽量使用同一种字型。
5、浏览器用 Mozilla 不要用 Netscape
6、不要激活音效服务器 artd

Speed Up X by Managing Font Setting
在你抱怨 X 跑得不够快之前,
先检查字型设定, 很可能就是影响效能的一大元凶。
先看一下 /etc/X11/XF86Config-4 档案里的 FontPath 设定值, 如果是
如下
Section "Files"

RgbPath "/usr/X11R6/lib/X11/rgb"

# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Mandrake 6.0 and later now use a font server independent of
# the X ser
ver to render fonts.

FontPath "unix/:-1"

EndSection

可参考 /etc/X11/fs/config 档案里的字型设定值, 挑选几个喜欢的字型目录(全部比较不会错)
来修改, 例如我直接设定下列几个字型目录
Section "Files"

RgbPath "/usr/X11R6/lib/X11/rgb"

# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Mandrake 6.0 and later now use a font server independent of
# the X server to render fonts.

FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/mdk:unscaled"
FontPath "/usr/share/fonts/ttf/big5"

EndSection

修改之後, 重新激活 startx 感受看看棉。

原本的 FontPath "unix/:-1" 将字型由 X Font Server 来提供,
一般使用者未蒙其利、先受其害, 可以考虑等熟悉 X Font Server 功能後再使用。
如此就可以关掉xfs
ps:
试用时不要用默认开机直接进x-window,若不行会卡在x-window
ps:
引用自http://twopensource.org/~marr/xfont_tip.html
六、调整应用程序优先权。

一般时候,我们使用任何程序时,其 NICE 值都是 0,意思是CPU 的使用权值。如果我们常用程序有较高的优先权的话,自然效率就会比较好,优先权的值从 -20 19 ,数字越小优先权就越高,但要注意的是一般使用者只能调低( 019),只有 root 有权调高优先权( -20 19 )。我们可以用 ps -fel 来观察 NI 那栏就知道。

说了半天,到底如何调整呢?有一个指令 /bin/nice 就是用来作这件事的,用法如下nice?-n?程序名称?参数....
n
的值从 -20 19,这是手动操作,在 KDE 中,可以用选单编辑器来设定,方法是在你要调整优先权的程序的 [ 命令 ] 那一栏的前面,加上 /bin/nice --n 就可以了。

比方说我常用 Mozilla 来浏览网页,我改成 /bin/nice --10 /usr/local/mozilla/mozilla 这样我的 Mozilla 执行时,就比其他程序有更高的优先权,在实际测试的时候,Mozilla 激活速度以及回应都快了不少,其他一些常用的程序,也可以比照办理。

後记

Linux
真的是一套很棒的操作系统,经过这样调整後,光是开机到登入窗口画面出现,从原来的 48 秒,变成 30 秒,用 top 指令(每秒)观察CPU idle 时间也从 82% 提升到 93%,而窗口程序的反应感觉上与 Win me 差不多了。

 

 

一、磁盘性能的调整
很多人可能不知道 Linux 内核有几个开关可以打开 IDE 磁盘的32 DMA 通道来加快传输速度。在性能上能加快两倍,几乎就和加一块磁盘镜像一样。

这些开关是几个命令的组合:

PCI 总线上使用32 I/O

# /sbin/hdparm -c 1 /dev/hda

(在有些芯片集的主板上,可能需要使用 -c 3 参数)

打开 DMA 通道:
# /sbin/hdparm -d 1 /dev/hda
(和内核是否支持主板芯片集,是否编译进去有关)

测试性能是否有改进:
# /sbin/hdparm -t /dev/hda

如果性能有改进的话,就可以保存设置:

# /sbin/hdparm -k 1 /dev/hda
内核会偶尔复位IDE 控制器,所以,如果没有保存的话,
先前的设置就丢失了,磁盘性能又回到死系胤健?
另外还有一个 -m 参数用来改变每次硬盘中断时的传递扇区数。

一般的机器都安装了 hdparm ,如果没有的话,可以在下面的地址找到:

http://metalab.unc.edu/pub/Linux/system/hardware/hdparm-3.5.tar.gz

用户报告在服务器上使用
# /sbin/hdparm -c1 -d1 -k1 -m16 -a128 /dev/hda

命令可以得到最大性能。

而在笔记本电脑上是:
# /sbin/hdparm -c1 -d1 -k1 -m16 /dev/hda

需要注意的时,打开DMA 通道在某些硬盘上会有危险,因为这些磁盘在DMA 的设计上不是很好。幸运的是,大多数磁盘还是可以使用这个方法来提升性能。如果你打开DMA 以后,经常碰到文件系统损坏的话,就要考虑不使用 DMA 了。

二、文件系统的调整
经常启动Linux 的人会知道,Linux 每当启动过一定次数后就会自动运行一个 fsck 程序,来检查文件系统。这个次数可以通过命令:

# tune2fs -c my_times

来调整。

tune2fs
是一个十分有用的工具,使用 -e 参数你可以指定文件系统遇到问题时应该怎样处理。详细的信息可以用

# man tune2fs

得到。

但是,不要在以读/写方式挂接的分区上运行 tune2fs

三、磁盘速度测试

Bonnie
是一个用来测试文件系统性能的程序,使用方法为:

bonnie [-d dir] [-s size] [-html]

它往硬盘写入一个 100MB 的文件然后读出来测试磁盘性能。你可以用 -s 参数来调整这个文件的大小,单位是 MB。默认的测试目录是当前目录,可以用 -d 参数改变。
-html
参数用来把结果以 HTML 格式输出。

例如:
# bonnie -d /home/tuneup -s 50
会测试目录 /home/tuneup 所在的文件系统读写 50MB 文件时的性能。

最新版本的 Bonnie 1.2 可以在以下网址下载:
ftp://ftp.linux.com/mounts/u3/mirrors/suse/people/garloff/linux/bonnie/bonnie-1.2.tar.gz

 

 

1、  检查你的gcc版本:

#gcc --version

2
、获取你的cpu的型号:

cat /proc/cpuinfo

3
、在/etc/下建立make.conf文件,并根据cpu的型号写入不同内容。注意你的gcc版本必须在3.0以上。
i386 (Intel)


CHOST="i386-pc-linux-gnu"
CFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer"

i486 (Intel)


CHOST="i486-pc-linux-gnu"
CFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"

Pentium 1 (Intel)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"

Pentium MMX (Intel)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=pentium-mmx -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium-mmx -O3 -pipe -fomit-frame-pointer"

Pentium PRO (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentiumpro -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentiumpro -O3 -pipe -fomit-frame-pointer"

Pentium II (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"

Celeron (Mendocino), aka Celeron1 (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"

Pentium III (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"

Celeron (Coppermine) aka Celeron2 (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"

Celeron (Willamette?) (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"

Pentium 4 (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"

Eden C3/Ezra (Via)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=i586 -m3dnow -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=i586 -m3dnow -O3 -pipe -fomit-frame-pointer"

K6 (AMD)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"

K6-2 (AMD)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6-2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6-2 -O3 -pipe -fomit-frame-pointer"

K6-3 (AMD)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6-3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6-3 -O3 -pipe -fomit-frame-pointer"

Athlon (AMD)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer"

Athlon-tbird, aka K7 (AMD)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"

Athlon-tbird XP (AMD)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"

Athlon 4(AMD)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-4 -O3 -pipe -fomit-frame-pointer"

Athlon XP (AMD)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"

Athlon MP (AMD)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-mp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-mp -O3 -pipe -fomit-frame-pointer"

603 (PowerPC)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fsigned-char"
CXXFLAGS="-O3 -pipe -fsigned-char"

603e (PowerPC)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fsigned-char"
CXXFLAGS="-O3 -pipe -fsigned-char"

604 (PowerPC)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fsigned-char"
CXXFLAGS="-O3 -pipe -fsigned-char"

604e (PowerPC)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fsigned-char"
CXXFLAGS="-O3 -pipe -fsigned-char"

750 aka as G3 (PowerPC)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=750 -O3 -pipe -fsigned-char -mpowerpc-gfxopt"
CXXFLAGS="-mcpu=750 -O3 -pipe -fsigned-char -mpowerpc-gfxopt"

7400, aka G4 (PowerPC)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=7400 -O2 -pipe -fsigned-char -maltivec
-mabi=altivec -mpowerpc-gfxopt"
CXXFLAGS="-mcpu=7400 -O2 -pipe -fsigned-char -maltivec
-mabi=altivec -mpowerpc-gfxopt"
-fsigned-char -maltivec -mabi=altivec -mpowerpc-gfxopt"

7450, aka G4 second generation (PowerPC)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=7450 -O2 -pipe -fsigned-char
-maltivec -mabi=altivec -mpowerpc-gfxopt"
CXXFLAGS="-mcpu=7450 -O2 -pipe -fsigned-char
-maltivec -mabi=altivec -mpowerpc-gfxopt"


PowerPC (If you don't know which one)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fsigned-char -mpowerpc-gfxopt"
CXXFLAGS="-O3 -pipe -fsigned-char -mpowerpc-gfxopt"

Sparc

CHOST="sparc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer"

Sparc 64

CHOST="sparc64-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer"


好了,这样做后你编译出的程序运行效率将比以前高很多!只要你有时间,你可以把你的系统如redhat linux 9.0的源代码(后缀.src.rpm)全部重新编译一次,你会发现你的Redhat Linux系统将比原来快一大截!
############################################################

以上我在RedHat Linux 9.0Mandrake Linux 9.1上通过并证明有效。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值