воскресенье, 2 декабря 2012 г.

Что нового?

Начнём с того, что я сменил работу, и теперь она напрямую связана с FreeBSD. Теперь у меня больше времени и возможностей, которые можно направить на улучшение системы. Правда, работодатель рассчитывает, что я буду прикладывать их в другое русло - оптимизация сетевой подсистемы и ipfw. Чем я и занимаюсь :)

Первой ласточкой стало то, чего давно хотелось. Ещё когда я не был коммитером, хотелось чтобы ipfw fwd работало без перекомпиляции ядра. Но тогда на моё предложение возразили, что этот функционал значительно снижает быстродействие сетевой подсистемы. Но как показали испытания, никакого снижения замечено не было. В системе хватает других мест, которые вносят значительные "тормоза".

Итак, вероятно некоторые уже заметили, что в src/UPDATING появилась запись, информирующая об удалении опции IPFIREWALL_FORWARD. Теперь этот функционал работает "из коробки", достаточно просто загрузить модуль ядра ipfw.ko. В stable/9 это изменение уже тоже есть, но в релиз оно не попадёт.

Другим крупным шагом был MFC изменений в загрузчике в stable/9. Теперь код загрузчиков в 9-ке практически идентичен тому, что в 10-ке. Я ещё думаю о переносе изменений в 8-ку, но, честно говоря не хочется этого делать. Уж очень сильно в 8-ке он отличается и придётся сделать MFC ещё для кучи ревизий. Так же, можно поблагодарить Андрея avg@ за исправление проблемы в загрузочном коде, которая обнаруживалась на некоторых "кривых" BIOS.

Кроме того, был осуществлён первых подход к изучению и тестированию IPv6 стека на производительность. Который показал плачевное состояние в этой области. Правда, благодаря профилированию и нескольким небольшим изменениям, удалось улучшить результаты почти в три раза. Не буду озвучивать цифры, они сильно зависят от железа. Но факт в том, что оптимизация IPv6 во FreeBSD - это ещё "напахано поле". Впрочем, в IPv4 базовая система тоже не блещет результатами и всего несколько строк в /boot/loader.conf и /etc/sysctl.conf может улучшить эти результаты в разы.

11 комментариев:

  1. Если будет не лень, то было бы очень любопытно послушать про состояние IPv6 ;)
    Кстати а что там с загрузкой с GPT на новых EFI, что то не видно чем там GSoC закончился, успешно или нет.

    ОтветитьУдалить
    Ответы
    1. Нет, у студента появились другие дела и после первой половины GSoC он уже ничего не делал.

      Удалить
  2. Вот 2 вещи меня всегда бесили в generic - отсутствие квот и fwd. Рад что одной стало меньше.

    И было бы здоророво услашать подробности про v4/v6 fine tuning.

    ОтветитьУдалить
    Ответы
    1. http://svnweb.freebsd.org/base?view=revision&revision=245003
      оно?

      Удалить
  3. > Начнём с того, что я сменил работу, и теперь она на прямую связана с FreeBSD
    Это суперская новость, поздравляю!

    > ..IPFIREWALL_FORWARD. Теперь этот функционал работает "из коробки"
    Это большой шаг, я считаю! Просто огромный! Наконец, ради этой дурацкой опции не придется перекомпилировать ядро. Еще б IPSec тоже в GENERIC, но, насколько я знаю, там какие-то лицензионные проблемы.

    ОтветитьУдалить
  4. Если память не изменяет, в GENERIC также не хватает options IPDIVERT, без него не работает NAT через ipfw.

    ОтветитьУдалить
  5. "всего несколько строк в /boot/loader.conf и /etc/sysctl.conf может улучшить эти результаты в разы"
    Если можно, с этого места подробней, пожалуйста.

    ОтветитьУдалить
    Ответы
    1. Присоединяюсь. Очень актуальная тема

      Удалить
  6. вот тут https://calomel.org/freebsd_network_tuning.html, правда на Английском.

    ОтветитьУдалить