Владимир Кривопалов (vnkrivopalov), 39 лет, Россия, КалининградВладимир Кривопалов (vnkrivopalov), 39 лет, Россия, Калининград

Владимир Кривопалов

Системный программист и разработчик C++/Rust с опытом в разных областяхБэкенд разработчикСистемный инженерСтарший (Senior)
Ищу работу

Контакты

Войти
Возраст: 39 лет
Опыт работы: 19 лет и 3 месяца
Регистрация: 15.08.2006
Последний визит: 1 день назад
Гражданство: Россия
Местоположение: Россия, Калининград
Дополнительно: готов к удаленной работе
Знание языков: Английский С1

Обо мне

Системный программист C++/Rust.

Работал в разных доменах: сетевые решения, сервера баз данных, встроенные системы.

Навыки

Выберите навык, чтобы посмотреть, какие тесты специалист уже прошел.

Системное программирование
Разработка программного обеспечения
Техническая поддержка
C++
C++ stl
C++ boost
Rust
Linux
Embedded linux
Встраиваемая система
Сетевые технологии
Высоконагруженные системы
NoSQL
Git

Опыт работы

  • Roku
    Инженер встраиваемых систем (Старший)Senior Software Engineer
    Февраль 2020 — Сентябрь 2025 (5 лет и 8 месяцев)

    Работал в команде Performance&Reliability Team над операционной системой RokuOS.

    Оптимизировал запуск каналов.

    • Перенёс рендеринг экрана заставки с главной графической плоскости на оверлей, чтобы избежать задержки при запуске канала. Это позволило ускорить запуск на 600мс (порядка 15-20% от среднего времени запуска).
    • Исследовал и решил проблему с долгим (7-10 секунд) времен выхода с каналов на главный экран на платформах Roku с малым объёмом RAM (256 и 384Mb), вызванную сложностями с выделением буфера для декомпрессии данных zstd из squashFS во время пробуксовки (thrashing).
    • Совместно с командой MediaPlayer Team исследовал и помог решить проблему задержек при воспроизведении медиа после декомпозиции медиаплейера на компоненты, взаимодействующие через IPC.

    Спроектировал и реализовал контроль процессов в системе RokuOS с помощью Linux cgroups.

    • Подсистемы CPU и memory cgroups использованы для того, чтобы мягко контейнеризовать процессы в системе и не дать одному процессу оставить другие без необходимых им ресурсов.
    • Реализовал конфигурацию cgroups из руководящего процесса и возможность подписаться на уведомления от подсистемы памяти, чтобы заранее реагировать, если использование памяти превышает допустимый порог.
    • Отладил работу cgroups в более старых версиях ядра, портировал фиксы из новых версий.

    Занимался разработкой и расширением функционала системы LMK (Low Memory Killer) в RokuOS, которая освобождает память при её острой нехватке.

    • Перенёс функционал LMK из модуля ядра в сервисный процесс.
    • Добавил подписку на события PSI (pressure stall information).

    Анализировал метрики стабильности различных платформ Roku, решал выявленные проблемы и добавлял новые метрики, показывающие более полную картину.

    • Метрики по контролю памяти с помощью cgroups.
    • Метрики по отслеживанию утилизации своп-раздела при своппинге tmpfs-файлов и shm-буферов.

    Портировал новый метод управления памятью в ядре Линукс MGLRU (multigenerational LRU) на платформы RokuOS, работающие на ядре версии 5.4.

  • Поставка широкого диапазона устройств и сервисов, программного обеспечения и ИТ-услуг
    Более 5000 сотрудников
    Системный инженер (Старший)Senior Software Engineer
    Декабрь 2018 — Январь 2020 (1 год и 2 месяца)

    Занимался разработкой Azure Web Application Firewall.

    Работа над модулем ModSecurity.

    • Реализовал отложенный анализ в режиме обнаружения (detection mode). В отличие от режима предотвращения атаки (prevention mode), в режиме обнаружения не было необходимости задерживать входящий запрос до конца анализа. Это позволило ускорить прохождение запросов в 2-5 раз в зависимости от количества и набора правил безопасности.
    • Оптимизировал внутреннее представление конфигурации модуля, что позволило избежать утечек памяти при переконфигурации.
    • Спроектировал и реализовал более гибкое применение правил безопасности: по домену и по URI.
    • Общий рефакторинг кода модуля в соответствии с идиомами C++ (RAII, умные указатели и т.п.).

    Реализовал nginx модуль, передающий входящие запросы на анализ движку WAF по gRPC для проекта нового движка WAF NextGen.

    Участвовал в ротации и дежурстве "на звонке", оперативно реагировал на сообщения об отказе в обслуживании.

    Работа с открытым исходным кодом: https://github.com/microsoft/ModSecurity/commits?author=vkrivopalov

  • ScyllaDB
    Разработчик баз данных (Старший)Software Developer
    Ноябрь 2017 — Декабрь 2018 (1 год и 2 месяца)

    Занимался разработкой подсистемы хранения СУБД Scylla.

    • Оптимизировал чтение индекса: вместо считывания файла с индексом целиком использовал бинарный поиск. Поиск с использованием индекса стал выполняться за то же время, но без расхода лишней памяти, который мог достигать сотен мегабайт.
    • Исследовал методом реверс-инжиниринга и изучения исходного кода Cassandra и задокументировал формат хранения данных Cassandra 3.x, известный как SSTables 'mc', позволяющий сократить размер хранимых файлов до 50% в зависимости от типов и структуры данных.
    • Полностью реализовал запись данных в новом формате.

    Работа с открытым исходным кодом: https://github.com/scylladb/scylla/commits?author=vkrivopalov

  • От 10 до 100 сотрудников
    Системный инженер (Ведущий)Principal Software engineer
    Октябрь 2009 — Ноябрь 2017 (8 лет и 2 месяца)

    Занимался поддержкой продукта F5 FirePass: платформы защищённого доступа к корпоративным сетям через SSL VPN.

    • Разбор клиентских кейсов и решение проблем. Работал напрямую с крупными заказчиками: Royal Bank of Scotland, Cathay Pacific и прочими.
    • Написал скрипты для автоматизации сборки виртуального решения FirePass VE.

    Участвовал в реализации поддержки Java-апплетов для реверс-прокси F5 APM.

    • верификация подписей апплетов и подписание переписанного байткода (X.509, OpenSSL).
    • конфигурация опций для патчинга апплетов через реверс-прокси.

    Занимался разработкой интеграции F5 APM с решениями для виртуальных десктопов (VDI).

    • системный дизайн сервиса VDI и его интеграции в общий продукт APM.
    • интеграция APM с решением VDI Horizon от VMWare: нативная аутентификация, поддержка федерации удостоверений SAML, проксирование брокерского протокола и протоколов передачи данных PCoIP и Blast Extreme. Работал напрямую с инженерами VMWare, согласовывал формат необходимых расширений протокола.
    • поддержка аутентификации конечных пользователей через смарт-карты.
  • VerySoft LLC
    Системный инженер (Средний)Инженер-программист
    Август 2008 — Октябрь 2009 (1 год и 3 месяца)

    Участвовал в разработке системы FDE (Full Disk Encryption) - централизованной системы управления десктопами с обязательным шифрованием диска.

    • Реализовал сервис Windows для выполнения команд с центрального сервера.
    • Модифицировал установщик TrueCrypt для сбора пользовательских данных и шифрования диска ключом, хранящимся на центральном сервере.
    • Исследовал проблему "горячей" загрузки Windows из Linux через связку kexec/grub4dos на SATA-приводах.

    Спроектировал и реализовал библиотеку Winsock LSP для перехвата пользовательских сетевых соединений в рамках проекта AllProxy - утилиты для направления трафика через цепочку прокси-серверов.

  • Darim Vision
    Системный инженер (Младший)Инженер-программист
    Июль 2006 — Июль 2008 (2 года и 1 месяц)

    Занимался поддержкой продукта VideoSpider – системы видеонаблюдения компании Darim Vision.

    Реализовал ступенчатое архивирование по расписанию старых видеофайлов с просеиванием и удалением неопорных кадров.

    Разработал библиотеки C++ для работы с протоколами управления медиапотоком RTSP и SDL.

Высшее образование

  • Прикладной Математики и Кибернетики
    Сентябрь 2003 — Февраль 2009 (5 лет и 5 месяцев)

    Диплом специалиста с отличием, специальность "математик".