Разработчик Perforator (C++/Go)
Яндекс ищет разработчика для работы над Perforator — системой always-on профилирования, которая помогает оптимизировать код на миллионах ядер. Основной стек — C++ и Go, задачи включают поддержку профилирования Node.js, разработку хранилища профилей и построение правил раскрутки стека из ассемблера. Требуются глубокие знания алгоритмов, ОС и многопоточности, плюсом будет опыт с eBPF, ассемблером и распределёнными системами.
Зарплата не указана — оценили по рынку
На основе 37 похожих вакансий за 90 дней.
Что предстоит делать
Код тысяч сервисов Яндекса выполняется на миллионах ядер, и любая оптимизация в масштабах всей компании позволяет сэкономить значительное количество ресурсов. Есть множество механизмов для нахождения узких мест, но лучше всего себя показывает always-on-профилировщик — он выполняется на всех серверах одновременно и позволяет получать подробные профили того окружения, в котором исполняется код. Мы смогли построить Perforator — эффективное и неинвазивное решение, позволяющее профилировать все процессы во внутреннем облаке без настройки со стороны пользователя. У системы три основные части: • Хостовый агент: выполняется на всех серверах в дата-центре • Бэкенд: собирает минутные профили с агентов • Хранилище: позволяет строить профили по произвольным запросам Мы успешно выкатили Perforator внутри Яндекса и выпустили его в опенсорс. Сейчас мы разрабатываем и внедряем сложные и важные фичи и оптимизации на уровне всей компании. Наш стек • C++ и Gо. Не страшно, если вы не владеете Go, но готовы научиться: язык простой, и мы готовы помочь с его освоением. Без знания C++ будет сложно: требовательные к производительности места мы пишем на «плюсах». • Мы пишем под Linuх, анализируем процессы внутри ядра с помощью eBPF (урезанный по функциональности диалект C). • Храним профили в ClickНouse, S3, PostgreSQL. Какие задачи вас ждут Поддержка профилирования Node.js Вам предстоит поддерживать профилирование интерпретируемых языков Node.js. Мы хорошо профилируем нативные языки и умеем обрабатывать некоторые интерпретируемые/JIT-компилируемые языки, вам нужно будет встроить Node.js в существующий код, учтя все его особенности. Разработка эффективного хранилища профилей Вам нужно будет научиться строить сложные агрегаты по историческим данным, чтобы по нажатию одной кнопки быстро показывать профиль конкретного сервиса. Ещё одна задача — раскраска строк кода в зависимости от количества ресурсов, потраченных на их исполнение. Так мы узнаем, к примеру, что re-hash HashMap съедает 100 тысяч ядер по всему флоту, а разработчики поймут, насколько важно оптимизировать их код. Построение правил раскрутки из ассемблера Сейчас мы строим правила для быстрой раскрутки стека из DWARF-информации по бинарю. Но иногда DWARF-информации нет, например в общих библиотеках. Чтобы раскручивать стеки с участием таких функций, предлагается по ассемблеру уметь раскручивать стек, смотря на изменение регистра RSP. Мы ждём, что вы • Хорошо знаете базовые алгоритмы и структуры данных • Разбираетесь в механизмах работы компьютера и операционных систем • Умеете писать надёжный и читаемый многопоточный код Будет плюсом, если вы • Слышали про eBPF и код ядра Linux • Не боитесь копаться во внутренностях программ, готовы сидеть часами в GDB или RR • Знакомы с ассемблером и Calling Convention. Понимаете, зачем нужны Frame Pointers и как с ними раскрутить стек, зная только значение RBP • Понимаете в форматах ELF и DWARF • Разбираетесь в распределённых системах • Имеете успешный опыт участия в CTF
Стек и инструменты
Подходит ли вам эта вакансия?
Зарегистрируйтесь и загрузите резюме — посчитаем % совпадения с этой вакансией, подсветим сильные стороны и что стоит подтянуть
Ещё в Яндекс
10 активных вакансий в компании
Backend-разработчик (Kotlin/Java)
~1 163 800 – 2 146 375 ₸ оценка
Ищем опытного backend-разработчика (от 6 лет) для развития сервиса командировок в крупной IT-компании. Стек: Kotlin, Java 21, Spring, PostgreSQL, gRPC. Задачи: разработка продуктовых решений, интеграции, улучшение архитектуры и производительности. Возможна удалённая работа или гибрид в Москве, Санкт-Петербурге, Екатеринбурге.
Backend-разработчик (Go) в Яндекс Pay
~2 219 799 ₸ оценка
Команда Яндекс Pay ищет Go-разработчика для развития ядра платёжного бэкенда: микросервисы транзакций, интеграции с процессингами, event-driven архитектура. Требуется опыт с Go, PostgreSQL, микросервисами и понимание распределённых систем. Предлагается работа над высоконагруженной платформой с фокусом на надёжность и консистентность данных.
C++ разработчик PostgreSQL/YDB
~2 178 699 ₸ оценка
Разработка слоя совместимости между PostgreSQL и YDB для горизонтального масштабирования и отказоустойчивости. Требуется сильный C++, глубокое понимание внутренностей PostgreSQL и распределенных систем. Предлагается работа над сложными архитектурными задачами и техническое лидерство в команде.
Разработчик бэкенда LLM-моделей (C++)
~1 500 000 ₸ оценка
Команда Яндекса ищет разработчика для работы над бэкендом LLM-моделей (YandexGPT/Алиса). Задачи включают инференс на GPU, оптимизацию распределения вычислений и разработку компонентов системы. Требуется уверенное знание C++, алгоритмов и многопоточного программирования.
Похожие вакансии
6 вакансийРазработчик Unreal Engine 5
~1 500 000 ₸ оценка
Ищем разработчика Unreal Engine 5 для создания систем постоянного онлайн-мира. Роль full-stack: от клиентского UI до серверной валидации и персистентности. Требуется 2+ года опыта с UE5, уверенный C++, глубокое знание репликации и серверно-авторитетной архитектуры. Предлагают удаленную работу, конкурентоспособную оплату и значимую роль в создании новой игры.
Middle разработчик на C (СХД)
~1 500 000 ₸ оценка
Разработка микросервисного приложения для управления функционалом СХД на C под Linux. Нужен уверенный C, Linux, Git, Bash, желательно знание ZFS/LVM. Компания предлагает удаленную или гибридную работу, ДМС и стабильность.
Разработчик ROS/ROS2 (робототехника)
~1 500 000 ₸ оценка
Разработчик ROS/ROS2 для создания системы автономной инспекции на базе робособак. Нужно разрабатывать пакеты и ноды на Python/C++, интегрировать сенсоры и оборудование, участвовать в испытаниях. Требуется опыт с ROS/ROS2, Linux, Git. Компания предлагает официальное оформление, обучение и ДМС.
C++ Developer (Desktop Application)
~1 500 000 ₸ оценка
Разработка desktop-приложения для моделирования нефтегазовых скважин на C++20 и Qt. Нужен опыт с C++, STL, Boost, QML, а также умение проектировать архитектуру. Компания предлагает удалённую работу, гибкий график и возможности для роста.
C++ Developer (Desktop Application)
~1 500 000 ₸ оценка по стеку
Разработка desktop-приложения для моделирования нефтегазовых скважин на C++20 и Qt 6. Нужен опыт с STL, Boost, QML и архитектурным проектированием. Компания предлагает удалённую работу, гибкий график и поддержку релокации.
C++ инженер-программист
~1 500 000 ₸ оценка
Вакансия для C++ разработчика, который будет создавать высокопроизводительные системы и работать с embedded-технологиями. Требуется уверенное знание C++, Linux и многопоточности, плюсом будет опыт с дронами (MAVLink, ArduPilot) и GStreamer. Компания предлагает конкурентную зарплату и профессиональный рост.