Новость из категории: Информация

Разработка ядра Linux: Йенс Аксбо

Из биографии

Разработка ядра Linux: Йенс Аксбо

Йенс Аксбо (Jens Axboe) родился 1 сентября 1976 года (http://kerneltrap.org/node/7637) в датском городе Оденсе (https://en.wikipedia.org/wiki/Jens Axboe). В 2007 году он проживал в столице (Копенгагене), а сейчас, согласно профилю на портале Ohloh.net (https://www.ohloh. net/accounts/ohlohax), живёт в городе Кольдинг. Разработчик женат на Метти (https://plus.google. com/111643045511375507360/about), у них двое сыновей: Йонас (7 лет) и Витус (3 года).

Йенс Аксбо учился в Копенгагенском университете по направлению Computer Science. К сожалению, мне не удалось найти информацию об окончании Йенсом этого вуза и какой-либо дополнительной образовательной или научной карьере.

Разработка ядра Linux: Йенс Аксбо
Йенс Аксбо

Судя по тому, что с 2000 по 2006 год Йенс Аксбо отправлял письма в список рассылки разработчиков ядра с адреса axboe@suse.dk, можно сказать, что по меньшей мере в это время он работал в датском подразделении Linux-компании SUSE. Точно известно, что с октября 2006 года по 31 мая 2010 года Аксбо работал в Oracle (http://axboe.livejournal.com/3616.html), а затем перешел в Fusion-IO (www.fusionio.com), где получил должность главного архитектора.

Деятельность

Йенс Аксбо поддерживает слой блочных устройств в ядре Linux и драйверы для SCSI CDROM и UNIFORM CDROM (http://lxr.linux.no/#linux+v3.8.8/MAINTAINERS). Кроме того, Йенс разработал ряд планировщиков ядра: CFQ I/O, Noop, Deadline, а также системный вызов splice для перемещения данных между дескриптором файла и программным каналом в пространстве пользователя. Кроме того, Аксбо известен как создатель blktrace — утилиты и части ядра Linux для трассировки активности блочных устройств ввода/вывода (появилось в Linux 2.6.17).

Впервые о Linux Йенс Аксбо узнал в 1993 году, прочитав об этой системе в одной из датских газет, где Linux сравнивали с OS/2. Газета, по словам разработчика, представляла собой «инженерный еженедельник», который выходил по пятницам. В то время Аксбо программировал на языке Си и использовал Turbo C в операционной системе DOS, испытывая проблемы с сегментацией памяти. Linux, будучи полноценной 32-битной операционной системой, заинтересовала разработчика. После нескольких недель экспериментов Йенсу Аксбо удалось установить Linux — в результате, «обратной дороги уже не было». Почему процесс первой инсталляции так затянулся? Ядро Linux тех времен не опознавало его CD-привод, из-за чего Йенс сразу же познакомился с первым в своей жизни явлением «kernel panic».

Разработка ядра Linux: Йенс Аксбо
Фото диска с дистрибутивом Yggdrasil Йенса

Интересно и то, как разработчику удалось получить первую копию Linux. На то время единственным реальным для него способом получить Linux являлись услуги шведской почтовой компании, на что у Йенса не было денег... Однако счастливое стечение обстоятельств позволило молодому программисту найти подержанный диск с дистрибутивом Yggdrasil (http:// en.wikipedia.org/wiki/Yggdrasil Linux/GNU/X) - первым дистрибутивом Linux, который стал распространяться на CD. Тот релиз дистрибутив был основан на ядре 0.99pl13.

Разработчик сразу же уделил много времени знакомству с новой операционной системой. Тогда он ещё учился в школе, но система его так увлекла, что, например, чтобы заставить работать DOSEMU, ему приходилось пропускать занятия. Йенс вспоминает и о том, как не спал по ночам, пока компилировалась графическая система X для поддержки его видеокарты.

Особая притягательность Linux для разработчика заключалась в том, что эта операционная система была «прозрачной», предлагая все возможности для исследования и позволяя делать с собой что угодно. Особенно заметно это было в сравнении с Windows 3.x, даже падения которой было сложно диагностировать.

Первым вкладом Йенса в ядро Linux стала разработка драйвера CD-ROM. Предыдущий разработчик (судя по всему, это был Эрик Андерсен из проекта Debian) решил отойти от дел по личным мотивам и искал добровольцев. И вот 19 октября 1998 года Йенс официально стал новым мейнтейнером драйвера. Для разработчика это оказался полезный опыт. Он расширил функциональность (cdrom.c), добавил поддержку Mount Rainier, DVD и DVD-RAM. Затем, перейдя на работу в SUSE, Йенс Аксбо стал работать над слоем блочных устройств (block layer), мейнтенером которой является по сей день. Этот слой служит промежуточным звеном между драйверами блочных устройств и файловой системой. В частности, сюда относится управление очередями и ресурсами, планировщики ввода/вывода. В ходе подготовки ядра Linux 2.5 разработчик переписывает реализацию слоя блочных устройств, поскольку существовавшая до тех пор реализация не без причин считалась неудачной, т.к. не справлялась с работой с несколькими процессорами, не поддерживала ввод/вывод со страниц highmem, а очереди ввода/вывода имели скромные возможности. Кроме того, было необходимо сделать более простыми и менее объёмными драйверы блочных устройств. Впервые переписанный слой блочных устройств появился в ядре версии 2.5.0-pre1. Интересно, что до Йенса Аксбо никто вообще целенаправленно не занимался поддержкой слоя блочных устройств — разработчики лишь готовили патчи для первоначальной реализации слоя блочных устройств, созданной Линусом Торвальдсом (ll_rw_blk.c).

В 2002 году разработчик создаёт планировщик ввода-вывода для ядра Linux, который получил название Deadline scheduler (https://en.wikipedia.org/wiki/Deadline scheduler) или планировщик ввода-вывода с лимитом времени. Основная задача — избежать задержек обслуживания, которые могут иметь место при использовании лифтового алгоритма Линуса (подробнее про «Linus Elevator» можно читать в книге Роберта Лава «Разработка ядра Linux, 2-е издание»). Несмотря на то, что планировщик ввода-вывода с лимитом времени в целом работал, как и лифтовой, его важным отличием от последнего стало то, что запросы не ожидали дольше определенного временного периода

В 2003 году Йенс Аксбо реализует Completely Fair Queuing (CFQ, планировщик ввода-вывода с полностью равноправными очередями), который стал доступен в виде патча для ядра версии 2.5.60 (https://en.wikipedia.org/wiki/CFQ). В основной код ядра он был интегрирован с выходом версии 2.6.6, который состоялся 10 мая 2004 года. CFQ не похож на планировщики, которые были разработаны до него, поскольку поддерживает отдельную очередь для каждого процесса, осуществляющего операции ввода-вывода, а для выполнения запросов из очередей используется круговой алгоритм. Благодаря этому, пропускная способность устройства равномерно распределяется для каждого соответствующего процесса. Ещё один планировщик, созданный Йенсом, получил название Noop. Он ориентирован на блочные устройства, для которых нет необходимости в выполнении сортировки или во вставке приходящих запросов (например, в случае flash-памяти).

В 2005 году разработчик представил пакет для тестирования и моделирования рабочей нагрузки ввода-вывода, который получил название fio (http://git.kernel.dk/?p=fio.git;a=summary). Он поддерживает имитацию различных типов ввода-вывода (sync, mmap, libaio и др.), позволяет задавать количество потоков или процессов и другие параметры.

Разработчик принимает активное участие в различных конференциях. Из последних можно отметить LinuxCon Japan 2010 (http://events.linuxfoundation.org/2010/linuxcon-japan/axboe) и 2012 Red Hat Summit (www.fusionio.com/blog/2012-red-hat-summit-preview).

Инструменты

Информация об инструментах, используемых разработчиком, достаточно скудна. Из аппаратного обеспечения известно лишь про использование MacBook Pro Retina (https://plus.google. com/111643045511375507360/posts/DoK5qeLxG6K). Что касается операционных систем, то Йенс предпочитает использовать дистрибутивы, основанные на менеджере пакетов apt. При этом он считает, что Ubuntu с GNOME 3 или Unity ужасна, а Debian содержит устаревшее программное обеспечение. Поэтому выбор разработчика пал на Linux Mint. Из другого софта можно выделить браузер Chrome, почтовые клиенты Mutt и Thunderbird.

В профиле разработчика на ohloh.net имеется перечень языков программирования и технологий, с которыми работал/работает Йенс: C, C++, Make, Autoconf, XML, скрипты для shell, ассемблер, Perl, Python, AWK, скрипты для DOS (https://www.ohloh.net/accounts/ohlohax/positions/total).

Характер и личность

Профили Йенса Аксбо в социальных сетях (помимо Google+ это LiveJournal — http://axboe. livejournal.com/, и Twitter — https://twitter.com/axboe) показывают его как в меру открытого и общительного человека, увлечённого своим делом. В блогах Йенс делится новостями о своей работе и её результатах, обсуждает актуальные проблемы и вопросы (например, драйвер b43 на MacBook Pro). В подписи Йенса в рассылке по разработке ядра Linux долгое время значилась цитата Альберта Эйнштейна: «Единственное, что мешает моему обучению, — моё образование» (https://lkml.org/lkml/1998/12/31/92). В позапрошлом году про Йенса вышла небольшая книга на английском языке: «Jens Axboe» (авторы: Jesse Russell, Ronald Cohn; www. e5.ru/product/jens-axboe 13023809).

Рейтинг статьи

Оценка
5/5
голосов: 1
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх