Вы здесь

[SOLVED] Скорость сборки и загрузка процессора

После апгрейда железа (Phenom II x4 955, 4Gb RAM) я заметил, что сборка программ не загружает процессор на 100%, максимум по 40% на ядро. Хотя старый проц Athlon 64 3500+ загружался полностью. Это как бы не плохо, что процессор не загружен, но от этого ж по идее увеличивается время сборки? В MAKEOPT я указал -j5 (читал, что нужно кол-во ядер + 1). У меня было предположение, что дело в тормознутости винта (компилятор то постоянно что-то читает/пишет), но после монтирования tmpfs в /var/tmp/portage фактически ничего не изменилось. В чём может быть дело?

В доках на gentoo.org написано (кол-во ядер)*2 + 1. И рядом комментарий, что это чисто эмпирическое число. Т.е. если считаете, что проц недогружен - увеличивайте.

Не факт. У меня при четырёх ядрах указано MAKEOPTS="-j4" и загрузка процессора при компиляции равна 100%. Скорее тут дело в том, что не все операции можно распараллелить, давайте поговорим более конкретно: что собираете, всё ли время сборки загрузка не превышает 25% ?

Да что угодно собираю.. Например, wine. Хотя такая же картина со всеми программами...

Загрузка, ясное дело, немного меняется. Скажем от 20% до 40% на ядро.

Являюсь обладателем Phenom II x4 945, процессор достаточно быстрый, что бы его загрузить нужна ситуация в которой возможна установка (сборка) чертырёх не зависимых друг от друго пакетов или четырёх заивсимостей другого пакета, но не зависимых друг от друга. Так же стоит обеспечить приемлимую скорость ввода/вывода, для этого подойдёт сборка в памяти, обеспечивающая максимальную скорость записи / чтения, не зависящую от жёсткого диска., добавьте следующую строчку в /etc/fstab:

shm 	/var/tmp/portage tmpfs 		defaults,size=2048M 0 0

Здесь указан максимальный размер выделяемой памяти. В /var/tmp/portage распаковываются исходные коды устанавливаемого пакета и происходит его сборка.

Так же стоит указать некоторые параметры для многопоточной сборки и указать допустимую среднюю загрузку процессора, при которой возможно запускать еще один процесс компиляции другого пакета.

EMERGE_DEFAULT_OPTS="--jobs 5 --load-average=4"
MAKEOPTS="-j5"

У меня 4 Гб ОЗУ.

Хмм.. А вот при сборке ядра загрузка пошла на 100% все 4 ядра :)

Хе. За пару минут собралось :) На старом проце нужно было минут 20 минимум...

Пару минут, это вы уже утрируете, 5 минут куда ни шло.

Я сам удивился, когда первый раз собирал ядро на новое железо. Поставил сборку, пошел делать чай. Пришел - а оно уже готово. Ради интереса только что пересобрал (сначала сделал make mrproper, чтоб сборка была полной; конфиг, разумеется, сохранил) и засёк время - 2 минуты 10 секунд на неразогнаном Phenom II x4 955 (3.2ГГц). Собирал так:

CFLAGS_KERNEL="-march=amdfam10 -O2 -pipe" make -j5

Ну поздравляю тогда )

А как оно в работе такое ядро? Просто у меня при сборке gentoo-sources при make -j5 сборка заканчивается где то на середине, по непонятным причинам процессор интел q6600

Нормально работает. В принципе ничем не отличается от собраного с параметрами по-умолчанию (просто make). Во всяком случае, визуально разницы в скорости работы системы не заметно. Ну и стабильность такая-же, т.е. ничего не падает.

Стало быть, где-то ещё затык, в памяти или ещё где-нибудь. Обычно процесс компиляции занимает одно ядро целиком, а тут их пять. Можно попробовать выставить -j ещё побольше, посмотреть, что изменится. А, и последить сразу и за загрузкой проца, и за load average через тот же htop.

—

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Это 4-х ядерный процессор.

Я в курсе. И?

—

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

krigstask написал:
Обычно процесс компиляции занимает одно ядро целиком, а тут их пять. ...

Видимо, имеется в виду 5 процессов компиляции. Хотя, соглашусь, сначала тоже подумал, что речь про 5 ядер :)

Вряд ли, либо автор не умеет правильно строить предложения, что бы было понятно что он хотел сказать.

Спасибо, Ваше мнение очень важно для нас.

—

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Всегда пожалуйста, но согласитесь, построенное вами предложение имеет не однозначную трактовку.

Да, но Viktor101 взял на себя труд расшифровать и пояснить, так что не вижу смысла продолжать это никчёмное обсуждение.

—

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Не стОит столь категорично отниситься по, всего лишь, единственной фразе. И, да, разговор ушел в сторону - что имелось ввиду уже выяснили.

Всё, я разобрался. Это моя ошибка, странно только, что portage не ругался на это. Вместо MAKEOPTS было указано MAKEOPT. Исправил и загрузка стала 100% на каждом ядре. Разумеется, и скорость сборки возрасла. Всем спасибо за участие.

А на что ему ругаться, взял значение по умолчанию и пошёл дальше. make.conf — это же сборище переменных для Portage и всё

—

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Ну на неправильный PORTDIR_OVERLAY он ругается аж бегом :)

На неправильное значение переменной или PRTDR_OVRLAY? Тут наличествует принципиальная разница, знаете ли.

—

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.