Мы смогли построить Perforator — эффективное и неинвазивное решение, позволяющее профилировать все процессы во внутреннем облаке без настройки со стороны пользователя.
У системы три основные части:
Мы успешно выкатили Perforator внутри Яндекса и выпустили его в опенсорс. Сейчас мы разрабатываем и внедряем сложные и важные фичи и оптимизации на уровне всей компании.
Присоединившись к нам, вы будете разрабатывать новые фичи и совершенствовать существующие, тем самым помогая разработчикам Яндекса и опенсорс-комьюнити оптимизировать свои сервисы.
Наш стек
Поддержка профилирования Node.js Вам предстоит поддерживать профилирование интерпретируемых языков Node.js. Мы хорошо профилируем нативные языки и умеем обрабатывать некоторые интерпретируемые/JIT-компилируемые языки, вам нужно будет встроить Node.js в существующий код, учтя все его особенности.
Разработка эффективного хранилища профилей Вам нужно будет научиться строить сложные агрегаты по историческим данным, чтобы по нажатию одной кнопки быстро показывать профиль конкретного сервиса. Ещё одна задача — раскраска строк кода в зависимости от количества ресурсов, потраченных на их исполнение. Так мы узнаем, к примеру, что re-hash HashMap съедает 100 тысяч ядер по всему флоту, а разработчики поймут, насколько важно оптимизировать их код.
Построение правил раскрутки из ассемблера Сейчас мы строим правила для быстрой раскрутки стека из DWARF-информации по бинарю. Но иногда DWARF-информации нет, например в общих библиотеках. Чтобы раскручивать стеки с участием таких функций, предлагается по ассемблеру уметь раскручивать стек, смотря на изменение регистра RSP.
Больше о бэкенде в Яндексе — в канале Yandex for Backend