LINUX-BG Адрес : http://www.linux-bg.org |
Използване на distcc и ccache |
От: peio Публикувана на: 28-01-2004 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=358436495 |
1. УводВсеки от нас е компилирал програми от изходен код и всеки знае колко време и ресурси отнема това. Тази статия има за цел да ви запознае с два проекта, чиято цел е да направят този процес по-бърз.
Distcc (distcc.samba.org) разпределя компилирането на приложения писани на C, C++, Objective C или Objective C++ между свързани в мрежа компютри, като целта му е да използва максимално добре ресурсите на всеки от тях.
2. Инсталиране на dictccМного е вероятно да намерите прекомпилиран пакет на distcc във вашата дистрибуция, а ако такъв няма може да потърсите такъв на сайта на проекта или да го компилирате от изходен код. Потребителите на Slackware могат да намерят готов пакет в slackware/d/ директорията на дистрибутива. 3. Инсталиране на ccache
За Slackware готов пакет може да намерите от slackware/d/ директорията на дистрибутива. Там версията на ccache е 2.2, а ако искате да ползвате последната към момента на писане 2.3 може да свалите кода от сайта на проекта.
Разархивирането, компилирането и инсталирането стават с добре познатите ни :
4. Стартиране на distccd
При стартирането на distccd трябва да се укажат хостовете между които ще се разпределя компилацията. Това става с задаването им в променлива на обкръжението DISTCC_HOSTS:
Демонът distccd трябва да бъде стартиран на всички машини, между които ще бъде разпределена компилацията. Това става с подаването на опцията --daemon . С опцията --allow можем да укажем ip адресите, на които е разрешено да участват в процеса. Опцията --user служи за указване на потребителя, като който ще работи демона. Друга полезна възможност е да укажем приоритета на процеса с опцията --nice. Ето пример за това как може да стартираме distccd:
Още веднъж напомням, че демона трябва да бъде стартиран на всички машини, между които ще се разпредели компилацията. 5. Използване на dictccd
За примерите в тази статия ще използваме компилирането на ProFtpd. Няма да се спирам на различните конфигурационни опции, а акцентът ще падне върху използването на distcc. Първо при изпълнението на ./configure скрипта задаваме използването на distcc с:
Следващата стъпка е да укажем на make максималния брой на едновременните процеси с опцията -j. Препоръчителната стойност е два пъти броя на процесорите, между които ще се извършва компилацията:
След това работата по компилирането трябва да започне и да бъде разпределена между всички машини. Добър графичен инструмент за наблюдение на процеса е distccmon-gnome, а ако той липсва на вашата система може да ползвате текстовия distccmon-text. 6. Използване на ccache
Ccache се използва като се укаже използването му преди компилатора, който ще ползваме :
Ако ще ползваме distcc и ccache едновременно указваме това чрез :
Логично е да се напомни, че ефектът от ccache ще се прояви на втората и и следващи компилации, тъй като на първата се създава кеша. Информация за състоянието на кеша можем да получим като изпълним ccache -s. Чрез променливата на обкръжението CCACHE_DIR се указва в коя директория ще се създаде кеша, директорията по подразбиране е ~/.ccache/. Максималния обем на кеша се задава чрез опцията -М, а максималния брой на файловете чрез опцията -F . При компилирането на линукс ядрото при процеса на конфигуриране нямаме възможност да укажем опциите за C компилатора по горния начин. И затова трябва да го укажем в Makefile-а или по долния начин :
7. Тестове и резултатиЗа да тествам ползата от използването на distcc и ccache използвах домашната си мрежа, която се състои от два компютъра свързани директно един с друг с мрежови карти подържащи до 100Mbit трансфер. Първата машина е с процесор Duron 1200 MHZ с 256 DDR RAM , а втората е с процесор Pentium III 800MHZ и 128 SDRAM. И на двете машини е инсталиран Slackware 9.1 .
Основните тестове направих върху компилирането на ProFtpd. Нормално само на моята машина се компилира приблизително за 40 секунди. За да замеря времето използвах командата time -p като взимам предвид real времето (т.е. времето от извикването до изхода) като го изпълнявах няколко пъти, за да добия средна стойност. 8. Заключение и благодарности
Този документ не претендира за точност и изчерпателност, а само отразява личния ми опит. Ако имате забележки, корекции или допълнения - моля, изпращайте ги на peio@peio.org .
Автор: Пейо Попов << PPP over SSL. Част 1: Сървър | Как да инсталираме драйверите на ATI >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|