diff --git a/README.md b/README.md index 78b1dd0..8c6f4b7 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,99 @@ -# perfd -Linux daemon for automatic profile collection and post-link binary optimization +# Perfd: Системный демон для автоматического применения BOLT + +# Perfd + +В данной работе я построили систему автоматического сбора профильной информации и применения BOLT под названием perfd. + +# Overview + +Программа составляется на языке программирования, например С++. Исходный код программы подается на вход компилятора, который переводит программу в набор инструкций процессора в двоичном представлении. Программа в двоичном представлении загружается в память и исполняется процессором. Чтобы достичь максимальной производительности приложения используется профильная оптимизация. + +Экономическая оценка эффекта применения автоматической оптимизации +1. Оценить количество компьютеров под управлением Linux + - клиенты: Chrome OS, Ubuntu + - серверы +2. Оценить среднюю нагрузку клиентов (низкая) и серверов (средняя) - в процентах +3. Предположить, что основным на клиентских машинах является веб-браузер (найти + статистику), а на серверах - серверные приложения среднего/большого размера. +4. Замерить/оценить эффект от ускорения при помощи BOLT (для браузера на + бенчмарках, для серверных приложений - среднее из статей). +5. Оценить уменьшение требуемого количества серверов, энергопотребления на клиентах. + + +# Relevance + +Человечество на сегодняшний день использует огромные вычислительные ресурсы. [Энергопотребление датацентров по всему миру](https://www.statista.com/statistics/186992/global-derived-electricity-consumption-in-data-centers-and-telecoms/) в 2018 году составляло приблизительно 200 ТВт/ч или 17 млн тонн нефтяного эквивалента в год. Много это или мало? На 2018 год вся Австралия потребляла электроэнергии приблизительно 18 млн тонн нефтяного эквивалента в год. ([источник](https://en.wikipedia.org/wiki/World_energy_supply_and_consumption?oldformat=true#Final_consumption)). + +Ожидается, что объем вычислений и использование сетевых технологий только продолжит расти: согласно прогнозу шведского исследователя [Андреса Андраэ](https://www.nature.com/articles/d41586-018-06610-y), ([статья](https://www.mdpi.com/2078-1547/6/1/117/htm?utm_source=morning_brew)) к 2030 году потребление электричества всеми информационно-телекоммуникационными службами вырастет до 21% всей потребляемой человечеством электроэнергии. Ожидаемая доля дата-центров вырастет до 7.5% мировой электроэнергии. Таким образом в целях сокращения потребления энергоресурсов человечество заинтересовано в повышении эффективности компьютерных вычислений. + +Технологические компании всех размеров заинтересованы в оптимизации собственных приложений с целью экономии электроэнергии и обслуживания большего числа пользователей. + +Самые крупные компании тратят существенные ресурсы на максимальную оптимизацию собственных приложений и инвестируют в разработку новых методов оптимизации. К примеру, Google инвестировал в разработку технологий AutoFDO и ThinLTO +Многие улучшения, разработанные в корпорациях, напрямую применимы к клиентским и серверным приложениям, работающим на компьютерах конечных пользователей и в датацентрах. К таким улучшениям относятся компиляторные оптимизации, реализованные в компиляторах GCC и Clang. К примеру, браузеры Google Chrome и Firefox компилируются при помощи компилятора Clang. + + +# Installation + +___BOLT:___ + + +> git clone https://github.com/facebookincubator/BOLT llvm-bolt + +> mkdir build + +> cd build + +> cmake -G Ninja ../llvm-bolt/llvm -DLLVM_TARGETS_TO_BUILD="X86;AArch64" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="clang;lld;bolt" + +> ninja bolt + + +*** + + +__SQlite:__ + + +pip install sql30 + + + +*** + + +__Python:__ + + +sudo apt install python3.8 +python --version + + +*** + + + +__Perf:__ + + +apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r` + + +# How it works + +В самом начале демон находится в спящем режиме. Затем демон выходит из спящего режима по таймеру и начинает профилировать всю систему в фоновом режиме. Во время профилирования, демон накапливает профиль в базу данных (sqlite). После того, как демон накопил достаточное количество данных, perfd анализирует часто используемые приложения. По достижении заданного количества профиля вызывает BOLT, он начинает автоматически заменять приложения на оптимизированное и сново уходит в спящий режим. + +# Systemd + +__Systemd__ - это менеджер демонов в Linux. Он позволяет управлять запуском сервисов, предоставляет функции мониторинга и логирования. + +___Systemctl enable:___ + +Подключает модуль, чтобы он автоматически запускался при подключении определенного оборудования или зависит от того, что указано в модуле. + +___Systemctl start:___ + +Запускает модуль сразу же. + +# Additional information + +__Presentation__ - https://docs.google.com/presentation/d/1xodupJPIk2-FzrOgCYt3jZlhkjOVFFKKZE3gH0qMzJ8/edit#slide=id.p