Проблема distcc: действительно ли это ускоряет компиляцию?

Я установил distcc и Cmake для небольшого C ++ проекта. У меня есть две машины: так что есть один клиент, где компиляция выполняется локально, и один сервер, где компиляция выполняется «удаленно».

Я следовал инструкциям по установке и настройке distcc, но не вижу улучшения при компиляции своего проекта, используя следующие простые шаги:

CXX="distcc g++" cmake my_project && make -j4

Я проверил все, на клиентских и серверных машинах, и не видел конкретного поведения. Все коды возврата 0 (ОК) в журналах и нет сообщений об ошибках. Как будто все работает, но без выигрыша времени. Я также установил инструмент distccmon-gui и проверил, что обе машины используются во время компиляции.

Наконец, я попробовал с 4 машинами и получил те же результаты, то есть 0 улучшений.

Единственное, что выглядит действительно странно, это время общения:

COMPILE_OK exit:0 sig:0 core:0 ret:0 time:151ms
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:156ms
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:182ms
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:201ms
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:163ms
COMPILE_OK exit:0 sig:0 core:0 ret:0 time:202ms

Даже на локальном хосте задержка составляет около 200 мс для каждой выполненной работы.

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

Кто-нибудь уже имел такую ​​проблему с distcc и знает, где я должен искать, или где я должен исследовать? Я действительно застрял в этом и считаю, что distcc должен принести мне дополнительную производительность!

Есть идеи ? пожалуйста помогите: =)

Спасибо

2

Решение

Сколько ядер у вас всего?

Имейте в виду, что работает make -j4 будет использовать 4 ядра в Всего: Если на вашем локальном компьютере 4 ядра и 4 на вашем сервере, вы должны использовать make -j8 или у вас не будет улучшений по сравнению с компиляцией локально.

2

Другие решения

Одной из проблем при распространении сборок является то, насколько хорошо построены файлы make.

Если ваш make-файл не сконструирован таким образом, что на самом деле возможно работать параллельно, то использование distcc, вероятно, не будет иметь большого значения.

Не распространяя сборку на другую машину, вы получаете ускорение с опцией -j 4 по сравнению с -j?
в противном случае вы, вероятно, не увидите ускорение только после разгрузки, если только вы не разгрузитесь на действительно быструю машину, поскольку она, вероятно, выполняет только разгрузку одной работы за раз

0

Не забудьте указать, сколько заданий клиенту разрешено отправлять на любой сервер.

Server/x # where server is the ip and x is the # of jobs

Если вы этого не сделаете, по умолчанию используется значение 4.

0
По вопросам рекламы [email protected]