Девушки преуспевают в типично мужских занятиях, и этот факт уже давно перестал восприниматься как общественный феномен. Сегодняшняя героиня рубрики Анна Воробьева может дать сто очков вперед любому мужчине ИТ-профессионалу. Она – ведущий разработчик одного из ключевых компонентов виртуальных машин в компании 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. Ну и шустрый жесткий диск. Все остальное в большинстве современных «железок» меня в общем и целом удовлетворяет.
Лучшие предложения
10 товаров для дома, которые помогут создать осеннее настроение
Находки AliExpress: 10 качественных игрушек для питомцев
10 предметов дешевле 500 рублей, которые должны быть в сумке
12 недорогих осенних аксессуаров, которые не дадут замёрзнуть
10 отличных шампуней, которые можно найти на «Яндекс Маркете»
Отборные скидки: выгодные предложения от AliExpress, «Яндекс Маркета», Lamoda и других магазинов
10 средств, с которыми будет проще ухаживать за секс-игрушками
10 вещей с тыквами и в виде тыквы, чтобы уютно «затыквиться» на всю осень
Помоги природе и получи подарок: стартовал новый сезон масштабной акции по сбору макулатуры «БумБатл»
Почему хочется есть ночью и что с этим делать
«Я вас услышал»: как на самом деле нужно собирать обратную связь от клиентов
Как семье с детьми купить квартиру: 5 мер поддержки, на которые вы можете рассчитывать