简单几步优化Ubuntu 降低CPU使用率

本文提供了一系列针对Ubuntu系统的优化建议,包括禁用IPv6、并行运行开机启动脚本、禁用Pango、安装preload等方法,旨在帮助用户提升Ubuntu的运行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、禁用 IPv6
    目前 IPv6 还没有到来,Ubuntu 这个超前的功能暂时可以屏蔽掉,以加快速度。
    编辑 sudo gedit /etc/modprobe.d/aliases,把:
    alias net-pf-10 ipv6
    修改为
    alias net-pf-10 off #ipv6
    2、并行运行开机启动脚本
    /etc/init.d/ 下面的都是启动脚本,默认这些脚本是按顺序启动的,实际上,如果你使用的是 SATA 或 SCSI 接口,可以并行启动这些脚本程序,加速启动过程。
    使用 vi 编辑 sudo vi /etc/init.d/rc,把:
    CONCURRENCY=none
    修改为
    CONCURRENCY=shell
    3、将 localhost 化名为主机名
    据说这个方法可以改善使用 Ubuntu 一段后,在 GNOME 中启动应用程序变慢的问题。
    编辑 sudo gedit /etc/hosts,把:
    127.0.0.1 localhost
    127.0.1.1 Ubuntu
    在第一行末尾加上主机名,也就是第二行的那个名字。
    127.0.0.1 localhost Ubuntu
    127.0.1.1 Ubuntu
    4、禁用 Pango
    Pango 是一个着重于国际化的,用于输出和文本渲染的库,但是这个库可能导致 Firefox 等一些程序占用过高的 CPU,所以我们可以禁用它。这样可以很好的降低CPU的使用率。
    编辑 sudo gedit /etc/environment,添加:
    MOZ_DISABLE_PANGO=”1″
    5、禁用 gettys
    打开 sudo gedit /etc/event.d/tty3,把所有以 start 开头的行,用 # 注释掉。

   6、安装 preload
    可以把一些常用到的 lib 库和应用程序预加载到内存,以提高程序的启动速度。
    sudo apt-get install preload
    7、设置 swappiness
    减少系统对于 swap 频繁的写入,将加快应用程序之间的切换,有助于提升系统性能。
    系统默认为 60,你可以修改为 10:
    sudo sysctl vm.swappiness=10
    如果要让它开机自动设定,编辑 sudo gedit /etc/sysctl.conf 文件,加入:
    vm.swappiness=10
    8、使用 grub 的 profile 选项
    grub 有个叫做 profile 的选项,它是一种系统启动时所要读取的所有的文件的索引,这样使得随后系统查找并且读取这些文件的速度就会加快。
    在开机进入 grub 画面时按 esc 键,然后找到需要启动的内核,按 e 键,编辑启动参数,在后面加入 profile 后再按 b 进行启动。设置后,第一次开机需要建立索引,所以开机速度会慢一点,以后每次更新内核都需要这么做。
    9、使用 sysv-rc-conf 关闭不必要的服务.
    具体方法,请参考这里。
    #############################################3
    将localhost化名为主机名,编辑hosts文件,把127.0.0.1等于localhost和本机名写到一行中,比如:
    127.0.0.1 localhost
    127.0.1.1 fwolf_pcname
    ==> 变成
    127.0.0.1 localhost fwolf_pcname
    禁用ipv6,编辑/etc/modprobe.d/aliases:
    alias net-pf-10 ipv6
    ==>
    alias net-pf-10 off #ipv6
    并行运行开机启动脚本,编辑/etc/init.d/rc:
    CONCURRENCY=none
    ==>
    CONCURRENCY=shell
    但据说这种方法可能会造成启动问题,慎用,建议多核cpu才使用。
    禁用Pango的输出和文本渲染,主要针对mozilla和firefox,可能会导致cpu占用过高。编辑/etc/environment,添加一行:
    MOZ_DISABLE_PANGO=”1″
    关闭之后明显感觉到firefox的显示速度变快了,但显示形式也有了一些变化,比如<th>、网页标题的黑体字现在能体现了,但也感觉字体渲染略微“模糊”了一点点。
    安装preload,它可以把一些常用到的库文件预加载到内存,用部分内存空间换取应用程序启动速度的提升。另外注意,prelink从Feisty 7.04起就没用了:
    sudo apt-get install preload
    禁用多余的虚拟终端,编辑/etc/inittab,把getty部分只留一个就可以了:
    1:2345:respawn:/sbin/getty 38400 tty1
    #2:23:respawn:/sbin/getty 38400 tty2
    #3:23:respawn:/sbin/getty 38400 tty3
    #4:23:respawn:/sbin/getty 38400 tty4
    #5:23:respawn:/sbin/getty 38400 tty5
    #6:23:respawn:/sbin/getty 38400 tty6
    Ctrl+Alt+F2-F6就没东西了,F1是我们保留的终端,用于应急处理,F7就是正常的图形环境啦。
    注:有些情况下这样好像不行,还要编辑/etc/event.d/tty2,把start开头的两行都注释掉,3456都如法炮制,依然只保留1,再用热键切换过去就是空空的一个提示符了。
    调整hdparm加速硬盘,编辑/etc/hdparm.conf,参考内容如下:
    /dev/sda {
    dma = on
    io32_support = 1
    mult_sect_io = 32
    }
    对于内存充足的机器减少对swap的使用,编辑/etc/sysctl.conf,添加:
    vm.swappiness=10
    这个数值的默认值为60,越小对swap的写入可能就越小,有网友说1G内存调整为5感觉最合适,建议至少512M内存以上再调整这个数值,设为0的话就几乎等于不实用swap了。
    使用LVM,但暂时没有进一步的资料。
    用bootchart协助,优化系统启动过程,对耗时较多的过程进行优化。
    使用bum关闭掉不需要的服务,不推荐用sysv-rc-conf的原因是bum对服务、进程有比较详细的解释说明。
    如果fstab中挂有外部磁盘,启动时不需要检测,可以把pass设置为0(fstab中最后一列)。如果在安装系统时就选用更合理的分区方案、分区类型(比如XFS)效果更佳。
    现在应该都在用6.10Edgy之后的发行版了,如果是486机器,请选用386内核;P4以后的机器,包括同期的AMD,请选用generic内核;服务器请选用linux-server内核,性能可能会有一点点的提升。

详细请参考:Difference between 。
    用deborphan删除不用的库文件:
    sudo deborphan | xargs sudo apt-get -y remove –purge



原文出于:http://dpinglee.blog.163.com/blog/static/14409775320103993848205/

<think>好的,用户之前询问了关于GCC编译配置的几个选项,现在他们想详细了解第五步,也就是编译源码的过程。我需要先回忆之前的对话,确保信息连贯。用户可能正在实际编译GCC,遇到了问题,或者想确保自己正确执行步骤。 首先,用户之前得到的是配置步骤的详细解释,现在他们需要编译阶段的指导。他们可能已经运行了../configure命令,现在准备开始编译。但用户提到的“第五步”可能是指他们看到的某个教程中的步骤,而我的回复可能需要明确步骤的顺序。 我需要检查之前的回复,在之前的建议中,编译步骤分为三步:配置、编译、安装。可能用户指的第五步是编译,但需要明确。或者用户可能参考的其他教程有不同步骤划分。我需要确认上下文,但根据之前的回答,编译步骤是在配置之后,所以用户的问题可能是指具体的编译过程。 接下来,用户需要详细解释如何编译源码,可能包括命令、参数、常见问题等。他们可能想知道make命令的具体使用,如何加速编译,如何处理错误,以及编译后的验证步骤。 我需要考虑用户可能的背景:可能是开发者或系统管理员,正在从源代码编译GCC,可能为了特定需求,比如Fortran支持,或者需要特定版本的编译器。他们可能对编译过程不太熟悉,需要详细的指导,特别是优化编译时间和解决常见错误的方法。 需要详细解释make命令,尤其是使用-j参数并行编译,如何确定线程数,可能的环境问题,依赖缺失,以及编译失败时的处理策略。此外,用户可能需要知道编译后的安装步骤,以及如何验证是否成功。 可能还需要提醒用户注意编译所需的时间和资源,特别是在较旧的硬件上,或者如果选择了禁用bootstrap,可能的影响。另外,需要强调在编译前确保所有依赖已安装,避免中途失败。 用户可能没有明确说出但潜在的问题包括:编译时间过长,内存不足,权限问题,或者如何处理编译过程中的错误日志。因此,在回答中应该涵盖这些方面,提供解决方案或排查步骤。 总结,回答需要结构清晰,分步骤解释编译过程,给出具体命令,解释参数,常见问题及解决办法,以及后续的安装和验证步骤。同时要使用用户友好的语言,避免过于技术化,但保持专业性。</think>### **第五步:编译源码(`make` 命令)详解** 在完成 `../configure` 配置后,编译源码是构建 GCC 的核心步骤。这一阶段会将源代码转换为可执行的二进制文件,具体流程如下: --- #### **1. 编译命令与参数** ```bash make -j$(nproc) # 推荐使用多线程加速编译 ``` - **`make`**:调用 Makefile 中的规则,按配置自动编译所有组件。 - **`-j$(nproc)`**:启用多线程编译,`$(nproc)` 自动获取当前 CPU 的核心数(例如 8 核 CPU 使用 `-j8`)。 - **优点**:显著减少编译时间(通常从数小时缩短到几十分钟)。 - **注意事项**: - 内存需求增加,若内存不足可能导致编译失败(建议内存 ≥ 8GB)。 - 若系统资源紧张,可减少线程数(如 `-j4`)。 --- #### **2. 编译过程解析** - **主要阶段**: 1. **构建基础工具**:生成 `gcc`、`gfortran` 等编译器依赖的内部工具。 2. **编译语言前端**:根据 `--enable-languages` 指定的语言(如 Fortran),生成对应的编译器组件。 3. **链接与优化**:将各组件链接为完整的编译器,并根据配置进行优化(若未禁用 Bootstrap,可能重复此过程)。 - **输出文件位置**: - 编译生成的临时文件存储在 `build` 目录(即执行 `make` 的当前目录)。 - 最终可执行文件在 `build/gcc` 子目录中,但需通过 `make install` 安装到 `--prefix` 指定路径。 --- #### **3. 常见问题与解决** - **问题 1:编译中途报错 `internal compiler error`** - **原因**:编译器自身崩溃(可能因代码冲突、硬件问题或配置错误)。 - **解决**: 1. 检查配置选项是否合理(如依赖库是否安装)。 2. 尝试单线程编译(`make -j1`)定位错误位置。 3. 更新源码或回退到稳定版本。 - **问题 2:内存不足导致进程被终止** - **表现**:系统卡顿,终端输出 `Killed`。 - **解决**: 1. 减少编译线程数(如 `-j2`)。 2. 增加系统交换空间(Swap)。 3. 关闭其他占用内存的程序。 - **问题 3:依赖缺失报错(如 `missing header file`)** - **原因**:未安装必要的开发库(如 `libmpfr-dev`)。 - **解决**:根据错误提示安装对应依赖: ```bash sudo apt install libgmp-dev libmpfr-dev libmpc-dev # Ubuntu/Debian ``` --- #### **4. 编译后的验证(可选)** 在安装前,可运行测试套件验证编译结果(耗时较长): ```bash make -k check # 执行所有测试(可选,非必需) ``` - **`-k`**:即使某些测试失败,也继续执行剩余测试。 - **查看测试报告**:结果保存在 `build/*.log` 文件中,重点关注关键组件(如 `gfortran`)的通过率。 --- #### **5. 加速编译的进阶技巧** 1. **使用 `ccache` 缓存**: - 安装 `ccache` 后,在配置命令中添加 `CC="ccache gcc" CXX="ccache g++"`,可缓存编译结果,减少重复编译时间。 2. **选择性编译**: - 若仅修改部分代码,可单独编译特定模块(如 `make all-gcc` 仅构建 GCC 核心)。 3. **分布式编译**: - 使用 `distcc` 工具,将编译任务分发到多台机器(适合集群环境)。 --- #### **6. 后续步骤:安装与配置** 编译成功后,执行安装命令: ```bash sudo make install # 将编译好的文件复制到 --prefix 指定路径 ``` - **环境变量配置**: ```bash export PATH=/usr/local/gcc-x.x.x/bin:$PATH export LD_LIBRARY_PATH=/usr/local/gcc-x.x.x/lib64:$LD_LIBRARY_PATH ``` - 将上述命令添加到 `~/.bashrc` 或 `~/.zshrc` 以永久生效。 - **验证安装**: ```bash gfortran --version # 检查 Fortran 编译器版本 ``` --- ### **总结** 编译 GCC 是对系统资源和耐心的考验,合理利用多线程、解决依赖冲突、监控资源使用是关键。若仅需特定功能(如 Fortran),可精简配置以减少编译时间。完成后,通过环境变量管理版本,避免影响系统默认编译器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值