gentoo:如何让 emerge 更好地利用更多的内核?
gentoo: How make emerge better use of more cores?
我有 Intel Atom N2800(弱但方便的 Aspire One D270,仍然足够我用它来完成工作),但更新速度非常慢(比如 天)。
我在 /etc/make.conf
和 emerge -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_SIZE
和 CCACHE_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.
中的文件
我有 Intel Atom N2800(弱但方便的 Aspire One D270,仍然足够我用它来完成工作),但更新速度非常慢(比如 天)。
我在 /etc/make.conf
和 emerge -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_SIZE
和 CCACHE_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.
中的文件