LINUX.ORG.RU

Спасибо за наводку, заюзаю такое на ноуте и на воркстэйшине.

Deleted
()
Ответ на: комментарий от madcore

Вот видите, а мне надо чтобы было железно. У меня 4-ядерный процессор + НТ, это всего 8 потоков. Нужно чтобы Portage всегда использовал 2 настоящих ядра.

Fantasma
() автор топика

man make.conf

MAKEOPTS

Use this variable if you want to use parallel make. For example, if you have a dual-processor system, set this variable

to "-j2" or "-j3" for enhanced build performance with many packages. Suggested settings are between CPUs+1 and 2*CPUs+1.

In order to avoid excess load, the --load-average option is recommended. For more information, see make(1). Also see

emerge(1) for information about analogous --jobs and --load-average options.

init_6 ★★★★★
()
Ответ на: комментарий от Fantasma

>Непонятно будет ли Portage считать поток НТ за отдельное ядро или нет.

А что, это кто-то может определить?

devl547 ★★★★★
()

А что мешает проверить?

Я думаю, что будет... и вам лучше MAKEOPTS="-j4" сделать. Проверьте лучше.

А вообще - зачем вам это? Не лучше ли установить PORTAGE_NICENESS=«19» ?

BattleCoder ★★★★★
()

Просто когда процессор простаивает - это не есть хорошо... задействовав все четыре ядра, программы будут компилироваться быстрее. Коли они всё равно свободны.

Если они для чего-то используются, то по идее portage будет уступать процессор, если nice установить в большое число (19 - максимум)

«свободные» ядра ни к чему не нужны... только зря киловатты-часы гоняют, но при этом ничего не вычисляют. В лучшем случае какой-нить cpufreq может частоту проца занизить (если он не используется), но всё равно...

BattleCoder ★★★★★
()
Ответ на: комментарий от Fantasma

>А MAKEOPTS разве не к make относится?
Я так и сказал, что портеж ни при чем

xorik ★★★★★
()
Ответ на: комментарий от Fantasma

>Нужно чтобы Portage всегда использовал 2 настоящих ядра.

Отключить НТ?
Либо играться с планировщиком.

madcore ★★★★★
()
Ответ на: комментарий от BattleCoder

Гипотеза

и вам лучше MAKEOPTS="-j4" сделать

нуждается в эксперементальной проверке. Я считаю, что в ее случае больше пользы будет от:

MAKEFLAGS="-j1"
EMERGE_DEFAULT_OPTS="--load-average 4 --jobs 5"
init_6 ★★★★★
()
Ответ на: комментарий от init_6

>--load-average 4

Что это значит?

--jobs 5

Я никак не могла понять как Portage может собирать несколько пакетов одновременно, если они должны собираться по порядку с учётом зависимостей.

Fantasma
() автор топика
Ответ на: комментарий от Fantasma

Что это значит?

man emerge

-j [JOBS], --jobs[=JOBS]

Specifies the number of packages to build simultaneously. If this option is given without an argument, emerge will not

limit the number of jobs that can run simultaneously. Also see the related --load-average option. Note that interactive

packages currently force a setting of --jobs=1. This issue can be temporarily avoided by specifying --accept-proper‐ ties=-interactive.

man emerge

--load-average=LOAD

Specifies that no new builds should be started if there are other builds running and the load average is at least LOAD (a

floating-point number). This option is recommended for use in combination with --jobs in order to avoid excess load. See

make(1) for information about analogous options that should be configured via MAKEOPTS in make.conf(5).

init_6 ★★★★★
()
Ответ на: комментарий от Fantasma

Я никак не могла понять как Portage может собирать несколько пакетов одновременно, если они должны собираться по порядку с учётом зависимостей.

Все верно… Когда к примеру

emerge xorg-x11

там в процессе сборки есть кучи шрифтов. Что мешает их ставить параллельно? Так же и со всеми остальными зависимостями и при сборке чего угодно. Если оно может быть собрано параллельно оно будет собрано параллельно, если юзер сам намерено не отключил параллельность. А если возможности параллельной сборки нет - то сборка пойдет в один «поток» сколько не крути…

init_6 ★★★★★
()
Ответ на: комментарий от Fantasma

Я думаю, таких случаев немного. Лучше включить MAKEOPTS="-j8" )

Это разные болтики одного механизма.

Если у тебя устанавливаемый ебюлд не требует никаких зависимостей(все уже есть в системе) то да большие MAKEOPTS это хорошо… А если в системе чего то все же нет и что то нужно дособрать… то хорошо MAKEOPTS="-j1" или "-j2" зато большие --load-average & --jobs

init_6 ★★★★★
()
Ответ на: комментарий от Fantasma

…а так как зачастую дособирать что то все же надо

+ При глобальной пересборке всего мира вариант маленький MAKEOPTS + --load-average & --jobs полюбому выиграет во времени по сравнению с просто большим MAKEOPTS.

init_6 ★★★★★
()
Ответ на: комментарий от Fantasma

>Я думаю, таких случаев немного. Лучше включить MAKEOPTS="-j8" )

Лучше вырубить нафиг этот маркетинговый развод под названием HT

Led ★★★☆☆
()

нужные ядра можно задать через аффинити к ядрам:

schedtool -a 0,3 emerge <аргументы>

можно использовать taskset вместо schedtool

MAKEOPTS=-j2

Sylvia ★★★★★
()
Ответ на: комментарий от Fantasma

>Никакой не развод, а очень хорошая технология.

Ну-ну...

Led ★★★☆☆
()
Ответ на: комментарий от Fantasma

линуксовый ядерный шедуллер процессов - вовсе ненастолько глуп - чтоб посылать процесс работать на HT вместо реального процессора

такчто все будет работать по умолчанию

ae1234 ★★
()
Ответ на: комментарий от tensai_cirno

CONFIG_SCHED_SMT: SMT (Hyperthreading) scheduler support

первое упоминание о надобности потдержки HT в шедулере относиться к 2002 году

вы реально думаете что современная ОС незнает о такой особености смп систем как эта ?
это чуть ли не первое что долдно быть учтено в ОС для потдержки этой технологии
иначе ос засунет 2 нагруженных процесса на 1 физ ядро - и будет считать что все хорошо :) когда как они будут работать в половину мощности

ae1234 ★★
()
Ответ на: комментарий от tensai_cirno

опцию -j2 указали - но вопрос то остался в том - будет ли эти процессы попадать на реальные ядра - а не на виртуальные

я и ответил что так и будет по умолчанию

ae1234 ★★
()
Ответ на: комментарий от megabaks

пажалста - на одно ядро ставит номер 0 - на второе ядро ставит номер 1
и считает что 0 это нормальное а 1 это HT

вот и отличила :)

ae1234 ★★
()
Ответ на: комментарий от megabaks

нет - я думаю что все проще
неважно какой из 2 - она посчитает за обрубок
просто она знает что эти оба - это проц + HT
а какой именно - 0 или 1 - без разници

ae1234 ★★
()
Ответ на: комментарий от megabaks

Я больше скажу. Ядро может два потока и на одном ядре крутить, если загрузка низкая и sched_mc_powersaving включено.

devl547 ★★★★★
()
Ответ на: комментарий от Fantasma

а что, какое либо userspace приложение или даже kernel может это определить?

x0r ★★★★★
()
Ответ на: комментарий от megabaks

вот лежат два предмета
какое из них первое а какое второе ?

ну иль чтото из принципа неопределенности - система зависит от наблюдателя
в данном случае - HT являеться ядро - отличное от того на котором щас наблюдаем работабщий процесс

если первый раз прецесс работает на 0ом ядре - то HT ядро 1
если процесс работает на 1 ядре - то HT ядро 0

ae1234 ★★
()
Ответ на: комментарий от Fantasma

>Непонятно будет ли Portage считать поток НТ за отдельное ядро или нет.
Хто, што? Не с той стороны рассматриваете. Если процессор посчитает что задача достойно параллелится via HT, то он пошинкует её на HT ядра. Если же нет, то в случае -j2 заюзаются уже два железных йадра. Вроде так было.

darkshvein ☆☆
()
Ответ на: комментарий от ae1234

>любая работающая на интелах и потдерживающая smp знает про эту особенность
аа, эм. Покажите мне строчки в ядре, о распознавании HT.

2 TC. BTW, HT должен отключаться в расширенных настройках БИОСа.

darkshvein ☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.