Linux 系统优化统计

Linux 系统优化统计
20140704 Chenxin整理

一、关于硬盘分区
关于安装Linux如何建立硬盘分区、交换分区等问题,便于以后配置。

二、编辑/etc/inittab文件
大部分Linux的发行套件都建立六个虚拟控制台,实际上三个已经足够,并且可以节省可贵的内存空间。编辑/etc/inittab文件,在下面三行的前面加上#。
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
然后执行init q,使系统重新读取/etc/inittab文件,关闭tty4、tty5、tty6虚拟控制台。如果不考虑系统的安全,你可以利用第四个虚拟控制台来查看各种系统信息,编辑/etc/syslog.conf文件,在最后一行加入:
. /dev/tty4
最后再执行killall -HUP syslog。

三、建立或者编辑/etc/inputrc、/etc/profile、/etc/bashrc文件
只要编辑/etc/inputrc文件,设置INPUTRC的环境变量,利用Tab键的命令补全功能,就可以实现类似于MSDOS的DOSKEY的功能。这样对文件与目录的各种操作,也一样方便与快捷。(附/etc/inputrc文件)


set bell-style none # don't beep
set meta-flag on # allow 8-bit input
set convert-meta off # don't strip 8-bit characters
set output-meta on # display 8-bit characters correctly
set horizontal-scroll-mode On # scroll long command lines
set show-all-if-ambiguous On # after TAB is pressed
"e[1~": beginning-of-line # home
"e[2~": insert-last-argument # insert
"e[3~": delete-char # delete
"e[4~": end-of-line # end
"e[5~": backward-kill-word # page up
"e[6~": kill-word # page down

define F7 F8 like msdos doskey

"e[18~": history-search-forward # F7
"e[19~": history-search-backward # F8


编辑/etc/profile文件,在其尾部插入下面内容:


add by zws

customize less

LESS='-M-Q-r'

PS1="[u@h w]$ "
INPUTRC=/etc/inputrc
LESS='-M-r' # -r 为了ls | less 支持彩色。
LESSEDIT="%E ?lt+%lt. %f"
LESSOPEN="| lesspipe.sh %s"
LESSCHARSET=latin1
PAGER=less
export LESS LESSEDIT LESSOPEN LESSCHARSET INPUTRC


建立/usr/bin/lesspipe.sh文件,内容如下:


!/bin/sh

This is a preprocessor for 'less'. It is used when this environment

variable is set: LESSOPEN="|lesspipe.sh %s"

lesspipe() {
case "$1" in
.tar.bz2) bzip2 -cd $1 $1 2>/dev/null | tar tvvf - ;;
.tar) tar tf $1 2>/dev/null ;; # View contents of .tar and .tgz files
.tgz|.tar.gz|
.tar.Z|
.tar.z) tar ztf $1 2>/dev/null ;;
.Z|.z|.gz) gzip -dc $1 2>/dev/null ;; # View compressed files correctly
.zip) unzip -l $1 2>/dev/null ;; # View archives
.arj) unarj l $1 2>/dev/null ;;
.rpm) rpm -qpil $1 2>/dev/null ;;
.cpio) cpio --list -F $1 2>/dev/null ;;
.bz2) bzip2 -dc $1 2>/dev/null ;; # View compressed files correctly
.1|.2|
.3|
.4|
.5|
.6|
.7|
.8|.9|.n|.l|.man) FILE=file -L $1
FILE=echo $FILE | cut -d ' ' -f 2
if [ "$FILE" = "troff" ]; then
groff -s -p -t -e -Tascii -mandoc $1
fi ;;
*) file $1 | grep text > /dev/null ;
if [ $? = 1 ] ; then # it's not some kind of text
strings $1
fi ;;
esac
}
lesspipe $1


这样就可以使用less查看以上文件格式的信息与内容。
注意要利用chmod 755 /usr/bin/lesspipe.sh命令将此文件设置为可执行!
/etc/bashrc文件的例子:


/etc/bashrc

System wide functions and aliases

Environment stuff goes in /etc/profile

For some unknown reason bash refuses to inherit

PS1 in some circumstances that I can't figure out.

Putting PS1 here ensures that it gets loaded every time.

PS1="[u@h w]$ "

eval dircolors -b
alias ls='ls --color=yes -F -N' # ls 支持彩色
alias l='ls --color=yes -l -F -N' # l
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
alias df='df -h'
alias ln='ln -i'
lrpm() # list information on an .rpm file
{
if [ $# != 0 ]; then rpm -qilf which $1 | less; fi
}
lsrpm() # list information on an .rpm file
{
if [ $# != 0 ]; then rpm -qif which $1 | less; fi
}
set -o noclobber # 避免覆盖与重写文件


四、编辑/etc/rc.local文件
如果需要定制自己的登录信息,注意要修改/etc/rc.d/rc.local文件,因为每次执行/etc/rc.d/rc.local文件,都需要修改/etc/issue与/etc/issue.net文件,可以注解掉这些命令,编辑定制自己的/etc/issue文件,加快Linux引导过程,并且加入以下内容:
echo "base=0xd8000000 size=0x800000 type=write-combining" >> /proc/mtrr

Enable NumLock

for tty in /dev/tty[1-3]; do
setleds -D +num

五、定制vim的环境
以下是/usr/share/vim/vimrc的例子:


"" (for Chinese)
" Set file encoding format as 'prc' for Simplified Chinese
" Valid values for 'set fe=' is ansi, japan, korea, prc, taiwan
" We set fe to prc for default, if you need single-byte editing,
" just type ':set fe=ansi' will do the work.
set fe=prc
"" (for Chinese)
"" Set ruler on, you must set this to ensure
"" the Chinese functionality of gvim
set ru
"" For syntax color
if &term=="xterm"
set term=rxvt
set t_Co=8
set t_Sb=^[4%dm
set t_Sf=^[3%dm
endif
syntax on
"" Set visual bell and disable screen flash
" :set vb t_vb=
set bs=2
"" Toggle on/off highlightsearch
map :set hls!set hls?
"" Toggle on/off paste mode
map :set paste!set paste?
"" You can toggle the syntax on/off with this command
if has("syntax_items") | syntax off | else | syntax on | endif
map :if has("syntax_items") syntax off else syntax on endif
"" Set non-compatible with vi
set nocompatible
"" Set backup extension
" set backup
" set backupext=.bak
" add by zws
set autoindent
set ignorecase
set shiftwidth=4
set showmode
set tabstop=4
set nowrap
"if &t_Co > 1
" syntax on
"endif
"" Map for parenthesis matching
map %
"" search English word
map :set keywordprg=/usr/local/bin/cdictK:set keyword=man
map :set keywordprg=manK
" backspace
map X


六、编辑/etc/mtools.conf文件
一般情况下,都是在自己的机器安装Windows 98与Linux两种操作系统,通过安装mtools包,可以不用安装相应的文件系统,允许在MSDOS、Windows 98与Linux的文件系统之间,实现文件的读、写、移动、显示等操作。假设Windows 98安装在/dev/hda1、/dev/hda5分区下,修改/etc/mstools.conf文件,加入以下内容:
drive c: file="/dev/hda1"
drive d: file="/dev/hda5"
这样就可以执行mdir c:等命令。

七、拷贝各种配置文件
根据机器的用途,编辑拷贝相应的配置文件,例如:samba的配置文件/etc/smb.conf,域名服务器的配置文件,DHCP的配置文件/etc/dhcpd.conf等文件,在一般情况下,这些文件一旦配置好,很少发生改动,这样可以节约许多时间,注意原来的配置文件一定要做好备份,如果配置文件发生改动也要做好备份!

八、编译Linux内核
以下是编译内核的简要步骤:(以redhat6.1为例说明)
略.

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 是否开启,对读取效率影响很大。

hdparm硬盘加速
系统安装后没有开启dma支持,为了提高效率,可以开启它。
/etc/rc.d/rc.local 加入一行/sbin/hdparm -d1 -c3 -m16 /dev/hda
如果您的硬盘支持 ATA33 可以加上 -X66 这个参数,ATA66是 -X68。比如ATA66就是:/sbin/hdparm -d1 -X68 -c3 -m16 /dev/hda
我们可以用 hdparm -Tt /dev/hda测试加入前和加入后的效果。以上测试注意有可能带来数据的灾难问题,请不要随意使用。

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

  1. crond
  2. network
  3. syslogd
    真的,相信我,只要这四个就足够了!

三、下载 Kernel 重新编程。
因为系统所默认安装的 Kernel 是为了适用大部分的计算机而做的,并未对你的计算机作最优化,所以显得臃肿肥大,因为 Kernel 直接掌控著计算机的一切,所以对系统效率影响当然很大。
我的作法是∶下载最新的 Kernel 重新编程,将我计算机上的硬件直接编程进 Kernel 里面,不要作成 Module ,对於不需要的就不编程,这样,打造出完全面向自己环境的 Kernel ,才能完全发挥计算机的威力。
至於 Kernel 怎样编程?这就不是我的主题了,大家可以到CLDP 自行参考 KERNEL HOW-TO 中译版。

四、减少虚拟终端机的数量。
系统默认是6个,也就是 CTRL+ALT F1~F6 那六个,我关掉其中四个,只留下 CTRL+ALT F1~F2,大约省下 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 server 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 ,数字越小优先权就越高,但要注意的是一般使用者只能调低( 0~19),只有 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 差不多了。

关于存储器的读和写

在计算机内部,数据的读和写是逐级实现的。
1、读的情况:一个数据要从外部到达cpu,则要通过外存---》内存---》二级缓存---》一级缓存---》cpu寄存器---》参与计算。
2、写的情况:一般情况下,cpu产生的数据并没有(也不一定会)马上要写到外存上。那么这些数据往往是先保留在缓存或内存里,直到cpu通知写,写动作才会发生。
3、多个数据要读时,则要排队;同样,多个数据要写时,也要排队。
4、当同时有读和写的动作请求时,cpu必须安排好他们的顺序。
例子:
1、cpu要读一个数据:当前指令寄存器中找不到该数据,则cpu会从一级缓存当中查找,没有则查二级缓存,然后依次是内存、外存。
2、cpu读入一个数据后,内存、二级缓存、一级缓存都有该数据。随着数据读入的增加,缓存会满。这时就需要一个放弃的策略。先进后出法或先进先出法,还有一种策略:使用率最高的数据保留。
3、这样,缓存或内存中就有好多数据。当cpu要查找数据时,也要有一种策略:相联(全相联、半相联、部分相联)。就是把缓存划分成若干个相对独立的区域,查找数据时按照某个策略查找,这样效率会高些。
4、当cpu有数据要“写”到缓存时,这种数据要优先考虑保留,直到cpu“写”通知到达。
5、当读和写要求同时发生时,会发生2种情况:先读后写,先写后读。这两种情况都要认真考虑。比如:
(1)要写的数据地址刚好是要读的数据地址。先读后写使得读的是旧数据,当你需要的是最新的数据时,就出错了;先写后读使得原来的数据被覆盖了,当你需要原来的数据时,这时读出来的数据也是错。
(2)要写的数据地址虽然不是马上要读的数据,但它的中间结果还保留在缓存中。这样也会产生错误。
这也称为数据相关性。设计程序时应尽量避免(或减少)发生数据相关。虽然程序编译时会优化数据相关性。

巧用tmpfs加速你的linux服务器

今天又学了一招,就是使用虚拟磁盘来存放squid的缓存文件和php的seesion。速度快不少哦!
默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs可以使用您的RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个mkfs之类的命令才能真正地使用它,tmpfs是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
tmpfs有以下优势:

  1. 动态文件系统的大小;
  2. tmpfs的另一个主要的好处是它闪电般的速度。因为典型的tmpfs文件系统会完全驻留在RAM中,读写几乎可以是瞬间的;
  3. tmpfs数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。
    好了,讲了一些大道理,大家看烦了吧,还是讲讲我的应用吧:)
    首先在/dev/shm建个tmp文件夹,然后与实际/tmp绑定:
    mkdir /dev/shm/tmp
    chmod 1777 /dev/shm/tmp
    mount --bind /dev/shm/tmp /tmp
    应用实例: 1. squid的缓存目录设置
    vi /etc/squid/squid.conf
    修改成
    cache_dir ufs /tmp 256 16 256
    这里的第一个256表示使用256M内存,我觉得
    http://www.linuxaid.com.cn/articles/4/4/441672019.shtml
    里使用ramdisk的方法还不如直接使用tmpfs,至少每次启动不用mkfs,还可以动态改变大小。这时的/tmp实际就是dev/shm/tmp。
    然后重启一下服务,ok,现在所有的squid缓存文件都保存倒tmpfs文件系统里了,很快哦。
  4. 对php性能的优化
    对于一个访问量大的以apache+php的网站,可能tmp下的临时文件都会很多,比如seesion或者一些缓存文件,那么你可以把它保存到tmpfs文件。
    保存seesion的方法很简单了,只要修改php.ini就行了,由于我已经把/dev/stm/tmp与/tmp绑定,所以不改写也行,至于php程序产生的缓存文件那只能改自己的php程序了:)
    至于tmpfs的其他应用,我想大家可能通过这篇文章会有所启发。

性能优化参考性能分析工具

CPU性能分析工具:
vmstat
ps
sar
time
strace
pstree
top

Memory性能分析工具:
vmstat
strace
top
ipcs
ipcrm
cat /proc/meminfo
cat /proc/slabinfo
cat /proc//maps

I/O性能分析工具:
vmstat
iostat
repquota
quotacheck

Network性能分析工具:
ifconfig
ethereal
tethereal
iptraf
iwconfig
nfsstat
mrtg
ntop
netstat
cat /proc/sys/net

Linux优化[翻译]
这几天使用FC2感觉速度磁盘读写有点慢,因此想做一个系统优化。
第六章:Linux通用优化
这一节将指导你使用各种办法针对你的特定的CPU,内存,网络和文件系统来优化你的linux服务器.

6.1 /etc/profile文件
/etc/profile文件包含了系统的大量环境变量和程序开始运行的信息。对这个文件的修改和定制将影响你系统的整个环境变量(不管你是什么用户,译者加,这和修改家目录的.bashrc, .bash_profile不一样)。因此从这里开始优化和把一些优化信息的标志写到这里是一个不错的选择。
为了尽可能提高你在X86上编译的程序的性能,你可以在编译车程序时,使用-O9的标志。大部分Makefile(绝大部分源代码编译的配置文件)使用的是-O2的标志。-O9表示最大的优化。他会增加文件的大小,但是运行的更快(不要认为小就快,译者注)。
注意:并不是说使用-O9的标志就一定能获得最佳性能。如果你是686或以上CPU,而不是古老的386CPU,那么这个标志就没有必要了。

6.6 buffermem参参数
buffermem文件和VM子系统的操作关系非常密切。文件/proc/sys/vm/buffermem的值控制内存应该用来做内存缓冲的百分比。这个百分比对系统总内存百分比的计算很重要(这句话不通,译者加)。buffermem在redhat linux中的缺省设置时“2 10 60”。
To change the values of buffermem, type the following command on your terminal:
对redhat6.1,通过键入下面的命令来修改buffermem的值。

6.7. The ip_local_port_range parameters
文件/proc/sys/net/ipv4/ip_local_port_range 定义了被TCP和UDP用来传送的本地端口的范围。

6.8 /etc/nsswitch.conf 文件

6.10 ulimit 参数

6.11 atime和noatime 属性

6.12调谐IDE硬盘性能

posted @ 2020-04-21 11:03  ChanixChen  阅读(293)  评论(0)    收藏  举报