学习笔记--Ubuntu优化相关内容

Note from 2014-06-28 20:59:40.126

Ubuntu 优化相关的知识

一、基本知识
    1、进程简介
    广泛得说,所有在系统中运行的,用于执行各种各样任务的,都是一个进程,只不过根据具体执行任务的我不同可以分为:系统进程--用于管理和维持操作系统运行的,用户进程--用于处理用户需求的
    系统进程大部分是服务性质的进程,服务的开启和关闭是基于系统需求的
    用户进程大部分是应用程序类的进程,应用程序的开启和关闭是基于用户的需求的
    
    统一一下,进程表示像模像样可以产生运行中的进程标志符的东西,程序则表示能产生进程的可执行文件;用户能够直接使用应用程序,而操作系统才使用服务
    在计算机,只有正在运行的进程才消耗资源。可以使用 ps -aux or top 命令来查看
每个进程都有一个ID,称为PID,PID 专业称是一个进程的句柄,通俗说就是进程的***。对进程可以进行停止 重启 删除操作,操作的对象是以进程的PID来定的。
    操作有: 删除--kill PID 停止--kill -stop pid 继续--kill -cont pid 
    kill pid 只是发送一个信号,进程能捕捉这个信号,开始释放资源,关闭程序
     kill -1 pid 失去响应,发送hang up 信号 ,中止信号
     kill -9 pid 立即停止的信号

    信号是用来与守护程序和进程通信的。任何活动任务都一个进程,而守护程序是等待对某些事件做出反应的或者按照日程安排执行任务的后台服务。
    
    2 进程操作进阶
    并不是所有的进程都会被动态分配PID,至少有两个进程不会---kernel and init
kernel -- pid:0 无法用kill杀死,init -- pid:1 是主父进程,父进程的作用就是接受子进程的返回值和状态值。还有一些进程你不应该kill:zombies,I/O,bound-a interception
    
    3 进程的启动
    想看一个进程如何来,你可以看看它的PPID,大多数进程的PPID 都是1--init进程。
进程的启动有很多的原因:启动脚本 设备配置脚本 网络变化 任务日程
    
    启动脚本--/etc/init.d/文件夹,用于启动和停止系统服务的脚本,都将以链接形式存于/etc/rc.d,/etc/rc1.d以及类似的目录中。
    /etc/rcx.d--对应启动级别 想查看就用who -r 来查看 
    cysky@zzsi:~$ who -r
         运行级别 2 2014-06-28 17:14
    查看到运行级别是2,在boot的时候,所有/etc/rc2.d目录下的对应init脚本的输出都会存到/var/log/messages这个文件中,你可以根据它来判断哪些进程被执行了。

    启动设备--udev进程用于动态管理设备的配置,这个进程监视和监视和管理即插即用设备,一时这些设备生效,存在于/etc/udev/rules.d/文件夹下的哪些脚本就会生效

    shell启动脚本--每当登入登出系统,或者启动一个新的shell,都会执行配置脚本,每一个脚本都会启动进程。ubuntu 默认的shell是bash,相应的配置脚本如下:
    /etc/profile :每次登录shell都会执行,全局配置文件
    $HOME/.bash_profile :基于用户自定义,每一个用户都可以有自己的登录脚本
    /etc/bash.bashrc: 交互式非登录全局配置脚本,这个文件在.bashrc中会调用
    $HOME/.bashrc:交互式非登录用户自定义的配置脚本,也是我们大多数时候需要修改的文件
    /etc/bash.logout :不一定存在,如果存在的话,每次用户登出时调用它
    $HOME/.bash_logout:同上,只不过是用户自定义的
     
    脚本分两大类:一类用于登入登出的,一类是交互式,登入时两类都运行,打开一个终端窗口时,只有交互式脚本才会被执行
    
    桌面脚本--在启动图形界面的时候,首先会运行/etc/X11/xinit/xinitrc,/etc/X11/Xsession和/etc/X11/xinit/xserverrc 三个脚本。它们会设备相应的环境变量,并在最开始启动时运行应用程序,在X-windows 启动完毕后,gnome启动。区别:系统级启动脚本在/etc/X11/gdm/目录,用户算定启动程序在$HOME/.gnomerc文件,还可以通过系统--首选项--会话菜单来查看。
    如果你希望自启动程序是作用于使用X-Windwos的所有人,那么你要修改的地方就是/etc/X11/Xsession,或者把脚本放置到 /etc/X11/Xsession.d/目录下。如果仅仅是希望对你自己使用X-Windwos时生效,则修改$HOME/.xsession即可。

如果你希望自启动程序是作用于使用Gnome的所有人,那么你要修改的地方就是 /etc/X11/gdm/PostSession/Default,它会仅仅对Gnome使用者起作用,而不是KDE使用者或者其他。或者把脚本放置到 /etc/X11/Xsession.d/目录下。如果仅仅是希望对你自己使用Gnome时生效,则修改$HOME/.gnomerc即可。
     
    评估资源--在/proc 挂载了一个虚拟文件系统,专门用于列出当前系统资源情况和正在运行的进程。在这里 有很多以数字命名的文件夹,文件夹名就是进程的PID
    工具可以使用sysstat来(iostat)

二 实战演练
    1 加快系统启动速度
    以服务进行配置--工具sysv-rc-conf(sudo apt-get install sysv-rc-conf)
服务细节:
第一行的一排数字表示你的系统运行级别,对应的列就是该级别对应的启动进程,具体打开和关闭启动进程的操作方式很简单,下面就有说明。

好了,介绍一下常见的可以考虑去除的进程吧

* anacron ― 这是一个一个自动化运行任务守护进程。你可以把它屏蔽,然后用cron来安排计划任务。

* atd and cron ― 如果你根本就不会使用计划任务功能,那么可以连这个也不要。不过它占用的资源极少,不是特殊情况也没有必要禁止它。

* apmd ― 这是一个电源管理方面的服务,专门用于监视那些不支持ACPI的旧系统的电池。如果你使用的笔记本比较新,或者使用的是台式机,就没有必要要它。

* acpid ― 这个服务用于监视电池电量,以及那些键盘上的特殊功能键,比如屏幕亮度调整键,音量控制键,无线网卡开关等等,也可以监视台式机键盘上一些网络应用等类似 快捷键。如果你使用的不是笔记本,也不需要这些快捷键,就可以禁止它。

* bluez-utiles ― 提供蓝牙服务的支持,怎么操作就取决于你有没有蓝牙设备了。

* dns-clean, ppp, 和pppd-dns ― 这些服务用于动态拨号连接。如果你使用的不是拨号,就可以禁止。

* hplip ― 提供对HP Linux 图像和打印系统的支持。建议禁止,因为就算没有它,也可以通过lpr这些来实现打印。

* fetchmail - 接受邮件的守护程序,建议关闭。

* nvidia-kernel- ATI显卡用户可以关闭,自己编译显卡驱动的用户也可以关闭。

* hwtools - 优化irqs的工具,不用irqs的话就可以关闭

* mdadm, mdadm-raid, and lvm ― 用于支持RAID的文件系统和逻辑卷管理(lvm)。如果没有使用它们,就可以禁止。不过笔者建议在熟悉基本操作后可以自己尝试学习一些LVM相关的知 识,还是挺有意义的。关不关看自己吧。

* nfs-common, nfs-kernel-server, and portmap ― NFS(Network File System)是一种分布式文件系统,允许网络中的安装不同操作系统的计算机间共享文件和外设。如果你不是经常需要NFS服务,就可以先禁止它,等要使用 时,再用下面的命令来启动它们:

sudo /etc/init.d/portmap start
sudo /etc/init.d/nfs-common start
sudo /etc/init.d/nfs-kernel-server start

* pcmcia and pcmciautils ― 提供对笔记本上PCMCIA设备的支持。如果没有PCMCIA插槽,还要它干吗?

* powernowd and powernowd.early ― 用于控制可变速CPU的服务。现在新的计算机CPU大部分都是可自动变速来节省电量了,所以只有那些很老机器的用户才建议关闭它。事实上,这部分用户已经 很少很少,所以我个人建议还是保持开启。

* readahead and readahead - 一般只有内存非常小的用户,才建议关闭这个启动进程,因为它会预加载一些库,让一些程序在启动时更快,这样会消耗一些内存。如果你内存比较大,就没有必要 管它。

* rsync― 用于在计算机之间同步文件的服务,极少人用到,基本都可以禁止。

* vbesave ― rvices monitors the 监视Video BIOS实时配置的服务。它是ACPI的功能之一,通常是笔记本需要在屏幕显示或者外接显示(投影仪之类)之间切换时才起作用。如果你的计算机不支持 ACPI或者没有这种应用的需求,就可以禁止。

    2 调整内核参数
    查看参数 sudo sysctl -a | sort | more 
    kernel.threads- max = 16379
    调整参数 sudo sysctl -w kernel.threads-max=16000 --这个方式调整过的参数方始生效,但重启就没有了, 直接修改 /etc/sysctl.conf 
     NOTE:尽量两种方法一起用,先命令行修改看看效果,效果理想再写入到文件里去。
    
    修改共享内存 不同的应用程序可以共享同一块虚拟内在地址,分配方式:临时和永久,利用命令 ipcs 查看进程间通信的状态。输入ipcs -m
    看谁在用:ipcs -m -p 
    服务器得修改这个参数:
    sysctl kernel | grep shm

我的机器上果如下:

kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 33554432

这是什么意思呢?这些数据表示,当前总共有33,554,432 bytes (32 MB)可用共享内存,每一个单独的程序最高能够分配到2,097,152 bytes,也就是2 MB,而最小的分配单元是4096 bytes。这些数据对于常用的应用来说完全足够了,但是如果是那种类似于数据库的高性能应用,可能你就需要考虑增大它们的数值了。修改方法?请参考“调 整参数”小节。

    3 修改个人用户设置
    ulimit 命令就是bash下提供的 利用ulimit Ca 命令来显示当前设置
    例子:
    open files (-n) 1024
表示一个用户shell最多可以打开1024个文件,想增加怎么办?ulimit -n num即可。

core file size (blocks, -c) 0
表示core dumps功能关闭。想打开怎么办?ulimit -c num即可。

    4 杂项
     启动顺序---如果是sata,可以修改/etc/init.d/rc 文件:
    找到并修改该行:
        CONCURRENCY=none CONCURRENCY=shell
    修改host文件--修改/etc/hosts文件,可以提高程序速度,
        在127.0.0.1 localhost 主机名
    pango修改--修改sudo vim /etc/environment
    添加:MOZ_DISABLE_PANGO="1" 禁止pango

======================
另外的大众优化:(kate 是kde 桌面里的文本编辑器,gedit是gnome桌面的)
    关闭ipv6
    代码:sudo kate /etc/modprobe.d/aliases
    修改:alias net-pf-10 ipv6 为: -10 off #ipv6
    然后注释掉hosts文件中所有有关IPv6的行
    并行启动程序
    这将会使启动程序并行,加速启动过程
    代码: sudo kate /etc/init.d/rc
(注意:这里用gedit打开可能是乱码,换个编辑器,如nano,vi什么的就ok了)
找到并修改该行:
CONCURRENCY=none
为:
CONCURRENCY=shell
确保你的拼写正确,写错一个字母你将无法启动!!!
如果你使用的是SATA 或SCSI,这个方法会发挥最大的作用,然而即使像我使用ATA这样的机器上,这个方法也使得的GDM登录界面出现的更快了一些。
如果你使用很老的硬件,这个方法也可能会使你的机器启动变慢。

    将localhost化名为主机名(做过了)
对不对,你自己决定,我以前在ubuntu论坛看到的这个技巧,确实改善了一些应用程序的启动。
代码: sudo kate /etc/hosts
把你的主机名添加到第一行的localhost之后,像这样:
127.0.0.1 localhost yourhost
127.0.1.1 yourhost

禁止pango
我知道在firefox中这个方法已经被采用,但它仍然对于 thunderbird以及其他一些应用程序起到不错的作用
代码: sudo kate /etc/environment
添加:
MOZ_DISABLE_PANGO="1"

关闭gettys
感谢匿名网友提供
代码: sudo kate /etc/event.d/tty3
用#注释掉所有以start开头的行
这方法对于系统性能没什么改善,但能节约一点资源,何乐而不为。

preload
顾名思义,它预加载大多数一版用到的lib文件和应用程序,相当于加快了应用程序的启动(这并不会象有些人认为的会加快系统的启动速度)
代码: sudo apt-get install preload

swappiness
Ubuntu Feisty默认的vm.swappiness值是60,这一默认值已经很合适了。但你可以改小一些降低swap的加载,系统性能会有一点点的提升
输入:
代码: sysctl -q vm.swappiness
你会看到值是60, 更改:
代码: sudo sysctl vm.swappiness=10
这样你就将值由60改为10,这可以大大降低系统对于swap的写入,建议内存为512m或更多的朋友采用此方法。如你你发现你对于swap的使用极少, 可以将值设为0。这并不会禁止你对swap的使用,而是使你的系统对于swap的写入尽可能的少,同时尽可能多的使用你的实际内存。这对于你在切换应用程 序时有着巨大的作用,因为这样的话它们是在物理内存而非swap分区中。
如果你想永久得改变这一值,你需要更改 sysctl.conf 文件:
代码: sudo kate /etc/sysctl.conf
添加:
vm.swappiness=10
到末行,需要重启生效。
我发现对于我的1G内存,将此值设为5是最合适的。

grub选项--profile
grub有个叫做profile的选项,它是一种系统启动时所要读取的所有的文件的索引,这样使得随后系统查找并且读取这些文件的速度就会加快。
系统启动到grub启动菜单的时候,按esc键
选择你默认的启动内核,按e键
移动到第二行,再按e键
添加profile到这行末尾,回车
按b键启动系统
第一次启动时间会稍长一些,那是因为要创建索引(或许和随便怎么称呼它),但这之后每次启动就会更加平稳。
你需要在每次更新内核之后,或者是那些会影响到你的系统启动所需的文件的重大系统改动之后,重新作这一步。

sysv-rc-conf
安装sysv-rc-conf,禁止掉那些你不需要启动的服务。
举个例子,我的电脑没有蓝牙和 PCMCIA,所以我就不需要启动它。
因此禁止掉那些你没有和不需要的服务。
代码: sudo apt-get install sysv-rc-conf
然后:
代码: sudo sysv-rc-conf
以前贴过来的帖子,仅供参考http://hi.baidu.com/bwchaos/blog/item/b68a72c2604ff434e4dd3b6d.html

Xorg
这是个一般性的技巧,我不会告诉你该删掉什么,你比我更清楚你需要什么。。。。。。
如果你简化xorg.conf,你就能降低xorg耗用的资源
代码: sudo kate /etc/X11/xorg.conf
删掉任何不必要的 fontpaths, modules 以及 wacom设备(除非你需要)。
删掉wacom设备后,你还的除去那些当你运行应用程序时控制台输出的烦人的错误提示。

kernel hacking
尽管feisty的内核已经相当好了,你仍然可以作些调整优化你的系统。
按照下面这个思路编译你自己的内核
http://ubuntuforums.org/showthread.php?t=311158&highlight=master+kernel
我所做的是将文件系统和驱动添加到内核而不是作为模块加载。去掉那些我没有和不用的,然后编译我自己的新的和改进过的的内核。
如果不想自己编译内核,你就只能用仓库中的较慢的内核了。

硬盘和文件系统创建
这应该是你安装系统时考虑的首要问题吧。磁盘和文件系统的选择和使用对于系统的总体性能是有巨大影响的。按照对系统的用途,你应该创建不同的文件系统。
我采用下面的方案(我认为是桌面系统的一个不错的方案)
Mountpoint File system Size
/boot ext2 100 MB
/ LVM, VG=system, XFS 6 GB
/swap LVM, VG=system, swap The size of RAM in your computer. Making it smaller and you will not be able to hibernate.
/home LVM, VG=system, XFS 1 GB, or the rest of the space in that VG
/data LVM, VG=data, XFS The rest of the free space
我在fstab中对于我的xfs分区应用下面的选项:
noatime,nodiratime,logbufs=8
使用LVM确实能加速硬盘,而且你可以从中获得其他更多的好处,了解更多关于LVM--http://www.tldp.org/HOWTO/LVM-HOWTO/
我将/home和根/放在同一分区,而将/data单独分出来,这样以后我可以将它们分割到不同的物理硬盘,分离到不同硬盘的好处是可以加快读写。

关于hdparm?
我没有发现hdparm对于SATA硬盘有什么作用(似乎是缺乏对SATA硬盘的支持)。
但对于一些较老的硬盘,你可以用hdparm作些调整。
总之,因为我没有用,所以也就不能给你例子教你如何使用它。你可以上网上搜索一下hdparm,你会发现有很多这方面的文章。
可以参考这个http://hi.baidu.com/bwchaos/blog/item/38140bd35c15c7013bf3cf6c.html

现在差不多就这些了,我一旦发现更多的优化技巧我就会更新这个向导。。。。。。
------------------------
到这里,系统的总体优化就结束了,下面是关于应用程序的,大致译了一下,很简单
----------------------------
调整应用程序
没什么需要补充的了,但先面这些是我喜欢的
firefox
用swiftfox取代firefox,它是根据不同的CPU优化的firefox
禁止IPV6,地址栏中输入about:config
查找ipv6,禁止它
找到这一项ui.allow_platform_file_picker,设为false,使得文件对话框好看一点(如果你像我一样用的是KDE的话)。
===================================

注:里面多次出现kate,这个是kde桌面的文本编辑器,

本文转自孤舟夜航之家博客51CTO博客,原文链接http://blog.51cto.com/cysky/1432039如需转载请自行联系原作者


cysky

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值