Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Команда make  (Прочитано 7052 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Al1en

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
  • В этой жизни нужно не искать себя, а создавать
    • Просмотр профиля
Команда make
« : 16 Января 2015, 22:12:38 »
Здравствуйте, уважаемые форумчане!
У меня к вам такой вопрос: считает ли команда make с параметром "-j" потоки процессора за ядра? Если конкретнее то к примеру у меня стоит intel core i7-3770k (4 ярда, 8 потоков) соответственно с каким значением я могу использовать параметр "j" -j5 (если не считает потоки + 1) или же -j9 (с учетом потоков +1).

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Re: Команда make
« Ответ #1 : 16 Января 2015, 23:47:52 »
С учетом потоков можно. Можете опытным путем проверить скорость сборки ядра.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Al1en

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
  • В этой жизни нужно не искать себя, а создавать
    • Просмотр профиля
Re: Команда make
« Ответ #2 : 17 Января 2015, 00:03:59 »
т.е. потоки тоже считаются как отдельные ядра получается?

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Команда make
« Ответ #3 : 17 Января 2015, 01:04:47 »
Al1en, по собирай что-то крупное, замерь время.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Al1en

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
  • В этой жизни нужно не искать себя, а создавать
    • Просмотр профиля
Re: Команда make
« Ответ #4 : 17 Января 2015, 05:16:12 »
После того как я сломал gcc в своей предыдущей системе мне как-то боязно теперь что-либо собирать на своей системе. Вот приходится все делать на virtualbox'е, а там не протестить такие нюансы полностью :-[

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Команда make
« Ответ #5 : 17 Января 2015, 13:37:48 »
Al1en, как ты мог сломать gcc?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Al1en

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
  • В этой жизни нужно не искать себя, а создавать
    • Просмотр профиля
Re: Команда make
« Ответ #6 : 17 Января 2015, 18:32:08 »
Начал компилировать Linux FS

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Команда make
« Ответ #7 : 17 Января 2015, 18:33:40 »
Al1en, и что произошло?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Al1en

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
  • В этой жизни нужно не искать себя, а создавать
    • Просмотр профиля
Re: Команда make
« Ответ #8 : 17 Января 2015, 23:21:09 »
При установке очередного пакета он просто отказался компилироваться указывая на отсутствие gcc хотя тот был, переустановке не дала ничего нового кроме потери драйверов nvidia и еще пары пакетов. Вот так вот я и распрощался с Kubuntu.

По поводу вопроса уже разобрался, оказывается потоки считаются за ядра и все ок компилируется :)

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Re: Команда make
« Ответ #9 : 18 Января 2015, 01:21:37 »
Al1en,
Компилироваться будет в любом случае сколько бы ядер вы не указали. Вопрос только в скорости.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Al1en

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
  • В этой жизни нужно не искать себя, а создавать
    • Просмотр профиля
Re: Команда make
« Ответ #10 : 18 Января 2015, 02:43:07 »
Ну не знаю насчет скорости, но при компиляции с параметром "-j9" у меня идет загрузка полностью всех ядер почти на 100%. Вот сегодня попробовал gentoo поставить и вместо обычных 2 часов компиляция заняла всего 40 мин, а это я считаю уже результат :)

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Команда make
« Ответ #11 : 09 Апреля 2015, 13:52:20 »
Ну не знаю насчет скорости, но при компиляции с параметром "-j9" у меня идет загрузка полностью всех ядер почти на 100%. Вот сегодня попробовал gentoo поставить и вместо обычных 2 часов компиляция заняла всего 40 мин, а это я считаю уже результат :)

тема хорошая, поэтому я дополню детали - может кому-то пригодится:

1. То, что вы называете потоки ядра - это гипертриэдинг: некоторые (не все!) функциональные блоки процессора задублрованы и могут отчасти работать параллельно, т.е. у вас 4 процессора с гипертриэдингом, и не нужно сильно мудрить. Использование гипертриэдинга позворляет иногда (в зависимости от типа задач) повысить производительность ... максимум пишут (в рекламе!) на 30%, реально на 10-20%, иногда на 0% в зависимости от вида задачи. Так что не нужно сильно обольщаться.
Детально тесты и т.д. можете почитать здесь: Параллелизм, конкурентность, многопроцессорность в Linux.

2. Иногда при сборке больших приложений то, что проходит с -j1 (или без -j что то же самое), завершается ошибкой с -j (там идёт распараллеливание fork() на N процессов, и они одновременно обращаются к одним файлам). Это имеет место на сборке некоторых версий kernel.

3. Используйте -j без числа, и make сам попробует использовать максимальное число процессов, доступное на вашем железе.

Оффлайн ru_kane

  • Активист
  • *
  • Сообщений: 958
  • Kubuntu Desktop 20.04 & Ubuntu Server 20.04
    • Просмотр профиля
    • www.kane.ru
Re: Команда make
« Ответ #12 : 12 Апреля 2015, 14:08:39 »
Ну не знаю насчет скорости, но при компиляции с параметром "-j9" у меня идет загрузка полностью всех ядер почти на 100%. Вот сегодня попробовал gentoo поставить и вместо обычных 2 часов компиляция заняла всего 40 мин, а это я считаю уже результат :)
j9 это черезчур, может сыграть обратный эффект замедляющий скорость компиляции. Вообще, рекомендуется количество ядер + 1.
Ну, иногда можно количество ядер * 2.
Kubuntu Desktop 20.04 [Intel Core i5-8600K, Asus ROG STRIX Z370-F Gaming, ASUS STRIX-GTX1050TI-4G-GAMING]

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7215
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Команда make
« Ответ #13 : 12 Апреля 2015, 14:24:23 »
Зачем -j9? -j8, т.к. у тебя 8 потоков, а не 9.

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Команда make
« Ответ #14 : 12 Апреля 2015, 19:57:36 »
т.е. потоки тоже считаются как отдельные ядра получается?

Не только make, но все механизмы Linux считают гипертриэдинговые потоки как и ядра процессора, см.:
$ cat /proc/cpuinfo
Только вовлечение этих потоков в вычисления (не только make, но любые) повышает суммарную производительность не на 100%, как если бы это был процессор/ядро, а на 15-20% ... где-то встречалось указание 30% максимум.
Иногда не повышает вовсе, в зависимости от типа вычислительной нагрузки.


Пользователь решил продолжить мысль [time]12 Апрель 2015, 20:58:16[/time]:
j9 это черезчур, может сыграть обратный эффект замедляющий скорость компиляции.
Какой это такой обратный эффекет?

Пользователь решил продолжить мысль [time]12 Апрель 2015, 21:02:11[/time]:
Зачем -j9? -j8, т.к. у тебя 8 потоков, а не 9.
Вообще то говоря, значение параметра -j у make напрямую никак не связан с числом процессоров, ядер, или гипертриэдинговых потоков...
Параметр -j - это то, сколько раз быдет выполнять fork() при своём запуске make - число параллельных процессов, в которые будет выполняться компиляция. Хоть на одном процессоре...

Другой вопрос, какая будет эффективность от соотношения -j и числа доступных процессоров.
« Последнее редактирование: 12 Апреля 2015, 20:03:17 от Olej »

 

Страница сгенерирована за 0.017 секунд. Запросов: 21.