summaryrefslogtreecommitdiff
path: root/lfs-12.2-sysv/chapter04/aboutsbus.html
blob: 82bd9b90e8f34bdb8ef4494eb2f61f8fbaea8f53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
    <title>
      4.5. О SBU (Стандартная единица времени сборки)
    </title>
    <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" />
    <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" />
    <link rel="stylesheet" href="../stylesheets/lfs-print.css" type=
    "text/css" media="print" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>
  <body class="lfs" id="lfs-12.2">
    <div class="navheader">
      <h4>
        Линукс с нуля - Версия 12.2
      </h4>
      <h3>
        Глава 4. Заключительный этап подготовки
      </h3>
      <ul>
        <li class="prev">
          <a accesskey="p" href="settingenvironment.html" title=
          "Настройка окружения">Пред.</a>
          <p>
            Настройка окружения
          </p>
        </li>
        <li class="next">
          <a accesskey="n" href="abouttestsuites.html" title=
          "О наборах тестов">След.</a>
          <p>
            О наборах тестов
          </p>
        </li>
        <li class="up">
          <a accesskey="u" href="chapter04.html" title=
          "Глава 4. Заключительный этап подготовки">Наверх</a>
        </li>
        <li class="home">
          <a accesskey="h" href="../index.html" title=
          "Линукс с нуля - Версия 12.2">Начало</a>
        </li>
      </ul>
    </div>
    <h1 class="sect1">
      <a id="ch-preps-aboutsbus" name="ch-preps-aboutsbus"></a>4.5. О SBU
      (Стандартная единица времени сборки)
    </h1>
    <div class="sect1" lang="ru" xml:lang="ru">
      <p>
        Многие люди хотели бы знать заранее, сколько примерно времени
        потребуется для компиляции и установки каждого пакета. Поскольку
        Linux From Scratch может быть собран на различных системах,
        невозможно дать точную оценку времени. Сборка самого большого пакета
        (gcc) займет около 5 минут на быстрых системах, но может занять
        несколько дней на более медленных компьютерах! Вместо фактического
        времени в книге используется показатель "стандартная единица времени
        сборки" (SBU).
      </p>
      <p>
        Показатель SBU рассчитывается следующим образом. Первым пакетом,
        который нужно скомпилировать, является binutils в <a class="xref"
        href="../chapter05/chapter05.html" title=
        "Глава 5. Сборка кросс-тулчейна">Глава&nbsp;5</a>. Время, необходимое
        для компиляции этого пакета с использованием одного ядра, будет
        называться стандартной единицей времени сборки или SBU. Время
        компиляции остальных пакетов будет рассчитано относительно этого
        времени.
      </p>
      <p>
        Например, рассмотрим пакет, время компиляции которого составляет 4,5
        SBU. Это означает, что если вашей системе потребовалось 4 минуты для
        компиляции и сборки первого прохода binutils, то для сборки этого
        пакета потребуется <span class="emphasis"><em>примерно</em></span> 18
        минут. К счастью, в большинстве случаев, время сборки меньше, чем у
        binutils.
      </p>
      <p>
        В целом, величина SBU не совсем точна, поскольку она зависит от
        множества факторов, начиная от версии GCC хост-системы. Она приведены
        здесь, чтобы дать оценку того, сколько времени может потребоваться
        для сборки пакета, но в некоторых случаях цифры могут отличаться на
        десятки минут.
      </p>
      <p>
        В современных материнских платах есть возможность управлять тактовой
        частотой процессора. Это можно сделать с помощью команды, такой как,
        <span class="command"><strong>powerprofilesctl</strong></span>.
        Данная возможность отсутствует в LFS, но может быть доступна в
        хост-дистрибутиве. После сборки LFS управление производительностью и
        электропитанием можно добавить в систему с помощью инструкций,
        описанных на странице <a class="ulink" href=
        "https://mirror.linuxfromscratch.ru/blfs/view/12.2/sysutils/power-profiles-daemon.html">
        BLFS power-profiles-daemon</a>.
      </p>
      <p>
        Перед измерением времени сборки любого пакета рекомендуется
        задействовать профиль энергопотребления системы, настроенный на
        максимальную производительность (и максимальное энергопотребление).
      </p>
      <p>
        В противном случае измеренное значение SBU может быть неточным,
        поскольку система может по-разному реагировать на сборку <a class=
        "xref" href="../chapter05/binutils-pass1.html" title=
        "5.2. Binutils-2.43.1 - Проход 1">binutils-pass1</a> или других
        пакетов.
      </p>
      <p>
        Имейте в виду, что даже если для обоих пакетов используется один и
        тот же профиль, все равно могут возникнуть существенные неточности,
        поскольку система может реагировать медленнее, если система
        простаивает при запуске процедуры сборки. Установка для профиля
        питания режима <span class="quote">«<span class=
        "quote">производительность</span>»</span> сведет к минимуму эту
        проблему. И, очевидно, это также ускорит сборку LFS.
      </p>
      <p>
        Если <span class="command"><strong>powerprofilesctl</strong></span>
        доступен, введите команду <span class=
        "command"><strong>powerprofilesctl set performance</strong></span>,
        чтобы выбрать профиль <code class=
        "literal">производительность</code>. Некоторые дистрибутивы для
        управления профилями предоставляют команду <span class=
        "command"><strong>tuned-adm</strong></span> вместо <span class=
        "command"><strong>powerprofilesctl</strong></span>, в этих
        дистрибутивах введите команду <span class="command"><strong>tuned-adm
        profile throughput-performance</strong></span>, чтобы выбрать профиль
        <code class="literal">производительность</code>.
      </p>
      <div class="admon note">
        <img alt="[Примечание]" src="../images/note.png" />
        <h3>
          Примечание
        </h3>
        <p>
          Когда используется несколько ядер, единицы измерения SBU будут
          различаться еще больше, чем обычно. В некоторых случаях make просто
          завершится ошибкой. Анализ выходных данных процесса сборки также
          будет более сложным, поскольку строки разных потоков будут
          чередоваться. Если вы столкнулись с проблемой на этапе сборки,
          вернитесь к сборке на одном ядре, чтобы проанализировать сообщения
          об ошибках.
        </p>
        <p>
          Представленные здесь значения времени для всех пакетов (за
          исключением <a class="xref" href="../chapter05/binutils-pass1.html"
          title="5.2. Binutils-2.43.1 - Проход 1">binutils-pass1</a>, который
          собирается на одном ядре) рассчитаны при использовании четырех ядер
          (-j4). Время, указанное в главе 8, также включает время выполнения
          регрессионных тестов для пакета, если не указано иное.
        </p>
      </div>
    </div>
    <div class="navfooter">
      <ul>
        <li class="prev">
          <a accesskey="p" href="settingenvironment.html" title=
          "Настройка окружения">Пред.</a>
          <p>
            Настройка окружения
          </p>
        </li>
        <li class="next">
          <a accesskey="n" href="abouttestsuites.html" title=
          "О наборах тестов">След.</a>
          <p>
            О наборах тестов
          </p>
        </li>
        <li class="up">
          <a accesskey="u" href="chapter04.html" title=
          "Глава 4. Заключительный этап подготовки">Наверх</a>
        </li>
        <li class="home">
          <a accesskey="h" href="../index.html" title=
          "Линукс с нуля - Версия 12.2">Начало</a>
        </li>
      </ul>
    </div>
  </body>
</html>