Рабочие места: Анна Воробьева, ведущий разработчик виртуальных машин в компании Parallels

Девушки преуспевают в типично мужских занятиях, и этот факт уже давно перестал восприниматься как общественный феномен. Сегодняшняя героиня рубрики Анна Воробьева может дать сто очков вперед любому мужчине ИТ-профессионалу. Она – ведущий разработчик одного из ключевых компонентов виртуальных машин в компании Parallels. Самое время выяснить, как ей работается в области системного программирования и есть ли, на ее взгляд, место девушкам в командах софтверных инженеров.

👌 В телеграм-канале «Лайфхакер» лучшие статьи о том, как сделать жизнь проще.

Чем вы занимаетесь на работе?

Я – ведущий разработчик core-команды в компании Parallels. Core-команда занимается созданием и совершенствованием так называемого монитора виртуальной машины – центрального компонента виртуализации во всей линейке гипервизорных продуктов Parallels. Именно в мониторе создается иллюзорный процессор, память, все устройства.

Согласна, это несколько нетипичное занятие для девушки. За мою карьеру в IT следует благодарить родителей – они очень пеклись о будущем для своего вполне гуманитарного чада. Но уже в институте (в МЭСИ) я столкнулась настоящими IT-фанатиками, которые были готовы днями напролет говорить об устройстве операционных систем. Двое самых продвинутых ребят пошли в Parallels, когда она была совсем маленькой компанией. Они так увлекательно рассказывали об уровне решаемых задач и об атмосфере в коллективе, что их истории в конечном счете помогли сделать выбор места работы.

Непрерывный драйв вряд ли возможен в работе. Труд софтверного инженера – не исключение. Случаются как творческие подъемы, так и периоды творческой апатии. Но в целом виртуализация и облачные вычисления не дают соскучиться. В этой отрасли постоянно что-то происходит, нужно отвечать этим новым вызовам. Кроме того, мы постоянно совершенствуем свой код, свои технологии, все время чему-то учимся. Особенно много дают поездки на международные конференции.

Наш монитор виртуальной машины общий для всей линейки продуктов с гипервизорной виртуализацией — Parallels Desktop, Parallels Workstation, Parallels Server. По сути монитор — это такая микро-операционная система, которая живет по своим правилам, со своими аллокаторами памяти, отложенными вызовами, таймерами и синхронизациями. И при этом монитор совершенно невидим для хостовой операционной системы — приложение обращается к драйверу, драйвер начинает работу и – а тут магия! — мы уже в мониторе, а не в операционной системе. Собственно, этот магический переключатель контекстов со всеми его универсальностями на голом ассемблере – повод для моей профессиональной гордости. Он, ну и еще сильно улучшенная плотность виртуальных машин на единицу оборудования в серверном продукте Parallels Server Bare Metal. Мы там такого с памятью наворотили, что любо-дорого посмотреть.

В ходе поиска оптимальных решений работы Virtual Machine Monitor мне приходится закапываться очень глубоко в ядро операционных систем. Узнай об этом разработчики ОС, они, наверное, очень бы удивились. Трудно поверить, но даже в системах от Apple время от времени бывают ошибки. Когда мы впервые спортировали наш известный среди «маководов» Parallels Desktop (PD) на 64-битное приложение, хостовая Mac OS стала сама по себе абсолютно хаотично перегружаться или повисать насмерть. Искать ошибку выпало мне — вероятно, в силу сочетания моей ответственности и общей трудоемкости задачи. Диагностики при таких видах «падений» не остается, поэтому я сама шерстила стандартные «64-битные» проблемы.

После длительных изысканий выяснилось, что MacOS для 64-битных процессов может использовать неверные данные, полагаясь на сохраненную копию. Операционная система при переключении на 64-битный процесс не полностью перегружала все регистры процессора (для тех, кто в теме, речь про GS и FS). Процессор работал на закэшированных значениях. А наш монитор виртуальной машины при работе (как раз при том магическом переключении) восстанавливал все регистры, в том числе и неверные. Данные в этих регистрах были настолько критичны для ОС, что она не могла даже нарисовать сообщение о критической ошибке ядра (kernel panic), рекурсивно вызывая обработчик ошибки. PD обновлял данные, полагаясь на то, что они корректные. К чести Apple стоит отметить, что они оперативно реагируют на баги, и уже в Lion‑е (меньше чем через год) проблему починили.

Как выглядит ваше рабочее место?

Мое рабочее место можно описать как гармоничное сочетание множества «железяк» и пачек зеленого чая. Чай я люблю, а внушительный парк техники — это суровая производственная необходимость. Виртуализация от Parallels — кросс-платформенный продукт, поэтому создавать и тестировать прототипы новых версий приходится на самом разношерстном оборудовании.

Какое «железо» используете?

На большом столе (а также под ним) живут:

Два десктопа – один на процессоре Intel, а другой – на процессоре AMD.

Сервер MacPro.

Лэптоп MacBook.

На «железе» установлен целый зоопарк систем — и MacOS X, Windows разных разрядностей и разных версий, и всевозможные варианты Linux.

К железу вообще и к гаджетам в частности я была равнодушна до прошлой поездки на WWDC (Apple Developer Conference), где безнадежно влюбилась в iPhone. Кстати, мой экземпляр девайса – трофейный. Я выиграла его в ходе профессионального пари с сооснователем Parallels, а ныне председателем совета директоров Сергеем Белоусовым. Как-то раз мы сидели в ресторане. И никак не могли вспомнить название одной из недавно представленных эппловских технологий. Сергей погуглил, хмыкнул и сказал: «Так, кто первый вспомнит, тому и iPhone». У каждого было по три попытки. Первой вспомнила я. А технология называлась FaceTime.

Какое ПО используете?

На локальном «железе» установлено штук 8–10 самых разных операционных систем. Образов ОС — несчетное количество. И они ничем не хуже, между прочим. Софт у меня в большинстве специфический — компиляторы, отладчики, разные интегрированные среды разработки (IDE), дизассемблеры, профилировщики, DebugKit‑ы. Из любимых средств стоит выделить дизассемблер IDA. В Parallels, кроме того, широкий спектр инструментария своей разработки. Мы собираем гостевые и мониторные дампы, ведем счетчики производительности, логи, историю, вот сейчас доделываем свой дебаггер. Системное программирование требует системного подхода к поиску ошибки.

Есть ли конфигурация мечты?

Свои мечты о «железе» даже боюсь озвучивать — так быстро они сбываются :) Общее пожелание к «железу» — побольше логических CPU (от 16), побольше памяти (от 8 Гб). Но критичнее всего качество процессорных фич — чем свежее процессор, тем больше в нем новых «игрушек» — EPT, Unrestricted, VT‑D, TXT. Ну и шустрый жесткий диск. Все остальное в большинстве современных «железок» меня в общем и целом удовлетворяет.

Если нашли ошибку, выделите текст и нажмите Ctrl + Enter

Это упрощённая версия страницы.

Читать полную версию
Stas Dashkovsky
Прекрасно выглядишь, Анна! Успехов и удач тебе!
Антон Зенин
Калабас на столе улыбнул :)
Антон Зенин
По поводу коньяка... ребят там по цвету видно что не коньяк, стыдно должно быть)
MAD DAD
Красивая очень Анна!Глаза, ох эти Прекрасные Глаза!Это не лесть но Зацепило)))
Читать все комментарии