Go разработчик в команду Perforator в Поиск

Яндекс

Go разработчик в команду Perforator в Поиск

Москва

Описание вакансии

Код тысяч сервисов Яндекса выполняется на миллионах ядер, и любая оптимизация в масштабах всей компании позволяет сэкономить значительное количество ресурсов. Есть множество механизмов для нахождения узких мест, но лучше всего себя показывает 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
Посмотреть контакты работодателя

Адрес

Похожие вакансии

Яндекс
Полный день
  • Москва

  • Не указана

Рекомендуем
ФГУП ПВС МВД России

Golang-разработчик

ФГУП ПВС МВД России

Полный день
  • Москва

  • Не указана

Рекомендуем
Яндекс
Полный день
  • Москва

  • Не указана

Рекомендуем
INFOWATCH
Полный день
  • Москва

  • Не указана

VK
Удаленная работа
  • Москва

  • Не указана

Квантбокс
Полный день
  • Москва

  • до 300000 RUR

БУЛАТ
Полный день
  • Москва

  • до 300000 RUR

Флат
Полный день
  • Москва

  • до 300000 RUR

RT
Полный день
  • Москва

  • до 300000 RUR

Научно-Производственное Объединение Интеллектуальные Технические Системы

Golang-разработчик

Научно-Производственное Объединение Интеллектуальные Технические Системы

Полный день
  • Москва

  • до 300000 RUR

АМИКОН
Полный день
  • Москва

  • до 300000 RUR

Яндекс
Полный день
  • Москва

  • до 300000 RUR

Эвотор
Полный день
  • Москва

  • до 300000 RUR

Node.js developer/Node.js разработчик

Новосельцева Вита Евгеньевна

Удаленная работа
  • Москва

  • до 300000 RUR

Р-Софт
Удаленная работа
  • Москва

  • до 300000 RUR

Ozon
Полный день
  • Москва

  • до 300000 RUR

ФГАНУ Центр информационных технологий и систем органов исполнительной власти

Backend Разработчик - Go (Офис)

ФГАНУ Центр информационных технологий и систем органов исполнительной власти

Полный день
  • Москва

  • до 180000 RUR

Frank RG
Полный день
  • Москва

  • до 180000 RUR

Хотите оставить вакансию?

Заполните форму и найдите сотрудника всего за несколько минут.
Оставить вакансию