gentoo:如何让 emerge 更好地利用更多的内核?

gentoo: How make emerge better use of more cores?

我有 Intel Atom N2800(弱但方便的 Aspire One D270,仍然足够我用它来完成工作),但更新速度非常慢(比如 )。

我在 /etc/make.confemerge -DuNqv world 中使用 MAKEOPTS=" -j5 ",它有时会达到 Load avg 5.0 5.0 5.0 左右,但通常只有 1.5 左右。

有没有办法让它更并行(更快)?

您可以采取一些措施来加快移植速度,但通常这些调整可能会导致其他 side-effects 不加注意。

您可以通过在命令行中结合使用 --load-average=##.##--jobs=## 来操纵预期的加载。用数字替换#。您还可以通过将 EMERGE_DEFAULT_OPTS="--jobs=## --load-average=##.##" 添加到 make.conf 来使此值和大多数其他值(半)永久化。有个decent article about using these values with real-world application. What isn't in the article is how to properly get around build failures due to a customized make.conf. If you want to make these settings global (make.conf), you should also understand how to bypass those settings with custom environment for specific packages. See here.

关于加速移植的一些其他注意事项(好的和坏的):

1) 通过添加/编辑 FEATURES="${FEATURES} parallel-fetch" 在 make.conf 中启用 parallel_fetch。此条目将允许在构建当前包时下载包。它并没有真正回答你的问题,但它是侵入性最小的运输工具之一 "speed-ups"。

2) 启用缓存。安装 ccache 包,并将 ccache 添加到 #1 中的 FEATURES 中。您还需要定义 CCACHE_SIZECCACHE_DIR。尽管它一开始是个好主意,但很多人对 ccache 的好处已经冷淡了。众所周知,它会导致某些软件包出现问题,并且有许多报告声称它会比加快速度更频繁地降低编译性能。我不能说它有多正确,但是 in this article warning about using ccache 中提到的许多观点都是普遍的看法。

3) ReNice 出现了。您可以通过添加 PORTAGE_NICENESS=-# 来定义 niceness 增量。这个数字的值被添加到默认过程值。通过将其设为负值,您将降低 emerge 进程的友好性。使用此设置时要非常小心,因为它也会应用于子流程。对于具有多个子进程的一些包,这可能会很快变得冒险。

最后说明 - 其中一些功能取决于您的 portage 版本。我提到这个是因为你说你正在编辑 /etc/make.conf,这是旧位置。较新的 portage 版本已将配置文件迁移到 /etc/portage。如果两个地方都有 make.conf,/etc/portage 中的文件将取代 /etc.

中的文件