Хочется очень сильно прокричать как меня начала раздражать компиляция в Source Based системах. Надеюсь крик услышат и сбегутся арчиводы и гентушники и наваляют мне люлей.
Напомню отрезок времени, когда миром ПК правили x86, то есть 32 разрядные CPU.
286
386
486
586 - Pentium
686 - Pentium II + MMX
686 - Pentium III + SSE
Когда мир был только 32битным, компиляция позволяла задействовать новые возможности CPU. Представьте что у вас Pentium III (686 CPU), а бинарные пакеты в системе скомпилированы под 586, ведь кроме вас есть и другие люди, у которых нет топовых процессоров, а разработчики не могут компилировать под все процессоры и выкладывать в своих различных репозиториях.
Source Based FreeBSD и дистрибутивы Linux давали реальную возможность на серверах ускорить программы, например MySQL, перекомпилируя программу с задействованием новых инструкций CPU.
Но это был старый мир - 32 бит. Он упёрся в "потолок". Новые процессоры уже 64 бита и время 32 бит уходит. Разработчики периодически сообщают, что переходят на компиляцию готовых бинарников своих систем на уровень выше, например с 586 на 686. У кого процесоры 586 поколения будут вынуждены искать выход самим. Считается, что большинство уже использует более современные процессоры и не стоит компилировать без новых возможностей CPU. То есть существует некий "низ" в виде предкомпилированных бинарников, который стремится к "потолку" 32 бит. То есть образно говоря, перекомпилировать самостоятельно программу в Source Based FreeBSD или Linux вместо использования уже готовой версии разработчика - с каждым днём имеет всё меньше смысла.
64 битные процессоры - это новое поколение. Эта некая черта, с которой начался новый отсчёт. Откомпилированные бинарники от разработчика ничем не отличаются от скомпилированных вами на вашем 64 битном CPU. Если учесть, что на серверах требуются большие объёмы ОЗУ и часто устанавливается 64 битная операционная система - смысл в Source Based на 64 битах вообще отпадает. Ведь разработчик не компилирует на вымышленном "старом 64 битном процессоре аля 586".
Получается картина, что в уходящей 32 битной платформе, разработчики компилируют для нас всё выше и выше "версией" 32 бит и приближаются к потолку.
В 64 битах вообще равенство. Бинарник от разработчика не отличается от вашего.
Моё личное мнение, что не нужно делать из компиляции лекарство от всех бед. Помогает? Да. Но минусы и цену компиляции знать тоже нужно.
Современные пакеты стали настолько сложными с миллионными строками кода, что компиляция тяжелых пакетов дело не быстрое, даже если применять разные ухищрения, такие как количество компилирующих потоков аля make -j3 или кэширование результатов компилирования. То есть на компиляцию уходит время, которое бывает дорогим.
Я конечно шучу и тролю, но мне кажется фанаты Source Based дистров Linux или FreeBSD когда заканчивают компилить что-то типа LibreOffice, то выходит новая версия и нужно компилировать заново .
Сам одно время использовал FreeBSD в качестве Desktop. Сейчас всё вспоминается как тихий ужас.
Многие фанаты Source Based забывают, что в Package Based системах есть возможность установить программу из исходников, не нарушая систему. Например, в нежно любимой Ubuntu доступны deb-src и утилита apt-build сама скачает, скомпилирует и установит программу. То есть если поставить Ubuntu Server LTS, с поддержкой 5 лет, то можно развернуть некритичные программы из бинарных пакетов, у которых есть цифровая подпись и контрольная сумма. А важные компоненты, например MySQL установить из исходников с помощью apt-build, который возьмёт код программы из репозитория. Данный ход позволит нивилировать минусы Source Based и воспользоваться плюсами Package Based.
Считаю, что серьёзные проекты, у которых главная задача "быстродействие", никогда не делают ставку на одну лишь компиляцию. Масштабируется серьезный проект не так, а за счёт продуманных алгоритмов и грамотно спланированным распределением между нодами, шардами, серверами.
Почитайте архитектуры высоконагруженных систем. Никого не пугает использование, например, языка Python, в котором компиляция, вообще, налету делается. То есть серьёзные решения не обязательно предполагают заточенный под процессор вылизанный исходник языка С.
Почему меня последнее время бесит Source Based? На свежеустановленной FreeBSD установка файлового менеджера Midnight Commander из портов занимает часы, так как на свежей системе еще нет массы библиотек, а зависимости даже простой программы тянут тонны исходников, которые нужно откомпилировать.
Сидеть наблюдать долгое время этот процесс, который, кстати, может закончиться неудачно - это для меня последнее время стало невыносимо.
Похожие материалы:
Source Based FreeBSD против Package Based Linux.
Немає коментарів:
Дописати коментар