Алексей Иванов из компании Dropbox подготовил полезный отчёт о результатах оптимизации web-серверов, обеспечивающих работу сервиса Dropbox Edge Network, используемого как для отдачи чувствительных к задержкам метаданных, так и для передачи больших потоков данных (десятки тысяч транзакций и десятки гигабит в секунду). В материале затрагиваются вопросы оптимизации драйверов, привязки обработки прерываний к фиксированным ядрам CPU, параметров TLS, nginx, стека TCP/IP, ядра Linux, влияние компиляторов и библиотек. Для каждой возможной оптимизации рассматривается её эффективность и вклад в увеличение общей производительности и сокращение задержек.
В кодовую базу, в которой ведётся подготовка выпуска GCC 5.0, принят код оптимизатора AutoFDO (Automatic Feedback Directed Optimizer), который производит оптимизацию кода на основе данных профилирования программы. AutoFDO использует счетчики событий (performance counters), предоставляемые ядром Linux (perf framework) и применяет полученные данные для информирования инфраструктуры FDO (Feedback Directed Optimizer) компилятора о производительности различных частей программы. По утверждению инженеров Google, подготовивших этот код, новая реализация работает значительно быстрее обычного FDO.
Компания Codemix представила JavaScript-библиотеку fast.js, в рамках которой подготовлена подборка типовых функций JavaScript, отличающихся от встроенных функций более высокой производительностью. Библиотека предоставляет замену для таких методов, как .map(), .reduce(), .bind(), .forEach(), .indexOf(), .concat() и .clone(). Более высокая производительность достигается за счёт устранения излишних усложнений, связанных с необходимостью учета всех крайних случаев, учитываемых во встроенных функциях в силу требований спецификации ECMAScript. Тестирование показало, что представленная в fast.js реализация .lastIndexOf() оказалась на 62.80% быстрее нативного варианта в тесте из трех итераций, на 74.38% в тесте из 10 итераций и на 20.55% в тесте из 1000 итераций. Для .indexOf() выигрыш в производительности составил 66.22%, 41.36% и 1.78%. Для .bind() - 746.69% и 204.75%. Для .map() - 263.07%. Для .reduce() - 103.12%. Для .forEach() - 118.38%. Для .concat() - 319.90%.
Завершена публикация перевода всех глав книги "Производительность приложений с открытым исходным кодом" ("The Performance of Open Source Application"), которая посвящена вопросам оптимизации и достижения высокой производительности в открытых проектах. В книге рассказано о способах достижения высокой производительности в таких проектах, как Chromium, Firefox, EtherCalc, Ninja, pugixml, Infinispan, Talos, Zotonic, Warp, Khmer. Текст книги распространяется в рамках лицензии Creative Commons Attribution 3.0 Unported.
В драйвере RadeonSI, отвечающем за поддержку 3D в GPU от AMD семейства HD7000 и новее (т.е. все GPU на основе архитектуры GCN) будет активирована по умолчанию поддержка тайлинга, так как по мнению разработчиков эта возможность достигла стабильного состояния. Как правило, активация тайлинга приводит к достаточно заметному приросту производительности графического драйвера, что делает данное изменение достаточно ожидаемым для владельцев карт на основе GCN, желающих использовать открытые драйверы. Как ранее показали замеры производительности, выполненные ресурсом Phoronix, хотя свежие версии RadeonSI и прибавили в производительности, проприетарный драйвер Catalyst пока демонстрирует существенно более высокую производительность, в отличие от ситуации с драйвером R600g, где открытый драйвер иногда показывает производительность даже выше чем у проприетарного драйвера Catalyst. Включение поддержки тайлинга скорее всего поможет сократить разрыв в результатах. Также можно отметить, что реализованный в ядре Linux
Авторы проекта "Архитектура открытых приложений" опубликовали новую книгу - "The Performance of Open Source Application", которая посвящена исключительно вопросам оптимизации и достижения высокой производительности в открытых проектах. В книге рассказано о способах достижения высокой производительности в таких проектах, как Chromium, Firefox, EtherCalc, Ninja, pugixml, Infinispan, Talos, Zotonic, Warp, Khmer. Отдельная глава посвящена оптимизации мобильных приложений. Текст книги распространяется в рамках лицензии Creative Commons Attribution 3.0 Unported.
Независимый разработчик Grigori Goronzy представил в списке рассылки X.org патчи для драйвера xf86-video-ati, повышающие скорость 2D-операций. Разработчик из AMD Alex Deucher уже посмотрел и протестировал данные патчи, поэтому вполне вероятно, что они будут включены в состав xorg-драйвера xf86-video-ati в ближайшее время. Ожидается что это заметно повысит скорость 2D-операций. В данный момент поддерживаются GPU семейств Evergreen и Cayman (HD5000 и HD6000), однако отмечается что данный патч довольно просто портировать на все GPU серии R600/R700.
Тим Берд (Tim Bird), инженер компании Sony и участник группы разработки встраиваемых систем в Linux Foundation, опубликовал подробное руководство (PDF, 550 Кб) по тюнингу производительности файловых систем Ext4, Btrfs и F2FS с учётом выбора планировщиков ввода/вывода, для достижения оптимальной производительности на накопителях eMMC/SSD. В статье досконально проанализированы доступные опции и представлены тесты производительности, демонстрирующие эффект, достигнутый при использовании каждой опции. В частности, изучен эффект от монтирования с такими опциями, как "mount -o noatime", "mount -o discard", "tune2fs -O ^has_journal", "mount -o data=writeback", "mount -o nobarrier", "mount -o stripe=, mkfs -E stripe-width=", "mount -o ssd", "mount -o ssd_spread". Оценено влияние выбора планировщиков ввода/вывода noop, deadline, cfq, row. В итоге, правильный выбор планировщика и опций монтирования позволил увеличить производительность при выполнении некоторых тестов от 20% до 400%. При этом универсального набора
Разработчики проекта MariaDB, в рамках которого развивается СУБД продолжающая развитие кодовой базы MySQL, представили реализацию нового режима атомарной записи (Atomic Writes) для хранилищ InnoDB и XtraDB. Эффективность режима атомарной записи особенно заметна на системах с SSD-накопителями, обеспечивающими низкое время отклика. Например, выполнение OLTP-тестирования пакетом sysbench (100 Гб данных, 400 млн записей в 16 таблицах) показало, что при наличии от 8 одновременных потоков обработки запросов производительность нового режима на 25-30% опережает ранее применяемый режим двойной записи. Дополнительное задействование режима быстрого расчёта контрольных сумм в XtraDB позволяет довести выигрыш в скорости до 50%. Дополнительно можно отметить готовность для тестирования экспериментального выпуска MariaDB 10.0.2, в котором интегрированы патчи с поддержкой режима атомарной записи. Кроме того, поддержку нового режима планируется добавить в готовящийся к релизу стабильный выпуск MariaDB 5.5.31. Из других
Некоторое время назад разработчик Вадим Гирлин (Vadim Girlin) представил собственную ветку MESA, в котором включен оптимизированный кодогенератор шейдеров для GPU, поддерживаемых драйвером R600g. Представленный код генерирует шейдеры, которые значительно более оптимизированы, чем шейдеры, генерируемые текущей версией кодогенераторов в драйвере R600g (как своего собственного, так и на основе LLVM). В частности, разработчик продемонстрировал существенное увеличение FPS в тесте Unigine Heaven с использованием собственного кодогенератора, что значительно превосходит результат, демонстрируемый неоптимизированным штатным вариантом кодогенератора, а также кодогенератором на основе LLVM. В результате в списке рассылки возникла полемика. Разработчики из компании AMD полагают, что у штатного кодогенератора, встроенного в драйвер R600g, нет перспектив и он будет постепенно заменен на кодогенератор, основанный на LLVM по мере его готовности. Аргументами за такое решение служит потенциальное упрощение разработки