C2k10-tedu

Материал из OpenBSD-Wiki
Перейти к: навигация, поиск
Данная статья 100 % копипаст с www.openbsd.ru


Перевод «[c2k10] Part 5» (оригинал)


Интервью с Тэдом Юнангстом (tedu@)

Во всех моих интервью с c2k10 будут вещи которые будут повторяться вновь и вновь. Одной из этих вещей является июньский релиз 2.7 и ноябрьский релиз 2.8 2000 года. Это был тот период когда многие разработчики, включая tedu@, начали своё знакомство с OpenBSD. Есть причина которая объясняет популярность этих релизов, которые привлекли многих [новых участников].

Читайте далее чтобы узнать больше о tedu@ и понять причину привлёкшую его [в OpenBSD]:

В те дни находилось много дыр безопасности во всех операционных системах. Оё, погодите! Да ведь ничего и не изменилось с тех, с той лишь оговоркой что появилось больше векторов атаки которые приводят к тем же [дырам]. Фокус на корректности и усилия направленные на улучшения безопасности в OpenBSD (см. презентации 1999 года) стали приносить свои плоды на следующий год в виде новых пользователей и разработчиков с той же заинтересованностью в безопасности.

Однокашник, знавший интерес tedu@ к исследованию UN*X мира, порекомендовал ему попробовать OpenBSD. Он даже подогрел его интерес тем, что дал ему диск с релизом 2.7. С тех пор он много потрудился на поприще безопасности и стал разработчиком в марте 2003 года, его пригласил Артур Грабовски (art@). Он работал над ошибками файловых систем, производительностью виртуальной памяти, принимал участие в большом инспектировании безопасности по замене strcpy() и похожих функций в прикладных утилитах, также работал над поддержкой криптографии и, не так давно, rthreads. tedu@ говорит что его участие в сообществе разработчиков [OpenBSD] всегда было весёлым и хакофоны являются большой частью этого веселья.

Когда я впервые увидел tedu@ на c2k10, моим первым впечатлением было что парень ошибся в поиске пляжной вечеринки и только что оставил свою доску для серфа снаружи из вежливости. Ну да, такова реальность, он выглядит здорово с лаптопом в руках и также здорово как если бы он держал в руках серф. Вам также может быть интересно что tedu@ работает на здоровскую компанию Fog Creek Software расположенную в Нью-Йорке, расположенном далеко от всех известных мне хороших пляжей. У Джоела Спольски, его шефа, написано множество интересных и познавательных статей. Одна из них привлекла моё внимание «The Joel Test: 12 Steps to Better Code». После её прочтения мне надо было протестировать OpenBSD. Я не знаю был ли тест разработан чтобы испытывать операционные системы и может быть он не очень подходит для OpenBSD, так как она является краевым случаем. Операционная система — это непростое программное обеспечение и я использую ОС с открытым кодом для загрузки. Итак, несмотря на странности, я был приятно удивлён полученными результатами. OpenBSD выдаёт продукт каждые 6 месяцев начиная с июня 1997 года! Снапшоты создаются почти каждые сутки с далёкого 1995. Если этого недостаточно, OpenBSD в лидерах между своих (прим. видимо имеются другие проекты нацеленные на безопасность) по репутации безопасности. О, и как Брет Ламберт (blambert@) говорит: «разработчики обожают вырывать сорняки 20 летней давности из ядра» и похоже что им также нравится добавлять функциональность. Достаточно соответствующее [выбрана тема], хакофонская футболка была названа «Дерьмо сияющее».

Было также и нечто другое что я понял на барбекю, беседуя с tedu@: в его повседневной работе, он работает над Windows приложениями. Что в этом такого необычного спросите вы? Когда вы прочтёте статью, Perils of Java Schools, всё встаёт на свои места. Мы все знаем что tedu@ хардкорный разработчик ядра OpenBSD, но благодаря этой статье Джоела Спольски и беседам с tedu@, я понял что Си программистам проще учиться программировать на других языках, но переходить с Java или VB на Си может быть непросто. Я хороший пример последнего [утверждения]. Я начал своё программирование в Windows и до сих пор не могу освоить Си чтобы спасти свою жизнь. К счастью, у меня есть множество хороших учителей по Си которые помогают мне когда я захожу в тупик. Если вы хотите погрузиться [в него] (прим. здесь используется «непереводимый местный диалект» to dip your toes), тогда style(9) может стать хорошим началом.

Вот что tedu@ говорит о c2k10:

Я провёл большую часть хакофона удаляя файлы, связанные с различными
слоями бинарной совместимости.  Основная мотивация в их удалении - это
уменьшить число файлов которые надо инспектировать и редактировать при
больших модификациях которые мы планируем при улучшении поддержки нитей
(тредов).  Несмотря на привлекательность концепции запуска программ
скомпилированных для других операционных систем, это помогло на ранних
этапах развития OpenBSD, востребованность кода совместимости неясна, было
проявлено мало внимания к его тестированию и поддержке.  Не весь compat
код будет удалён на этот раз, но содействие в продолжении использования
проприетарных программ идёт в разрез с целями проекта.

Включение mandoc(1) также вскрыло факт построения многочисленной и
избыточной документации groff'ом.  Многое из этого было устаревшим и тоже
может быть удалено.  Мы также не уверены что нам делать с оставшейся
документацией в долговременной перспективе, но сужение круга кандидатов
может помочь в дальнейшем.

С точки зрения нового кода, я исследую новые пути установления
прикладного адресного пространства, в частности на i386.  Различные
сегменты адресного пространства отмеряются и располагаются согласно
макросам в $arch/include/vmparam.h.  Наша существующая политика
резервирует пространство для каждого сегмента, даже если он не
используется.  Одна из областей - это традиционная область кучи
используемая системным вызовом brk.  Из man brk(2):  "Функции brk(2) и
sbrk(2) - это исторические курьезы оставленные в былые дни до появления
виртуальной памяти."  OpenBSD редко использует вызов brk(2), вместо него
используется исключительно mmap(2) (или malloc для большинства программ),
но место для [кучи] всё равно оставляется.  Это является неприятным
эффектом для mmap(2), которому сокращают доступные адреса.  Мы можем
уменьшить резервируемый размер, но существуют "исторические курьезы"
которые до сих пор его используют.  Задача такая: с наименьшим
беспокойством кода uvm (прим.  система управления виртуальной памятью
пришедшая из NetBSD), мы можем позволить существовать вместе и brk(2) и
mmap(2) и позволить им эффективно перекрываться (прим. видимо их областям
памяти).  Конечно, i386 сама по себе является историческим курьёзом, но я
подозреваю что люди до сих пор её используют, и надеюсь выжать максимум
из ограниченности адресного пространства, на долгие годы.

Я также провёл целый день над новым методом ускорения центрального
процессора.  Мы долгие годы раскрывали [пользователю] sysctl переменную
hw.setperf которая представляет собой возможность управления частотой
процессора (и как следствие мощностью и тепловыделением).  У нас также
имеется опция в apmd которая наблюдает за системной загрузкой и
подстраивает скорость в соответствие [с загрузкой].  Существуют две
хорошо известные проблемы такого решения.  Первая, алгоритм не учитывает
количество ядер.  Вторая, интервал опроса немного медленный (прим.
возможно имеется занимает длительное время сам опрос).  В то время как он
[алгоритм] хорошо работает для долгоиграющих задач, таких как компиляция,
интерактивные задачи, такие как перемотка в браузере, выглядят
медленными.  Ваш процессор не выкручивается на высокую скорость до тех
пор пока операция не будет закончена.  Частота опроса из прикладного
пространства сама представляет собой проблему, так как создаёт
дополнительную нагрузку (эффект наблюдателя!).

Для решения проблемы я перенёс код подстройки [частоты] в ядро, для того
чтобы можно было вызывать его часто без потерь на многочисленные
переключения контекстов прикладное пространство/ядро.  Мы также
подстроили отзывчивость алгоритма к каждому процессору.  В то время как
нынешний патч использует информацию от apmd, другим достоинством переноса
кода в ядро является возможность более тесной интеграции с планировщиком
в будущем.  Например, можно пофантазировать про то как планировщик будет
мгновенно переключать процессор в медленный режим когда он выполняет
холостой цикл.

Тэд Юнангст



Ну, что я могу сказать, не правда ли здорово что tedu@ предпочитает серфингу на Гудзоне хакерство по выходным. Долгие годы он оставался моим любимым [подписчиком] в misc@ и я был счастлив встретить его вживую. Он сделал большую работу и является для меня и многих других вдохновением. Спасибо тебе за твою огромную и продолжающуюся работу над OpenBSD. Я надеюсь что другие также смогут воодушевиться для создания и отправки патчей и/или хотя бы сделать пожертвование в качестве небольшого вклада для поддержки предстоящих (мини-)хакофонов. Мы ценим твою поддержку и внимание.

Марк Т. Уемура