Sunday, April 12, 2015

Vulkan или новый шанс

На данный момент реализация OpenGl для линукс отстает от последней версии на пару лет, расширения из новой версии присутствуют, но официальной поддержки четвертой версии так и нет. Есть на это две причины:
  1. intel который делает ставку на open source и постепенно реализует все версии opengl в полном объеме, но еще не опубликовал код с поддержкой этой версии;
  2. независимым разработчикам не интересно реализовывать расширения которые не являются популярными и реализуют только те части которые им кажутся нужными.
Также amd работает над драйвером для ядра который можно использовать для обоих реализаций графики: для проприетарных драйверов и открытого кода. Это позволит без обновления кода в ядра использовать проприетарные дрова с любым ядром, а для открытого кода возможность всегда иметь поддержку всех новых чипов и постараться получить максимально полную реализацию всех возможных стандартов.
Но существует шанс получить реализацию стандарта несколько быстрее: новая версия OpenGL Vulkan - базируется на открытых стандартах и должна иметь референсную реализацию всех частей для проверки валидности рендеринга. Особенность данного стандарта заключается в том что он пересматривает все традиции современного OpenGL, если традиционно библиотека полностью скрывает внутреннюю реализацию взаимодействия с видеокартой и сама следит за опустошением буферов и синхронизацией, то новый стандарт предоставляет программисту самому следить за буферами и дает абстракцию к буферам видеокарты и памяти максимально низкоуровнево и как следствие получаеться, что программист должен сам контролировать заполненость буферов и выделение памяти, ошибки не проверяються перед отправкой в устройство. И основой нового стандарта послужила API Mantle от AMD.
В результате доступно такие виды взаимодействия:
  1. апи описания памяти и флаги как обрабатывать эту память с отображением в виртуальную память процессора или использовать только внутреннюю память устройства реализуется через выбор пула памяти и характеристик сегмента;
  2. описание опкодов Spir V виртуальной машины базирующемся на байткоде llvm.
Valve c Intel уже имеют реализацию данных драйверов написанный LunarG, который они обещают полностью открыть в момент полного открытия стандарта.

Sunday, March 22, 2015

SSD performance

SSD диски SAMSUNG 840 EVO имеют неприятную особенность деградации производительности - по изначальной спецификации скорость чтения записи должна быть на уровне 400-450 Mb/s, но современем скорость падает до 100Mb/s. Или совсем запущенные случаях до 30 для случая 0,5Tb записвнных блоков для 240Gb диска. 
Возможные причины данного поведения: 
  • скрываются во внутренней структуре дисков когда диск состоит из TLC памяти и треть которой используется как кеш в виде SLC, что позволяет ускорить работу диска. Как следствие метод ускорения перенести в этот кеш наиболее часто используемые области;
  • не достаточно эффективная работа TRIM для записи информации нужно полностью очищенные области памяти так как перезапись нескольких байт не поддерживается в флеш памяти;
  • особенности процесса поддержки равномерного износа ячеек когда каждая следующая операция записи идет в следующий очищенную область памяти и при падении заряда в ячейках памяти при чтении эти данные переносятся в новую область а старая переноситься в буфер свободных областей и так по кругу. 
  • особенности чтения многоуровневой памяти - когда уровень заряда памяти постепенно падает и нужно несколько раз прочитать информацию с различными уровнями усиления пока не совпадут контрольные суммы. 

Возможный способ решения этих особеностей предположительно используемый утилитой самсунга для востановления производительности: перечитать все заполненые области диска и сохранить уровни усиления для стабильного чтения с ячеек и перенести плохо читающиеся области в новые области памяти. Все свободные области принудительно сбросить чтобы подготовить для последующей записи. 

Для запуска этой утилиты с usb диска нужно подготовить флешку таким образом: 
  1. скачать freedos и записать на флешку;
  2. скачать утилиту для восстановления производительности Performance Restoration Software и записать на тот же диск;
  3. загрузиться с флешки без загрузки драйверов и запустить утилиту, скопированную на предыдущем шаге;
  4. выключить компьютер, не перегружаться, а именно выключить. Это нужно чтобы все буферы сбросились и диск перечитал прошивку. ( freedos поддерживает poweroff команду ). 

После этих действий производительность возвращается в заявленные производителем рамки. Для быстрой проверки можно запустить: hdparm -tT /dev/sda

Wednesday, March 4, 2015

Логичность

Иногда наблюдаешь особую логичность, есть некая узкая улица на задворках центра некого города, где все заполонено магазинами и бизнес центрами с жилищами людей. И как всегда инфраструктура не успевает за прогрессом и парковаться людям негде. И вот паркуються они по обоим сторонам этой безымянной улочки, и все было бы не плохо, если бы не одна особенность, с одной стороны стройка уже достаточно высокого здания и написано на заборе этой стройки, не будете ли вы так добры не парковаться здесь ибо возможны падения стройматериалов в процессе конструирования не то нового бизнес центра не то жилого фонда. И гарсают там бетономешалки и дальномеры с строй материалами в паре миллиметров от машин, и видно высокое мастерство этих водителей не царапающих только чудам пелацы припаркованые, так что расстояние между ними как раз ширина грузовика плюс пара миллиметров. Ну где же тут логика? Может в надежде на авось пронесет, а может решили проверить физику падения гири по канализационному люки с многоэтажки. Вера в свою фортуну непоколебима.

Thursday, February 26, 2015

Душа и лужа

Является ли идея переливать лопатой из лужи, которая возле твоего входа, в лужу, которая по среди дороги уже похожая на общую, спецификой здешних мест, или это общепризнанное решение для неровной дороги, лужайки или асфальта? Технологию рыть рвы на дороге чтобы туда сливалась вода из протекающего водопровода и водостока пока оставим на потом:-) Иногда весело понаблюдать за подобными процессами, как берут лопатой набирают воду и несут 10 метров с очень серьезным и важным видом, подобным я спасаю человечество, но яму возле входа не заделывают в течении нескольких лет.

Wednesday, February 25, 2015

Выбор без вариантов

Попытки пользователей купивших телефон создающих петиции производителю относительно выпуска обновления или открытия исходников с большой вероятностью ни к чему не приведут. Компания уже продала телефон и у нее как таковой нет причин обновлять устройство на новую версию android, максимум обновить текущую прошивку с исправлением ошибок или закрыть какую-то прореху в безопасности позволяющую получить повышенные права и установить или заменить часть прошивки. 
По сути открытие кода ядра как единственной части системы которая требует открытия по лицензии никоим образом не гарантирует возможность изменений в прошивке. Так как загрузчик может быть заблокирован и скорее всего он не будет загружать не подписанные особым образом ядра или иметь не стандартные протоколы для загрузки элементов прошивки.
Как побочный эффект есть неоднозначность, или иметь прошивку без проблем безопасности или иметь проблемы с безопасностью, но благодаря таким обходным путям иметь возможность заменить прошивку. 
И получается, что иногда производители позиционируют телефон как не флагманский через установку не последней версии android, установки не самого мощного в линейке процессора или экрана меньшей диагонали или забыть установить какой-то датчик. Что не так страшно по пользовательским ожиданиям, иногда даже в значительно степени повышает пользовательскую ценность и если есть возможность установки обновленной прошивки последней версии, то пользователь получает почти идеальное устройство, так как нивелирует ограничения установленные производителем.

Friday, January 2, 2015

Поддержка многоканального звука

По умолчанию pulseaudio не поддерживает многоканального звука если это не стерео звук и даже если alsa смогла правильно сконфигурировать и обнаружить многоканальный звук - выводит звук только на фронтальные колонки звук. Для того чтобы это исправить нужно принудительно указать что нужно создавать многоканальный звук изменив значение в /etc/pulse/daemon.conf на default-sample-channels = 6 или на то значение сколько есть каналов в наличии и перегрузить pulseaudio.

Sunday, December 14, 2014

Пиринговый браузер

Bittorent планирует выпустить браузер базирующийся на использовании пиринга для получения данных с сайтов, возможно такая идея имеет некоторые затруднения:
  1. популярность, нужно получить достаточный процент использования, чтобы выйти на уровень эффективности технологии и как следствие требуются плагины для основных браузеров или модуль проксирования для поддержки остальных браузеров;
  2. при кажущейся приватности: сайт и провайдер теряют к какой-то степени возможность контроля за трафиком, переходя в ранг трекеров, но в тоже время все соседи с которых идет скачивание контента начинают видеть хоть и частично весь трафик. И появляются проблемы с https/http 2.0 - загнать такой трафик в пиринговую сеть сложно так как каждый пакет шифруется ключом зависящим от сессии и как следствие его не расшариш без сессии нужны надежные обходные пути.