精华内容
下载资源
问答
  • 嵌入式Linux系统优化的那些事儿

    千次阅读 2017-08-22 15:38:36
    % \today从今天开始我们来扯一扯嵌入式Linux系统优化的那些事儿。。什么是嵌入式?官方解释请自行Google Or Wikipedia。嵌入式Linux ?嵌入式Linux 是嵌入式系统中比较主流的一种,其以Linux 为嵌入式设备的操作系统...

    不抛弃、不放弃 - 士兵突击

    从今天开始我们来扯一扯嵌入式Linux系统优化的那些事儿。。

    什么是嵌入式系统?

    嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。[1][2]嵌入式系统常被用于高效控制许多常见设备,被嵌入的系统通常是包含数字硬件和机械部件的完整设备,例如汽车的防锁死刹车系统。相反,通用计算机如个人电脑则设计灵活,可以智能处理各式各样的运算情况,以满足广大终端用户不同的需要。
    现代嵌入式系统通常是基于微控制器(如含集成内存和/或外设接口的中央处理单元)的,但在较复杂的系统中普通微处理器(使用外部存储芯片和外设接口电路)也很常见。通用型处理器、专门进行某类计算的处理器、为手持应用订制设计的处理器等,都可能应用到嵌入式系统。常见的专用处理器有数字信号处理器。
    嵌入式系统的关键特性是处理特定的任务,因此工程师能对其进行优化,以降低产品的体积和成本,提升可靠性和性能。
    嵌入式系统的物理形态包括便携设备如计步器、电子手表和MP3播放器,大型固定装置如交通灯、工厂控制器,大型复杂系统如混合动力汽车、磁共振成像设备、航空电子设备等。它们的复杂度低至单片机,高至大型底盘或外壳内安装有多个部件、外设和网络。

    嵌入式Linux ?

    嵌入式Linux 是嵌入式系统中比较主流的一种,其以Linux 为嵌入式设备的操作系统,并广泛用于消费电子,移动电话,航天航空电子中。其Wiki上如是描述:
    嵌入式Linux(英语:Embedded Linux)是一类嵌入式操作系统的概称,这类型的操作系统皆以Linux内核为基础,被设计来使用于嵌入式设备。这类操作系统被广泛地使用在移动电话、个人数码助理(PDA)、媒体播放器以及众多消费性电子设备中。
    比起发行版的Linux 系统,嵌入式Linux 以Linux 为蓝本,进行了大规模的裁剪,只保留目标平台需要用到的东西。其保留了Linux 的开放性,并且也具体嵌入式设备的需求。
    但是由于Linux 的庞大以及其为桌面服务器系统的本质,所以在一些性能方面确实是无法达到预期目标,为此还有专门的社区分支基于Linux 开发了支持硬实时的RT分支版本。由于Linux 的兼容性非常的好,所以嵌入式Linux的贱人显然也是完美的。嵌入式设备提供商可以按照自己的需求随意裁剪Linux 源码,并添加自己的功能。

    啥?嵌入式设备的用户体验?

    不管要做出什么样形态的产品,用户体验总是会被大家推崇到首位,你系统做的在牛逼,架构选的多么的新颖,算法多么的前无古人。假如你的产品用起来体验很烂,照样没有客户埋单。
    用户体验又分为了好多类型,比如外观、材质、手感这属于外部的一个感官。俗称颜值。比如玩王者农药是否卡?费电吗?防水吗?能看VR吗?美颜效果如何?这一类体验属于交互体验。交互体验是内在。再比如还有一类人比较关心的就是是否有一些特色功能,比如红外、虹膜、指纹。 这些功能其实对于大多数的消费者而言都是锦上添花。但是对于一些极客而言,确实实打实的可用功能。归到最后其实就是,始于颜值,陷于才华,忠于人品。
    那么你如果满足了上述的要求,作为消费产品,又会回归一个比较俗的话题,那就是价格。 恩恩,扯远了。

    交互体验的最终目的就是迅速,人机交互的响应很迅速。不过我任务对于大多数泛嵌入式终端产品来讲,大多其实是无人值守的交互状态。所谓无人值守,即是设置好了预期指令,可以在不需要人为交互的情况下,做出响应。比如交换机,路由器,中控器等。这些设备大多是提供协作功能,其本身不需要太多的人机交互,更多的是用来做人机->机或者机->人机 交互的通路。
    这些设备的要求,要比单纯的人机交互设备的响应要求更高。 大家可以接受电脑或者手机重启一次,或者死机一次。 但是无法忍受断电,断网。

    还要优化什么?

    嵌入式系统设备的优化目的大抵可以从下面几个点去概括

    • 增强系统的稳定性
    • 加速系统和程序
    • 减小系统和程序的体积(裁剪)
    • 降低系统的功耗
    • 提供系统的响应能力
    • 成本和组合的优化效果
    • 终极优化的策略

    上述总结出自魅族的内核团队大神吴老师总结的,我觉得概括的很全面,也很到位。

    增强系统的稳定性

    随着业务的增量变化,没有百分之一百的稳定性,只有百分之99.9的稳定性,我们的目标其实也就是百分之99.9的稳定性,这样的系统才是最健壮的。
    根据吴老师的描述,可以通过以下手段来进行稳定性的测试取样,然后做评比。
    - 尽量模拟各种潜在的应用场景,需要构造应用场景测试例。
    - 使用各种压力测试环境将系统上资源利用到极致,采用Linux 现有的测试工具,可做成一套完整的测试流程。
    - 采用标准的测试套件将整个系统的兼容性(是否符合标准)、完整性(功能是否完善)、健壮性(是否容易Crash)。

    Linux 标准测试套件

    Linux 硬件测试工具以及功能测试相关工具

    • 处理器:cpuburn(FPU) + gkrellm + lm_sensor 压力测试
    • 图形处理器:Neocore (3D), NenaMark(OpenGPL ES 2.0)
    • 内存:memtest86+, memtester,CPU厂商自带的bootloaderi/xloader
    • 串口:minicom, cat /dev/ttyS0, cat /dev/ttyUSB0
    • 闪存(NOR/NAND):mtd-utils, flash_eraseall, flashcp
    • 声卡:alsa-utils, amixer, alsamixer, aplay /dev/urandom;mplayer -ao alsa|oss
    • 摄像头:v4l2, mplayer tv://dev/video0
    • USB:usbutils, lsusb; usbstress,可挂载存储设备测试
    • 显卡/LCD: mplayer, directfb, directfb-examples
    • I2C: i2c-tools, i2cdetect -l, i2cget, i2cset, i2cdump
    • RTC:util-linux, date + hwclock -r/-w
    • 传感器:lm-sensors, sensors, gkrellm
    • 键盘/鼠标:showkey; xdotool(simulate)
    • 功能键:/sys/class/input/; HAL+Dbus, hotkey.py
    • 触摸屏:Tslib
    • 触摸板:gpointing-device-settings, tpconfig
    • 磁盘:hdparm; hddtemp; badblocks -s -v /dev/sda1;smartctl -a /dev/ad0,blkid,sg-utils
    • 以太网、无线、蓝牙:/sys/net/, ethtool, dhclient, ifconfig, ping -IethX -s psize -f, netperf -A -l, network-manager, wireshark,netsniff-ng
    • FC,ISCSI: targetcli,lio,iscsitarget

    嵌入式Linux 性能优化方向

    那么在嵌入式系统中,为了提高设备的响应速度以及稳定性我们应该要优化什么?我觉得可以从下面几个方向入手。

    上述优化前提是你自己的程序已经在一个比较良好的算法或者调度下已经无法迈出往前一步了,当然我这儿只是类比。具体还要根据生产环境来决定。因为很多人根据无需去优化这些,把自己写的业务代码优化好才是王道。

    嵌入式 Linux 业务软件质量控制

    • 设计 – 遵循标准开发规范,参考POSIX,LSB等统一标准。
    • 流程 – 遵循标准开发流程。
    • 编码 – 编码风格参考内核代码风格,风格一致性检查。 scripts/checkpatch.pl。
    • 静态检查 – Sparse,coccinelle,smatch。
    • 编译时检查 – -Wall -Werror -std=c89-pedantic-errors。
    • 运行时诊断和调试 – Debugging/Tracing API

    参考资料:

    展开全文
  • Linux系统优化基础和系统监控

    万次阅读 2017-09-26 20:01:11
    一些linux系统优化方法
    
    系统优化  
    
    系统优化有其两面性,选择优化一个选项的时候,总会牺牲另一个选项的性能 
    
    优化的几个方向:
    加硬件  
    架构	
    (资源流动性)
    
    linux系统优化,调优
    (微调)
    
    redhat官方文档
    Red_Hat_Enterprise_Linux-7-Performance_Tuning_Guide-zh-CN.pdf
    
    业务上线之前的优化:
    1,安装系统优化
    以自用环境500G硬盘为例:
    /boot	300M-500M  (只存放grub和启动有关文件,不存放其它) 
    /       100G-150G(因为很多人默认会把各种东西放到根目录下,没有单独挂载的分区都属于根);
    swap	内存小就一般分2倍,内存大(现在的服务器16G以上内存很常见)就最大4G或8G
    /var    50-100G (主要存放日志,邮件,ftp,httpd等家目录,kvm的磁盘文件等)
    /vm	50-100G (主要存放vmware虚拟机)
    /data	50G-100G左右 (主要存放你的个人数据)
    还需要留一点空间用于以后分区用。
    如果你的系统出了严重问题,能排错就排错,不能或很麻烦在重装时只格式化根分区就可以了,重装完后,改写/etc/fstab
    根分区分得太小,满了怎么办?如果是lvm可以在线扩容,没用lvm只能去把根分区下的一些数据移到其它分区 (除非用新一代文件系统如btrfs这种;xfs文件可以使用xfs_growfs来扩容)
    b,软件包的选择:你需要啥就安装啥(如果你非常在意系统瘦身,那么选择最小化安装,再安装应用时少啥就装啥)
    c,bios(UEFI)和grub加密码增强安全性和磁盘加密
    
    
    
    swap有两种做法(swap文件和swap分区,swap分区会更有效,建议使用swap分区)
    swap文件做法如下
    # dd if=/dev/zero of=/test/swapfile bs=1M count=1000
    # mkswap /test/swapfile
    # swapon /test/swapfile
    # swapoff /test/swapfile   --不用了就swapoff(swapon的反向操作)
    
    swap加分区做法:
    先使用fdisk或parted分一个区,如/dev/sdaX
    # mkswap /dev/sdaX
    # swapon /dev/sdaX
    最后写到fstab里
    
    
    2,
    a,关闭不用的服务 (service xxx stop;systemctl stop xxx 或 chkconfig xxx off;systemctl disable xxxx或 ntsysv --level 2345)
    有几个服务记录不要关闭了:haldaemon,messagebus这两个服务关闭任意一个,就造成开机鼠标键盘无法用(rhel6下的经验,rhel7未测试,rhel7没有haldaemon服务了)
    常见的不关闭服务:network,sshd,rsyslog,libvirtd,ntpd等
    b,没有服务脚本的可以写服务脚本,或者有些服务脚本写得不好,你可以修改代码
    c,服务脚本权限降权(chmod 700 -R /etc/init.d/*),或者结合sudo进行相应授权
    d,没有服务脚本的进程,可以使用kill来关闭(注意kill -9和kill -15的区别)
    
    
    3,静态IP,网关,dns指向
    # /etc/init.d/NetworkManager stop
    # chkconfig NetworkManager off
    然后配置静态ip
    # vim /etc/sysconfig/network-scripts/ifcfg-xxx
    DEVICE=xxx
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=static
    IPADDR=x.x.x.x
    NETMASK=x.x.x.x
    GATEWAY=x.x.x.x
    DNS1=x.x.x.x
    DNS2=x.x.x.x
    
    rhel7里的nmcli命令非常强大,可以几乎控制网络相关的一切修改
    
    4,主机名配置和绑定
    问题:域名和主机名有什么区别?
    域名:公网名字,花钱买,唯一
    主机名:内网名字
    
    如果公司现在有100甚至更多台机器,都要互相绑定主机名
    方法一:shell脚本,先在其中一台绑定所有机器的IP与名字到/etc/hosts文件,再用shell脚本循环拷到其它所有机器(ssh等效性或expect)
    方法二:在安装所有机器时,使用kickstart或cobbler,让其在安装的时候就通过postscripts实现安装完后就统一截IP,配置主机名,绑定主机名);此方法不适合主机名有改变的情况 
    方法三:内网DNS(/etc/nsswitch.conf这个文件里面配置了,称查找/etc/hosts,再查找DNS)
    方法四:使用自动化运维工具,如puppet,ansible,saltslack......
    
    
    5,yum配置
    首先要注意yum只能安装rpm包,不能安装源码包。如果觉得安装源码包麻烦,甚至可以自己把源码做成rpm包(要求水平较高)
    
    一般不可能所有服务器都用公网的yum源。建议把本地iso和第三方下载的rpm包都在其中一台服务器做成yum仓库,其他服务器就直接使用这台的yum源就可以了
    
    yum的路径怎么写?
    答案:要写repodata的上一级目录的路径
    
    如何下载
    a),先配置远程公网yum源路径
    如下
    [puppet]
    name=puppet
    baseurl=http://yum.puppetlabs.com/el/6.5/products/x86_64/
    enabled=1
    gpgcheck=0
    
    b)使用reposync命令
    reposync --repoid=puppet
    
    都会下载到本地当前目录
    
    c)因为下载后,没有repodata目录,所以需要手动生成
    yum install createrepo -y
    createrepo  下载的目录路径/
    
    d)通过服务如httpd做成其它服务器能使用的yum源
    
    
    --------------------------------------------------------------------
    扩展使用yum要注意的一个小例子
    使用yum remove  删除软件包时,一般会删除一些依赖包,然后 yum install重新安装,不一定会把这些依赖包自动装回来。所以建议都把这些依赖包手动再安装回来
    
    
    # rpm -qa |grep ^mysql		--我这里查找到已经安装了这么多mysql的软件包
    mysql-devel-5.1.71-1.el6.x86_64
    mysql-test-5.1.71-1.el6.x86_64
    mysql-server-5.1.71-1.el6.x86_64
    mysql-connector-java-5.1.17-6.el6.noarch
    mysql-5.1.71-1.el6.x86_64
    mysql-libs-5.1.71-1.el6.x86_64
    mysql-bench-5.1.71-1.el6.x86_64
    mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
    
    下面我需要重装这些软件包,在使用yum remove mysql*时删除的包包括依赖性特别的多,这样很可能会因为删除了其它服务需要使用的rpm包,而造成其它服务或系统其它的功能缺失
    
    
    解决方法:
    方法一:
    rpm -e mysql-5.1.71-1.el6.x86_64 --nodeps
    rpm -e mysql-devel-5.1.71-1.el6.x86_64 --nodeps
    rpm -e mysql-server-5.1.71-1.el6.x86_64 --nodeps
    rpm -e mysql-test-5.1.71-1.el6.x86_64 --nodeps
    rpm -e mysql-connector-java-5.1.17-6.el6.noarch --nodeps
    rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
    rpm -e mysql-bench-5.1.71-1.el6.x86_64 --nodeps
    rpm -e mysql-connector-odbc-5.1.5r1144-7.el6.x86_64 --nodeps
    再重装回来
    yum install mysql* 
    
    
    方法二:
    rpm -qa |grep ^mysql |xargs rpm -e --nodeps
    再重装回来
    yum install mysql*
    
    
    方法三:
    直接使用yum remove mysql*  去删除包
    再用下面的命令重装回来
    # cat /var/log/yum.log |grep "Jun 04" |grep Erased |awk '{print $NF}' |xargs  yum install -y
    
    
    --上面三个方法最好的应该是方法二,操作快速,而且不会像方法三那样去删除了其它的依赖性包(因为你删除其它的依赖性包,就算是再安装回来,那么原来的配置文件被刷新了)
    
    6,用户有关的:
    a,删除不需要使用的用户(如adm,lp,sync,shutdown等)加强安全(可选)
    b,写脚本定期检查无密码账号或uid为0的账号	awk -F: '$3==0 {print $1}' /etc/passwd
    c,创建要用的普通用户(如果一个用户只用于跑服务daemon,可以指定家目录为/dev/null,uid小于500,登录环境为/sbin/nologin等,如useradd -r -d /dev/null  -s /sbin/nologin xxx) 看需求修改/etc/login.defs文件。或者在登录或登出时有些特殊需要,可以修改/etc/skel/.bash_profile和/etc/skel/.bash_logout
    d,做完后,保证口令文件的安全(如,不需要修改就chattr +i /etc/passwd,chattr +i /etc/shadow,chattr +i /etc/group,chattr +i /etc/gshadow)
    e,对相应的普通用户做sudo授权
    f,设置用户自动退出登录时间限制
       如:在/etc/profile里加入 TMOUT=300 表示5分钟不操作,会自动退出
    
    7,按需求定制pam,iptables(firewalld)或selinux的配置
    
    
    8,内核优化:内核编译优化和内核参数优化(这里讨论内核编译优化)
    如果有必要,并且技术水平成熟的情况下,可以重新编译升级内核
    问题:OS自带的内核非常稳定,什么情况下需要自己编译内核?
    答案:内核如果不支持你所需要的一个功能,可以重编内核来加上这个功能。但是一般来说,没有内核不支持的功能,但redhat自带的内核不一定给你加上了这个功能。
    比如,要在linux下支持ntfs格式挂载,方法有:
    一,重编内核,加上ntfs挂载功能(因为redhat默认没有加到内核里,但内核是支持的)
    二,用第三方软件,把功能做成模块加到内核上,让其支持
    还有一个情况需要自己编译内核,就是内核编译优化,简单来说就是把内核里自己用不到的功能都去掉,只留下自己用得到的功能。
    
    注意:生产环境不建议你真的去编译内核,因为你很难编译出一个稳定且正符合你所用的内核。
    
    重编译内核或新内核的步骤:
    a)下载新内核源码,解压;OS自带内核源码在(/usr/src/kernels/`uname -r`/,如果此内核源码目录不存在,可以通过yum install kernel-devel -y安装)
    b)cd 内核源码目录/
    c)make menuconfig
      按你需求来选择功能 
    	* 代表编进内核
    	M 代表编译成模块  需要modprobe  xxx装载才能使用
            空 代表不需要这个功能
    d) 选择好功能后,保存,会把你所有的选择保存到一个.config文件里
    e) make
    f) make modules_install    --把编译后的模块复制到/lib/modules/内核新版本/  以后就可以用modprobe insmod来装载使用
    g) make install
    h) reboot 重启你的系统,在grub菜单选择新的内核登录你的OS
    
    
    
    9,文件系统
    ext2,ext3,ext4,fat32,ntfs,xfs,reiserfs,zfs,btrfs,jfs,nfs,gfs2,ocfs......
    下面以rhel6默认ext4为例简单讨论ext4的优化
    a,单个文件可以chattr +A xxx 让这个文件的atime不变化(因为atime是文件的访问时间,基本没什么实用价值,所以让其不变化,就是一种优化)
    b,只优化单个文件肯定不行,所以需要优化整个文件系统让所有文件atime都不变化
     在rhel5里cat一次,atime就会变一次
     在rhel6里只有当atime时间早于或等于mtime或ctime之一时,cat这个文件,atime才会变(因为rhel6已经做了相对的优化,主要实现的方法是在mount时加了relatime)
     但我们想优化更彻底,那么让atime在任何情况下都不会变,做法为:
    # mount -o defaults,noatime /dev/sda7 /test/	--这样做后,/dev/sda7这个分区里的所有文件都不变改变atime了
    
    
    mount -o defaults,norelatime,strictatime /dev/sda7 /test/  --这样做是做成和rhel5一致,每cat一次文件,文件的atime都会变
    
    
    所有分区都要这样做,就在/etc/fstab里把所有分区的defaults参数后加,noatime就可以了
    
    但写到fstab里需要重启才能生效,因为根分区不能umount再mount,所以要使用下面remount的参数在线重挂载
    # mount -o remount,defaults,noatime /
    
    
    c,Ext4 提供三种数据日志记录方式: data=writeback 、 data=ordered  (默认) data=journal。
    
     data=writeback   速度最快,但不记录文件系统日志,只记录基本元数据,数据安全性低 
     data=journal     速度最慢。但记录完整文件系统日志,数据安全性高	
     data=ordered	  居中
    如果要修改,在mount时用-o data=writeback来挂载就可以.或者在/etc/fstab里defaults,data=writeback就可以了
    
    小实验:
    用一个实验分区,分三种日志记录方式去挂载,然后使用dd命令写文件来测试比较速度
    mount -o defaults,data=writeback /dev/sda7 /test/
    cd /test
    dd if=/dev/zero of=test
    --最快
    
    mount -o defaults,data=journal /dev/sda7  /test
    cd /test
    dd if=/dev/zero of=test
    --最慢
    
    mount -o defaults,data=ordered /dev/sda7 /test
    cd /test
    dd if=/dev/zero of=test
    --居中
    
    
    综合上面所述,你可以在/etc/fstab文件里把defaults改为defaults,noatime,data=writeback来提高文件系统速度
    
    
    小实验:
    使用下面命令模拟一个分区丢失superblock,相当于是文件系统出问题
    # dd if=/dev/zero of=/dev/sda9 bs=1 count=1024 seek=1024
    
    文件系统出问题,挂载就会报下面的错误
    # mount  /dev/sda9 /mnt/
    mount: you must specify the filesystem type
    
    
    排错,不能直接重新格式化,那样的话数据全丢了.所以可以用下面的命令修复
    # fsck /dev/sda9
    
    小实验:
    把你系统时间改到将来,然后把开机要挂载的分区重新挂载一下(比如boot分区或根分区这种),然后reboot重启系统
    
    会在启动系统时启不来,会报一个"分区挂载时间在将来的错误",解决方法也是fsck接要修复的分区
    
    =============================================================================================================
    
    
    优化
    横向:加新的设备,架构扩展
    纵向:替换新的更好的设备,使设备负载能力更高
    
    下面我们讨论的是不加设备也不换设备的基础上进行系统微调
    
    
    前面讨论的是系统安装到业务上线之前的一些基本优化,如果业务已经在线上,你要优化,第一步如何做?
    
    
    	比如一个web服务器慢,可以会有哪些问题?
    思路:
    	cpu->mem->io->file system->network->os参数->服务本身配置-》开发代码
    
    首先要进行服务器数据采集,和性能监测分析
    方法有
    一:使用cacti,nagios,zabbix等监控工具
    二:使用linux自带的一些监控指令:如vmstat,iostat,mpstat,sar等等
    
    		硬件问题
    
    		CPU子系统   	
    		内存子系统 
    		IO子系统      
    		网络子系统	
    
    		文件系统
    		运行的服务等
    
    一,
    cpu(Central Processing Unit)子系统 
    
    CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,
    比如拷贝一个文件通常占用较少CPU,只是在完成拷贝以后给一个中断让CPU知道拷贝已经完成
    
    科学计算通常占用较多的CPU,大部分计算工作都需要在CPU上完成,内存、硬盘等子系统只做暂时的数据存储工作
    要想监测和理解CPU的性能需要知道一些的操作系统的基本知识,比如:中断,进程调度,进程上下文切换,可运行队列等
    
    
    cpu单核在同一个时间点只能干一件事,但单核CPU一样可以跑多任务操作系统,其实就是分CPU资源(时间片)
    
    
    CPU很无辜,是个任劳任怨的打工仔,每时每刻都有工作在做(进程、线程)并且自己有一张工作清单(可运行队列),
    由老板(进程调度)来决定他该干什么,他需要和老板沟通以便得到老板的想法并及时调整自己的工作  (上下文切换),
    部分工作做完以后还需要及时向老板汇报(中断),
    所以打工仔(CPU)除了做自己该做的工作以外,还有大量时间和精力花在沟通和汇报上。
    
    
    	中断	设备通知内核,完成了一次数据处理过程。也可以理解为:cpu停止下来去执行别的指令。例如:完成一次IO。或者完成一次网络数据包的发送。
    	内核处理过程 --- 控制优先级,进行任务调度。
    	用户进程
    	上下文切换 --- 把正在占用cpu的进程放回队列中(每次内核的上下文切换,资源被用于关闭在CPU寄存器中的线程和放置在队列中)
    	运行队列
    
    
    
    那么监测CPU性能的底线是什么呢?通常我们期望我们的系统能到达以下目标:
    
    
      CPU利用率,如果CPU有100%利用率,那么应该到达这样一个平衡:65%-70% User Time,30%-35% System Time,0%-5% Idle Time;
    
      上下文切换,上下文切换应该和 CPU 利用率联系起来看,如果能保持上面的 CPU 利用率平衡,大量的上下文切换是可以接受的;
    
    
    云(虚拟化)  提高资源利用率
    
    
    
    
    查看cpu信息
    # cat /proc/cpuinfo   --能看到指令集,CPU核数,频率,缓存等相关信息
    # lscpu
    
    
    要采集CPU当前正在运行的信息数据,要用到下面的命令或者监控软件(nagios,zabbix等)
    top
    uptime		
    vmstat
    mpstat --需要yum install sysstat
    sar  --需要yum install sysstat
    
    
    
    # vmstat 2  	每2秒钟采集一下数据
    # vmstat 2 3 	每2秒钟采集一次,一共采集3次
    
    # vmstat 2
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     1  0      0  78112  63432 1519100    0    0   233    18 1906 1190 26 13 59  1  0
     1  0      0  78112  63432 1519100    0    0     0     0 4180 1378 33 17 50  0  0
     1  0      0  78112  63440 1519092    0    0     0    30 4284 1706 33 17 50  0  0
    
    
    r	可运行队列。单核cpu,不应该超过3(经验得到的数据,只是表明大于这个值表明运行队列有点长)
    b	当前被阻塞的进程,一般这些进程都是在等待某些外部资源而被阻塞。>3需要注意,而且一直出现或者经常出现,就更值得注意
    in	中断数。一般代表大量设备操作成功通知内核。
    cs	上下文切换。一般代表任务需要紧急被cpu处理。数字高,只能说明内核在充分发挥它的任务调度作用。不能简单通过该数字判断cpu就出现瓶颈。
    us	用户进程所占用的cpu时间的百分比
    sy	内核在进行任务调度所占用的cpu时间的百分比
    id	cpu空闲所占用的时间百分比.仅仅0不能简单判断cpu出现瓶颈,只能说它被充分被留用。
    wa	等待IO所消耗时间百分比
    st	被硬件虚拟化的虚拟机所消耗掉的时间百分比
    
    
    
    
    
    
    mpstat 和 vmstat 类似,不同的是 mpstat 可以输出多个处理器的数据
    
    
    # mpstat  -P ALL 1	---P ALL表示查看所有CPU核, 1表示每一秒显示一次
    10:46:35 AM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
    10:46:36 AM  all   26.13    0.00    6.53    0.00    3.52    9.05    0.00   54.77  19478.22
    10:46:36 AM    0   25.74    0.00    6.93    0.00    2.97    7.92    0.00   56.44   9740.59
    10:46:36 AM    1   26.73    0.00    6.93    0.00    3.96   10.89    0.00   51.49   9739.60
    
    
    
    # sar -u  查看cpu相关的历史数据	--这是历史数据,是每十分钟会去采集一次系统相关的数据
    # sar -u 2 3	--两秒一次,显示三次(不是历史数据,是当前动态数据)
    
    
    
    sysstat  --> 提供 sar 命令		(system activity reporter)
    
    sar的特点:可以对过去时间的系统状态进行分析,但不能对某个进程进行深入分析,只能对系统的整体情况进行分析。
    
    yum install sysstat   -y		
    
    # systemctl start sysstat 
    # systemctl enable sysstat
    
    
    
    安装systat包后,就会自动在 /var/log/sa/saxx 产生数据   xx代表日期
    可以使用sar -f /var/log/sa/saxx  去访问  加参数就可以访问不同类型的性能数据
    
    		指定查询之前的日期与固定时间点的方法
    
    
    	 sar -u -f /var/log/sa/sa18	--查看这个月已经过的18号的cpu历史数据
    
    	 sar -u -f /var/log/sa/sa18  -s 09:00:00 -e 10:00:00	--指定只看18号9点到10点的cpu历史数据
    
    
    
    保存性能数据
    sar支持保存成两种格式的文件,一种是文本文件,一种是二进制文件 (只有通过sar自己的命令 -f 参数 才能看)
    
    保存为文本文件,可以直接cat命令查看
    sar -p 1 5 > /tmp/test/sar1.txt
    
    保存为二进制文件
    sar -p  1 5  -o /tmp/test/sar2.txt 1>/dev/null    	--会显示到屏幕,可以用1>/dev/null
    file /tmp/test/sar2.txt      --是data类型文件
    sar -f /tmp/test/sar2.txt     --使用-f参数读取  
    
    
    
    可以通过做实验,再来用vmstat,mpstat,sar来看cpu的变化
    
    如:执行下面的sh /tmp/2.sh脚本,产生一百个运算的进程
    [root@li ~]# cat /tmp/1.sh 
    #!/bin/bash
    
    a=1
    sum=0
    while true
    do
    	sum=$[$sum+$a]
    	let a++	
    done
    [root@li ~]# cat /tmp/2.sh 
    #!/bin/bash
    
    
    for i in `seq 100`
    do
    	sh /tmp/1.sh &
    done
    
    =================================================================
    
    
    总结:现在的架构cpu极少会成为瓶颈.就算是真的cpu成为了瓶颈,对cpu能做的优化太少了(要么就换硬件,要么通过扩展架构来分担压力,杀掉无用并且占用资源的进程)
    
    
    系统管理员能改的也就只有进程优先级了
    
    
    nice  优先级    能调的范围是 -20到19 	-20表示优先级最高,19最低
    
    用户运行一个程序默认给的优先级为0
    
    
    renice    对一个已经运行的进程进行nice值的调整
    	renice 19  pid
    
    [root@li ~]# vim /tmp/test.sh 
    
    a=1
    
    while [ $a -lt 1000000 ]
    do
            let a++
    done
    
    
    nice 优先级高的能够优先分配资源,跑得快,花费的时间少,负载越高,效果越明显
    
    实验
    在一个负载高的情况下做效果更好,比如一个大文件的cp
    
    第一个终端:
    [root@li ~]# time sh /tmp/test.sh 
    
    real    0m39.363s
    user    0m26.338s
    sys     0m0.900s
    
    第二个终端:
    [root@li ~]# time nice --19 sh /tmp/test.sh	--19 第一个是参数的横杠,第二个是负号
    
    real    0m26.881s
    user    0m26.008s
    sys     0m0.871s
    
    --对比上面的时间,可以看到 高优先级的花费的时间少
    
    
    可以把上面的实验再做一次,马上用top查出-19的pid值,并使用renice修改
    
    renice 19  9683
    
    
    [root@li ~]# time sh /tmp/test.sh 
    
    real    0m34.665s
    user    0m26.277s
    sys     0m0.896s
    
    [root@li ~]# time nice --19 sh /tmp/test.sh
    real    0m37.231s
    user    0m26.094s
    sys     0m0.905s
    
    
    --从上面的时间可以看出,-19优先级的半路被改为19后,所花费的时间反而多了
    
    
    注意:只有管理员才能把优先级往高调,普通用户只能调自己的,并且只能往低调,调低后还不能再调高
    
    
    ====================================================================
    
    
    展开全文
  • 云计算之linux系统优化(上)

    千次阅读 2019-01-05 10:18:48
    众所周知,linux操作系统的调优越来越受到重视...按照我的思路,linux系统优化分为两个方向:linux安全和性能调优 方向一:linux安全 1.关闭selinux sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/sel...

    众所周知,linux操作系统的调优越来越受到重视,网上各种资料也是数不胜数,思路不一,在此,我也将我这几年来使用linux的经验整理一下,也希望能够帮助到大家。

    按照我的思路,linux系统优化分为两个方向:linux安全和性能调优

    方向一:linux安全

    1.关闭selinux

    sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config

    重启生效,selinux非常强大,但是也会给我们带来各种问题,所以,一般情况下,会把它禁用掉

    2.更改ssh服务远程登录的配置

    Port 2222  #ssh连接默认端口22,一般会改成其他端口

    PermitRootLogin no # root用户是否禁止远程登录

    PermitEmptyPasswords no #禁止空密码登录

    UseDNS no    #不使用DNS

    GSSAPIAuthentication no #ssh连接更快

    Systemctl restart sshd # 重启生效

    3.将普通帐号加入到sudo管理

    不同用户有不同的权限,这个要根据公司需求,开发运维权限各不相同,此处只给一些例子

    vim /etc/sudoers

     1. root  ALL=(ALL)   ALL

     2. steve ALL=(ALL)   NOPASSWD:ALL # 拥有全部的权限但不需要密码

     3. %dev ALL=(ALL)  指定权限  # 给指定的组指定的权限

    su - steve

    sudo useradd abc

    tail -1 /etc/passwd

    sudo ss -anptu | grep ssh

    4.锁定关键文件系统

    chattr +i /etc/passwd

    chattr +i /etc/inittab

    chattr +i /etc/group

    chattr +i /etc/shadow

    chattr +i /etc/gshadow

    使用chattr命令后,为了安全我们需要将其改名

    /bin/mv /usr/bin/chattr /usr/bin/xxx (改名为其他)

    还可以将其他危险的命令进行改名

    5.去除系统及内核版本登录的提示信息

    cat /dev/null >/etc/issue

    6.用户登录日志备份处理:

    last   # 查看用户登录信息

    lastlog # 不管用户登录没登录,都可以看

    lastb # 用户登录失败的日志

    用户登录日志及时备份处理,防止内容被篡改

    安全方面的优化不止这几项,大家还可以再做补充

    展开全文
  • 《常见Linux系统优化方法,关闭不必要的服务》  2013-07.08 `  系统优化的方法,除了关闭防火墙,关闭 SElinux,去掉sshd配置里面的IP鉴权,加上 fstab 里面的 default,noatime 参数外, 还可以参考...

      《常见Linux系统优化方法,关闭不必要的服务


      2013-07.08        `


         系统优化的方法,除了关闭防火墙,关闭 SElinux,去掉sshd配置里面的IP鉴权,加上 fstab 里面的 default,noatime 参数外, 还可以参考下面说明关闭一些不必要的系统服务


       使用 chkconfig --list | grep :on 可以查看到 (在RH系Linux 发行版里)

      

    acpid
    ACPI
    (全称 Advanced Configuration and Power Interface)服务是电源管理接口。建议所有的笔记本用户开启它。一些服务器可能不需要 acpi。支持的通用操作有:“电源开关“,”电池监视“,”笔记本 Lid 开关“,“笔记本显示屏亮度“,“休眠”, “挂机”,等等。

    anacron, atd, crond
    这几个调度程序有很小的差别。 建议开启 cron,如果你的电脑将长时间运行,那就更应该开启它。对于服务器,应该更深入了解以确定应该开启哪个调度程序。大多数情况下,笔记本/台式机应该关闭 atd 和 anacron。注意:一些任务的执行需要 anacron,比如:清理 /tmp 或 /var。

    alsasound
    Alsa
    声卡驱动守护程序。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写 驱动程序。 Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接 口,甚至比OSS优秀。

    apmd
    一些笔记本和旧的硬件使用 apmd。如果你的电脑支持 acpi,就应该关闭 apmd。如果支持 acpi,那么 apmd 的工作将会由 acpi 来完成。

    arptables_jf
    为arptables网络的用户控制过滤的守护进程。

    arpwatch
    记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库 。

    atalk
    AppleTalk
    网络守护进程。注意不要在后台运行该程序,该程序的数据结构必须在运行其他进程前先花一定时间初始化。

    auditd
    审核子系统可以被系统管理员用来监测系统调用和那些符合 CAPP 或其它审核要求的文件系统访问。它的主要内容包括:
    ·
    默认情况下,审核在内核中被禁用。但是,当安装了 auditd 软件后,运行这个软件将会启动审核守护进程(auditd)。
    ·
    当 auditd 运行的时候,审核信息会被发送到一个用户配置日志文件中(默认的文件是 /var/log/audit/audit.log)。如果 auditd 没有运行,审核信息会被发送到 syslog。这是通过默认的设置来把信息放入 /var/log/messages。如果审核子系统没有被启用,没有审核信息会被产生。
    ·
    这些审核信息包括了 SELinux AVC 信息。以前,AVC 信息会被发送到 syslog,但现在会被审核守护进程发送到审核日志文件中。
    ·
    要完全在内核中禁用审核,在启动的时候使用 audit=0 参数。您还需要使用 chkconfig auditd off 2345 来关闭 auditd。您可以在运行时使用 auditctl -e 0 来在内核中关闭审核。
    审核守护进程(auditd)从内核的 audit netlink 接口获取审核事件数据。auditd 的配置会不尽相同,如输出文件配置和日志文件磁盘使用参数可以在 /etc/auditd.conf 文件中配置。请注意,如果您设置您的系统来进行 CAPP 风格的审核,您必须设置一个专用的磁盘分区来只供 audit 守护进程使用。这个分区应该挂载在 /var/log/audit。
    系统管理员还可以使用 auditctl 工具程序来修改 auditd 守护进程运行时的审核参数、syscall 规则和文件系统的查看。它包括了一个 CAPP 配置样本,您可以把它拷贝到 /etc/audit.rules 来使它起作用。
    审核日志数据可以通过 ausearch 工具程序来查看和搜索。

    autofs
    该服务自动挂载可移动存储器(比如 USB 硬盘)。如果你使用移动介质(比如移动硬盘,U 盘),建议启用这个服务。

    avahi-daemon, avahi-dnsconfd
    Avahi
    zeroconf 协议的实现。它可以在没有 DNS 服务的局域网里发现基于 zeroconf 协议的设备和服务。它跟 mDNS 一样。除非你有兼容的设备或使用 zeroconf 协议的服务,否则应该关闭它。

    bootparamd
    引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息。

    bluetooth, hcid, hidd, sdpd, dund, pand
    蓝牙(Bluetooth)是给无线便携设备使用的(非 wifi, 802.11)。很多笔记本提供蓝牙支持。有蓝牙鼠标,蓝牙耳机和支持蓝牙的手机。很多人都没有蓝牙设备或蓝牙相关的服务,所以应该关闭它。其他蓝牙相关 的服务有:hcid 管理所有可见的蓝牙设备,hidd 对输入设备(键盘,鼠标)提供支持, dund 支持通过蓝牙拨号连接网络,pand 允许你通过蓝牙连接以太网。

    capi
    仅仅对使用 ISDN 设备的用户有用。大多数用户应该关闭它。

    chargen
    使用tcp协议的chargen server,chargen(Character Generator Protocol)是一种网络服务,主要功能是提供类似远程打字的功能。

    chargen-udp
    使用UDP协议的chargen server。

    chargen-dgram
    chargen-stream

    conman

    cpuspeed
    该服务可以在运行时动态调节 CPU 的频率来节约能源(省电)。许多笔记本的 CPU 支持该特性,现在,越来越多的台式机也支持这个特性了。如果你的 CPU 是:Petium-M,Centrino,AMD PowerNow, Transmetta,Intel SpeedStep,Athlon-64,Athlon-X2,Intel Core 2 中的一款,就应该开启它。如果你想让你的 CPU 以固定频率运行的话就关闭它。

    cupsd, cups-config-daemon, cups-lpd
    打印机相关。

    cvs
    cvs
    是一个版本控制系统。

    daytime
    使用TCP 协议的Daytime守护进程,该协议为客户机实现从远程服务器获取日期 和时间的功能。预设端口:13。
    daytime-udp
    使用UDP 协议的Daytime守护进程。

    daytime-dgram
    daytime-stream

    dc_client, dc_server
    磁盘缓存(Distcache)用于分布式的会话缓存。主要用在 SSL/TLS 服务器。它可以被 Apache 使用。大多数的台式机应该关闭它。

    dhcdbd
    这是一个让 DBUS 系统控制 DHCP 的接口。可以保留默认的关闭状态。

    diskdump, netdump
    磁盘转储(Diskdump)用来帮助调试内核崩溃。内核崩溃后它将保存一个 “dump“ 文件以供分析之用。网络转储(Netdump)的功能跟 Diskdump 差不多,只不过它可以通过网络来存储。除非你在诊断内核相关的问题,它们应该被关闭。

    discard-dgram
    discard-stream

    dnsmasq
    DNSmasq
    是一个轻巧的,容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的DNS服务。

    echo
    服务器回显客户数据服务守护进程。
    echo-udp
    使用UDP协议的服务器回显客户数据服务守护进程。
    echo-dgram
    echo-stream

    eklogin
    接受rlogin会话鉴证和用kerberos5加密的一种服务的守护进程。

    ekrb5-telnet

    firstboot
    该服务是 Fedora 安装过程特有的。它执行在安装之后的第一次启动时仅仅需要执行一次的特定任务。它可以被关闭。

    functions

    gated
    网关路由守护进程。它支持各种路由协议,包括RIP版本1和2、DCN HELLO协议、 OSPF版本2以及EGP版本2到4。

    gpm
    终端鼠标指针支持(无图形界面)。如果你不使用文本终端(CTRL-ALT-F1, F2..),那就关闭它。不过,我在运行级别 3 开启它,在运行级别 5 关闭它。

    gssftp
    使用kerberos 5认证的ftp守护进程。

    haldaemon
    halt

    hplip, hpiod, hpssd
    HPLIP
    服务在 Linux 系统上实现 HP 打印机支持,包括 Inkjet,DeskJet,OfficeJet,Photosmart,Business InkJet 和一部分 LaserJet 打印机。这是 HP 赞助的惠普 Linux 打印项目(HP Linux Printing Project)的产物。如果你有相兼容的打印机,那就启用它。

    hsqldb
    一个java的关系型数据库守护进程,得名于Hypersonic SQL,但这个项目已经没有再继续了。

    httpd
    Web
    服务器Apache守护进程,可用来提供HTML文件以 及CGI动态内容服务。

    innd
    Usenet
    新闻服务器守护进程。

    iiim
    中文输入法服务器守护进程。

    inetd
    因特网操作守护程序。监控网络对各种它管理的服务的需求,并在必要的时候启动相应的服务程序。在Redhat 和Mandrake linux中被xinetd代替。Debian, Slackware, SuSE仍然使用。

    ip6tables
    如果你不知道你是否在使用 IPv6,大部分情况下说明你没有使用。该服务是用于 IPv6 的软件防火墙。大多数用户都应该关闭它。

    ipmi
    iptables

    它是 Linux 标准的防火墙(软件防火墙)。如果你直接连接到互联网(如,cable,DSL,T1),建议开启它。如果你使用硬件防火墙(比如:D-Link,Netgear,Linksys 等等),可以关闭它。强烈建议开启它。

    irda, irattach
    IrDA
    提供红外线设备(笔记本,PDA’s,手机,计算器等等)间的通讯支持。大多数用户应该关闭它。

    irqbalance
    在多处理器系统中,启用该服务可以提高系统性能。大多数人不使用多处理器系统,所以关闭它。但是我不知道它作用于多核 CPU’s 或 超线程 CPU’s 系统的效果。在单 CPU 系统中关闭它应该不会出现问题。

    isdn
    这是一种互联网的接入方式。除非你使用 ISDN 猫来上网,否则你应该关闭它。

    keytable
    该进程的功能是转载在/etc/sysconfig/keyboards里定义的键盘映射表,该表可以通过kbdconfig工具进行选择。您应该使该程序处于激活状态。

    kdump

    klogin
    远程登陆守护进程。

    krb5-telnet
    使用kerberos 5认证的telnet守护进程。

    kshell
    kshell
    守护进程。

    killall
    krb524
    kudzu

    该服务进行硬件探测,并进行配置。如果更换硬件或需要探测硬件更动,开启它。但是绝大部分的台式机和服务器都可以关闭它,仅仅在需要时启动。

    ldap
    ldap
    Lightweight Directory Access Protocol)目录访问协议服务器守护进程。

    libvirtd

    lm_sensors
    该服务可以探测主板感应器件的值或者特定硬件的状态(一般用于笔记本电脑)。你可以通过它来查看电脑的实时状态,了解电脑的健康状况。它在 GKrellM 用户中比较流行。如果没有特殊理由,建议关闭它。

    lvm2-monitor
    mcstrans

    SELinux
    转换服务,如果你使用 SELinux 就开启它,但你也可以关闭。

    mdmonitor
    该服务用来监测 Software RAID 或 LVM 的信息。它不是一个关键性的服务,可以关闭它。

    mdmpd
    该服务用来监测 Multi-Path 设备(该类型的存储设备能被一种以上的控制器或方法访问)。它应该被关闭。

    messagebus
    这是 Linux 的 IPC(Interprocess Communication,进程间通讯)服务。确切地说,它与 DBUS 交互,是重要的系统服务。强烈建议开启它。

    multipathd, microcode_ctl
    可编码以及发送新的微代码到内核以更新Intel IA32系列处理器守护进程。

    mysqld
    一个快速高效可靠的轻型SQL数据库引擎守护进程。

    named
    DNS
    (BIND)服务器守护进程。

    netconsole

    netfs
    该服务用于在系统启动时自动挂载网络中的共享文件空间,比如:NFS,Samba 等等。如果你连接到局域网中的其它服务器并进行文件共享,就开启它。大多数台式机和笔记本用户应该关闭它。

    netplugd, ifplugd
    Netplugd
    用于监测网络接口并在接口状态改变时执行指定命令。建议保留它的默认关闭状态。

    network
    激活/关闭启动时的各个网络接口守护进程。

    nfs, nfslock
    这是用于 Unix/Linux/BSD 系列操作系统的标准文件共享方式。除非你需要以这种方式共享数据,否则关闭它。

    nscd
    服务名缓存进程,它为NIS和LDAP等服务提供更快的验证,如果你运行这些服务,那你应该开启它。

    ntpd
    该服务通过互联网自动更新系统时间。如果你能永久保持互联网连接,建议开启它,但不是必须的。

    pcscd
    该服务提供智能卡(和嵌入在信用卡,识别卡里的小芯片一样大小)和智能卡读卡器支持。如果你没有读卡器设备,就关闭它。

    pcmcia
    主要用于支持笔记本电脑接口守护进程。

    portmap
    该服务是 NFS(文件共享)和 NIS(验证)的补充。除非你使用 NFS 或 NIS 服务,否则关闭它。

    postgresql
    PostgreSQL
    关系数据库引擎。

    pppoe
    ADSL
    连接守护进程。

    proftpd
    proftpd
    是Unix下的一个配置灵活的ftp服务器的守护程序。

    psacct
    该守护进程包括几个工具用来监控进程活动的工具,包括ac,lastcomm, accton和sa。

    random
    保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的。

    rawdevices
    在使用集群文件系统时用于加载raw设备的守护进程。

    rdisc
    readahead_early, readahead_later
    该服务通过预先加载特定的应用程序到内存中以提供性能。如果你想程序启动更快,就开启它。

    restorecond
    用于给 SELinux 监测和重新加载正确的文件上下文(file contexts)。它不是必须的,但如果你使用 SELinux 的话强烈建议开启它。

    rhnsd
    Red Hat
    网络服务守护进程。通知官方的安全信息以及为系统打补丁。

    routed
    该守护程序支持RIP协议的自动IP路由表维护。RIP主要 使用在小型网络上,大一点的网络就需要复杂一点的协议。

    rpcgssd, rpcidmapd, rpcsvcgssd
    用于 NFS v4。除非你需要或使用 NFS v4,否则关闭它。

    rsync
    remote sync
    远程数据备份守护进程。

    rsh
    远程主机上启动一个shell,并执行用户命令。

    rwhod
    允许远程用户获得运行rwho守护程序的机器上所有已登录用户的列表。

    rstatd
    一个为LAN上的其它机器收集和提供系统信息的守候进程。

    ruserd
    远程用户定位服务,这是一个基于RPC的服务,它提供关于当前记录到LAN上一个机器日志中的用户信息。

    rwalld
    激活rpc.rwall服务进程,这是一项基于RPC的服务,允许用户给每个注册到LAN机器上的其他终端写消息。

    rwhod

    激活rwhod服务进程,它支持LAN的rwho和ruptime服务。

    saslauthd
    使用SASL的认证守护进程。

    sendmail
    除非你管理一个邮件服务器或你想 在局域网内传递或支持一个共享的 IMAP 或 POP3 服务。大多数人不需要一个邮件传输代理。如果你通过网页(hotmail/yahoo/gmail)或使用邮件收发程序(比如:Thunderbird, Kmail,Evolution 等等)收发邮件。你应该关闭它。

    setroubleshoot
    查看selinux日志的程序

    squid
    代理服务器squid守护进程。

    smartd
    SMART Disk Monitoring
    服务用于监测并预测磁盘失败或磁盘问题(前提:磁盘必须支持 SMART)。大多数的桌面用户不需要该服务,但建议开启它,特别是服务器。

    smb
    SAMBA
    服务是在 Linux 和 Windows 之间共享文件必须的服务。如果有 Windows 用户需要访问 Linux 上的文件,就启用它。

    snmpd
    本地简单网络管理守护进程。

    sshd
    SSH
    允许其他用户登录到你的系统并执行程序,该用户可以和你同一网络,也可以是远程用户。开启它存在潜在的安全隐患。如果你不需要从其它机器或不需要从远程登录,就应该关闭它。

    syslog
    tcpmux-server
    tftp

    time
    该守护进程从远程主机获取时间和日期,采用TCP协议。

    time-udp
    该守护进程从远程主机获取时间和日期,采用UDP协议。
    time-dgram
    time-stream

    tux
    在Linux内核中运行apache服务器的守护进程。

    vsftpd
    vsftpd
    服务器的守护进程

    vmware-tools
    vmware-tools
    ,虚拟机中装了vmware-tools包之后才会有的。

    vncserver
    VNC
    Virtual Network Computing,虚拟网络计算),它提供了一种在本地系统上显示远程计算机整个”桌面”的轻量型协议。

    winbind
    Winbind
    是一款 Samba 组件,在 CentOS 系统下,他被包含在了 samba-common 包中。 Winbind 在Linux上实现了微软的RPC调用、可插式验证模块和名字服务切换,通过 samba 接口与 Windows 域控获得联系,可以使NT域用户能在Linux主机上以Linux用户身份进行操作。通过设定 Linux 服务器的 nss 配置,我们可以让系统通过 Winbind 程序来解析用户信息。

    wpa_supplicant
    无线网卡上网服务

    xend, xendomains
    XEN
    虚拟服务相关

    xfs
    X Window
    字型服务器守护进程,为本地和远程X服务器提供字型集。

    xinetd
    (该服务默认可能不被安装)它是一个特殊的服务。它可以根据特定端口收到的请求启动多个服务。比如:典型的 telnet 程序连接到 23 号端口。如果有 telent 请求在 23 号端口被 xinetd 探测到,那 xinetd 将启动 telnetd 服务来响应该请求。为了使用方便,可以开启它。运行 chkconfig –list, 通过检查 xinetd 相关的输出可以知道有哪些服务被 xinetd 管理。

    ypbind
    为NIS(网络信息系统)客户机激活ypbind服务进程 。

    yppasswdd
    NIS
    口令服务器守护进程。

    ypserv
    NIS
    主服务器守护进程。

    yum, yum-updatesd
    RPM
    操作系统自动升级和软件包管理守护进程。

    ConsoleKit
    这个主要是 Gnome 使用的用于 Fedora - Fast User Switching ,主要用于自动加载 device 和 Power Management. 建议 Disable
    NetworkManager, NetworkManagerDispatcher
    主要用于笔记本的有线网络和无线网络之间的切换,有些 DHCP 用户会用到 . 建议 Disable
    acpid
    高级电源管理,在 Fedora 7 中默认安装的,如果需要可以安装
    anacron, atd, cron
    Linux
    里面的计划任务,cron 建议打开,其它两项关闭
    auditd
    这个记录 kernel 的审计情况,相当于另外的一个 loggin 服务,用命令 auditctl 查看文件的变化情况,普通用户用不上可以关闭
    autofs
    自动加裁文件系统,如果你用的移动设备建议打开,不然就关掉咯
    avahi-daemon, avahi-dnsconfd
    相当于 mDNS 的一个软件,我也不知道干什么用的,建议关闭
    bluetooth, hcid, hidd, sdpd, dund, pand
    用于蓝牙设备的 deamon ,没有的可以关闭
    btseed, bttrack
    和 BitTorrent 相关的服务,建议关闭
    capi
    与ISDN相关的服务,一般用户都可以关闭
    cpuspeed
    控制CPU的频率用于节省电源, Pentium-M, Centrino, AMD PowerNow, Transmetta, Intel SpeedStep, Athlon-64, Athlon-X2, Intel Core
    2
    支持,如果你CPU不支持或者,想CPU全速运行都可以关掉它
    cupsd, cups-config-daemon
    以打印机相关的服务,有打印机可以打开
    dc_client, dc_server
    主要用以 SSL/TLS 服务,如 Apache Server,不使用就可以关闭
    dhcdbd
    DHCP
    相关服务,使用DHCP的人打开,用固定IP的关闭就行了
    firstboot
    用于第一启动相关的设置,关闭
    gpm
    对鼠标的支持,如果你用 console 要以打开,常用 x-server 就关闭
    haldaemon
    HAL (Hardware Abstraction Layer)
    这个必须打开
    hplip, hpiod, hpssd
    HP
    打印机支持程序,不使就HP打印机的就关闭吧
    httpd
    Apache HTTP Web Server
    iptables
    Linux
    下的防火墙,好东东啊
    ip6tables
    IPv6
    的防火墙,大部分用户可以半闭了
    irda, irattach
    IrDA
    支持服务,大部分用户都不会用上
    irqbalance
    对多核多CPU的用户的服务,用VMware的没必要打开了
    isdn
    ISDN
    用户用的,关闭
    kudzu
    如果你不是经常的更换硬件就关闭它
    lirc
    红外遥控支持,没什么用处
    lisa
    和网上邻居的功能很像,如果用Samba 或 NFS 可以打开
    lm_sensors
    主板测试PC健康用的服务,如CPU,硬盘温度之些的,不用可以关掉
    mcstrans
    用于查看 context 的,用 SELinux 的可打开
    mdmonitor
    用于监视软 RAID 和 LVM 信息,你也可以关掉
    messagebus
    IPC (Interprocess Communication)
    进程间通信服务,一个重要的服务,必须打开
    nasd
    声音支持,用于X Windows,不用的就半掉
    netconsole
    初始化网络控制台登陆,关闭
    netfs
    用于自动加载NFS,Samba的服务,不用可以关掉
    netplugd
    监测网络接口用的,普通用户关掉
    nfs, nfslock
    用于 Unix/Linux/BSD 之间的文件共享,不用就半掉
    nmbd
    Samba
    的一个服务,用于NETBeui名称解析用的
    nscd
    用于缓存密码的,没什么用
    ntpd
    NTP
    服务
    pcscd
    用于对子 Smart Cards 的支持,不用就半掉
    readahead_early, readahead_later
    优化程序的启动速度用的,果如你想启动的快些就打开
    restorecond
    用于监控文件用的,如果你用 SELinux 就打开它
    rpcbind
    RPC
    服务支持 (像 NFS or NIS). 如果没有服务依赖它可以关掉
    rpcgssd, rpcidmapd, rpcsvcgssd
    用于 NFS v4. 除非你使用 NFS v4, 关掉
    sendmail
    Linux
    下的邮件服务器
    setroubleshoot
    这个程序提供信息给 setroubleshoot Browser,如果你用 SELinux 可以打开它
    smartd
    SMART
    ,用于监测硬盘的,VMware用户关掉
    smb
    SAMBA
    与Windows共享文件用
    smolt
    用于提供每月的一些统计表,不知什么用,关掉
    sshd
    用于SSH连接用的
    yum-updatesd
    用于在线自动升级的,建议打开



    展开全文
  • Linux系统优化及安全防护

    千次阅读 2016-09-28 14:31:27
    Linux服务器优化及安全防护基础
  • Stacer ---- Linux系统优化和监测工具

    千次阅读 2018-01-25 23:53:30
    Stacer 是Linux下一款可视化的日志清理,系统优化和监测的工具 1.下载地址https://github.com/oguzhaninan/Stacer 2.Stacer 支持三种安装方式,可根据不同系统选择安装 3.以Kali Linux 2017.3 (Debian)为例 ...
  • linux 系统优化tcp连接

    千次阅读 2012-07-04 00:42:31
    要提高Linux系统下的负载能力,可以先启用Apache的Worker模式(参考我写的《Ubuntu下配置Apache的Worker模式》一文),来提高单位时间内的并发量。但是即使这么做了,当网站发展起来之后,连接数过多的问题就会日益...
  • 一、登录系统: 不使用root登录,通过sudo授权管理,使用普通用户登录 二、禁止SSH远程: 通过PermitRootLogin来更改默认的远程连接SSH服务及禁止root远程连接 [root@c7 ~]# su root #进入超级用户模式 [root@c7 ~]#...
  • 1、系统安装最小化 1)根据经验,选择安装包时应该按最小化原则,即不需要的或者不确定是否需要的就不安装,这样可以最大程度上确保系统安全。 2)如果安装过程落了部分包组或者其他伙伴安装时没选,再安装后可以...
  • 系统优化怎么做-Linux系统配置优化

    千次阅读 2018-07-22 12:44:54
    大家好,这里是「聊聊系统优化 」,并在下列地址同步更新 知乎专栏:https://zhuanlan.zhihu.com/youhua  全网私活,免费订阅:http://www.zsihuo.com 在这里我会从基于J2EE系统及互联网架构方面,来谈谈系统优化的...
  • Linux系统内核优化

    千次阅读 2017-12-14 14:32:30
    Soft open files 是Linux系统参数,影响系统单个进程能够打开最大的文件句柄数量,这个值会影响到长连接应用如聊天中单个进程能够维持的用户连接数, 运行ulimit -n能看到这个参数值,如果是1024,就是代表单个进程...
  • Linux系统CPU优化之cpuspeed

    千次阅读 2014-12-19 18:03:16
    Linux系统CPU优化之cpuspeed
  • Linux系统如何优化

    千次阅读 2019-05-14 14:52:06
    09)linux内核参数优化/etc/sysctl.conf ,执行sysctl -p生效。 10)更改字符集,支持中文,但建议还是使用英文字符集,防止乱码问题,不要使用中文。 11)锁定关键系统文件。 chattr +i /etc/passwd /etc/shadow...
  • 嵌入式linux快速启动的一些优化的方法,主要是要掌握嵌入式linux系统的启动流程,以便能够在优化时有所指引。 下面是一些总结: 嵌入式linux系统快速启动的优化主要是硬件和软件。 1硬件: 1.1因为在系统启动的...
  • Linux系统Tomcat优化开启apr模式

    千次阅读 2017-01-06 10:02:53
    Linux系统Tomcat优化开启apr模式 Tomcat支持三种接收请求的处理方式:BIO、NIO、APR其中APR性能最为强大,下面来讲解一下linux系统下tomcat开启apr模式可能会遇到的问题,具体的实现步骤不再做过多讲解,很多博主已做了...
  • Linux文件系统性能优化

    万次阅读 2010-04-13 17:49:00
    由于各种的I/O负载情形各异,Linux系统中文件系统的缺省配置一般来说都比较中庸,强调普遍适用性。然而在特定应用下,这种配置往往在I/O性能方面不能达到最优。因此,如果应用对I/O性能要求较高,除了采用性能更高的...
  • 所谓内核优化,主要是在Linux系统中针对业务服务应用而进行的系统内核参数优化,优化并无特殊的标准,下面以常见生产环境linux的内核优化为例讲解,仅供大家参考:打开/etc/sysctl.conf把以下要修改的内核参数加入...
  • int open(const char *pathname, int flags, mode_t mode); ssize_t read(int fd, void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count);
  • 如何优化linux系统

    千次阅读 2016-12-03 20:51:48
    09)linux内核参数优化/etc/sysctl.conf ,执行sysctl -p生效。 10)更改字符集,支持中文,但建议还是使用英文字符集,防止乱码问题,不要使用中文。 11)锁定关键系统文件。 chattr +i /etc/...
  • Linux系统性能优化思路和方法

    千次阅读 2018-09-28 20:35:08
    #影响Linux性能的CPU、内存、磁盘、网络等因素分析 1.系统硬件资源:CPU,多核与超线程 消耗CPU的业务:动态WEB服务,Mail服务器 2.内存:物理内存与swap的取舍,64操作系统 消耗内存的业务:内存数据库(Redis、...
  • Linux系统CPU优化之irqbalance

    万次阅读 2014-12-19 16:55:54
    irqbalance系统CPU优化
  • linux性能优化

    千次阅读 2019-05-15 10:32:19
    如果可能的话分离问题,删除任何运行于被调查系统的多余的程序或应用! 工具:gnome-system-monitor 图形界面,可以说是TOP的图形化 执行:->gnome-system-monitor 多处理器统计:mpstat,最大的优点是统计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 325,662
精华内容 130,264
关键字:

linux系统优化

linux 订阅