В этой статье я приведу описание багов в BIOS/UEFI ноутбуков, с которыми приходилось работать и для которых приходилось адаптировать загрузчики. В первую очередь речь пойдет о багах, которые не видны пользователю, но которые могут помешать работе загрузчика даже при условии, что все было сделано правильно. Баги были выявлены как в интерфейсах соответствующих сред исполнения, так и в коде режима SMM процессоров Intel. Приводимый материал основывается на накопленном опыте, который растянут на достаточно большой период времени. Поэтому к моменту написания список конкретных моделей был утрачен. Тем не менее, сохранился список фирм-производителей, на ноутбуках которых возникали проблемы. Баги будут описаны последовательно, начиная с простых и заканчивая самыми сложными. Также по ходу описания будет приведен способ их обхода.
Читать полностью »
Рубрика «системное программирование» - 43
Немного о багах в BIOS-UEFI ноутбуков Lenovo-Fujitsu-Toshiba-HP-Dell
2017-07-12 в 7:53, admin, рубрики: dell, Fujitsu, HP, Lenovo, toshiba, UEFI, Блог компании Аладдин Р.Д., реверс-инжиниринг, системное программирование24-ядерный CPU, а я не могу сдвинуть курсор
2017-07-11 в 6:14, admin, рубрики: Windows 10, windows 7, баги Windows, завершение процессов, закон Амдала, Программирование, разработка под windows, системное программирование, системы сборки, Тестирование IT-системВсё началось, как это часто бывает, когда моя машина начала подтормаживать. На рабочем компьютере Windows 10 c 24-ядерным процессором (48 потоков) — и они на 50% простаивали. Из 64 ГБ памяти использовалось меньше половины. Быстрый SSD тоже не особо использовался. И всё же, когда я двигал мышкой, курсор реагировал не сразу — иногда с задержкой в несколько секунд.
Так что я сделал то, что всегда делаю — записал трассировку событий с помощью ETW и проанализировал её. В результате я обнаружил баг Windows 10, серьёзно влияющий на производительность завершения процессов.
Трассировка ETW показала, что UI зависает во многих программах. Я решил исследовать 1,125-секундное зависание в Диспетчере задач:
Linux все еще не торт
2017-07-11 в 4:17, admin, рубрики: autotest, bugs, continuous integration, crash, CRIU, leaks, linux, linux kernel, memory, open source, panic, system programming, upstream, Блог компании Virtuozzo, Разработка под Linux, системное программирование, Тестирование IT-системЭта история началась около месяца назад, когда Кирилл Тхай добавил поддержку вложенных пространств имен в CRIU, после чего наша система CI приказала долго жить. В тот момент ничто не предвещало тех увлекательных приключений, в которые мы оказались вовлечены.
Алгоритм поиска наилучшего маршрута в linux
2017-07-09 в 10:45, admin, рубрики: FIB, linux, RIB, trie, Алгоритмы, высокая производительность, математика, системное программирование, таблица маршрутизацииВ настоящее время в компьютерных сетях практически повсеместно используется протокол IP. Для того, чтобы отправить IP-пакет каждый маршрутизатор ищет в свой таблице маршрутизации наилучший маршрут для адреса назначения пакета. В данной статье я хочу описать алгоритм поиска наилучшего маршрута, реализованного в ядре linux.
Читать полностью »
Proxmox 5 и частичная запись в блочных устройствах эффективного хранения Ceph
2017-07-05 в 19:56, admin, рубрики: block device, BlueStore, Ceph Kraken, Ceph Luminous, crush, Erasure Coding, OSD, proxmox 5, RADOS, rbd, высокая производительность, параллельное программирование, Промышленное программирование, Разработка под Linux, системное программирование, метки: BlueStore, Ceph Kraken, Ceph Luminous, Erasure Coding, Proxmox 5, RADOS, RBDОфициальный выпуск Ceph Luminous от производителя мы ждём в ноябре 2017, однако Proxmox 5 уже позволяет использовать в промышленных решениях некую редакцию Ceph Luminous, которая, как и полагается, в качестве основного файлового хранилища по умолчанию предлагает BlueStore. Последнее полноценно поддерживает транзакции с операциями хранения объектов, что делает возможными большое число вкусностей. Одной из них является способность осуществления частичной перезаписи данных в блочных устройствах на основе пулов с удаляющим кодированием (Erasure Coding). Такие пулы, в частности, способны (при наличии достаточного числа физических дисков и серверов) приближать использование имеющегося сырого дискового пространства сколь угодно близко к 100%.
Et voilà!
Читать полностью »
Фантом: большая сборка мусора
2017-06-29 в 16:56, admin, рубрики: Алгоритмы, виртуальная память, Компиляторы, персистентность, Программирование, сборка мусора, системное программированиеЭта статья — продолжение, начало здесь. Для тех, кто не кликнул на ссылку, краткая вводная:
Мы обсуждаем сборку мусора в операционной системе Фантом, то есть в среде виртуальной (байткод-) машины, работающей в персистентной оперативной памяти. Размер персистентной памяти — порядка размера диска, то есть единицы терабайт на сегодня и, потенциально, десятки и сотни терабайт завтра.
Поскольку речь идёт о виртуальной памяти, то существенная часть объектов в любом случае находится не в оперативной памяти, независимо от того, какой алгоритм и вообще подход мы избрали. То есть — стоимость доступа к объекту велика. Это, в общем случае, дисковая операция.
Кроме того, следует ожидать, что в сетевой среде совокупности таких виртуальных машин будут обмениваться прокси-объектами, то есть будет существовать граф объектов, растянутый на много машин в сети и, конечно, во всём этом кошмаре потенциально потребуется уметь собирать мусор не только на одной машине, но и по сети.
Принятая мной идея схемы сборки мусора в такой среде выглядит как совокупность двух сборщиков.
Читать полностью »
JaCarta Authentication Server и JaCarta WebPass для OTP-аутентификации в Linux SSH
2017-06-29 в 9:21, admin, рубрики: JaCarta Authentication Server, JaCarta WebPass, JAS, linux, open source, OTP-аутентификация, ssh, Аладдин Р.Д., Блог компании Аладдин Р.Д., Единый Клиент JaCarta, информационная безопасность, криптография, системное программирование, метки: JaCarta WebPass, JAS, OTP-аутентификацияВ этой статье мы поговорим об основных этапах настройки аутентификации в Linux SSH для замены парольной аутентификации одноразовыми паролями — в статье описан сценарий аутентификации в сессию SSH-подключения к Linux OS посредством одноразовых паролей с использованием устройства JaCarta WebPass.
[Питер] Встреча JUG.ru c легендой параллельного программирования Maurice Herlihy — Transactional Memory and Beyond
2017-06-28 в 21:36, admin, рубрики: concurrency, JUG, jug.ru, multithreading, Блог компании JUG.ru Group, высокая производительность, лекции, митапы, параллельное программирование, системное программирование
У нас праздник! В начале июля в Санкт-Петербурге пройдет SPTCC 2017, летняя школа по параллельному программированию. Одним из лекторов школы станет Морис Херлихи (Maurice Herlihy), легенда параллельного программирования, один из авторов знаменитого учебника «The Art of Multiprocessor Programming».
В четверг, 6 июля, в 19:00 в Университете ИТМО Морис выступит на встрече JUG.ru. На этот раз мы будем говорить не про Java. Тема встречи — транзакционная память.
О чем же нам расскажет Морис?
Транзакционная память
Новое поколение процессорных архитектур предоставляет нам аппаратную транзакционную память (Hardware Transactional Memory — HTM), механизм синхронизации для быстрых транзакций в оперативной памяти. В данном докладе будет показано, что HTM это не просто более быстрый путь для релизации старых-добрых monitor-ов и latch-ей. На самом деле, HTM обеспечивает фундаментальные позитивные изменения в том, как мы программируем многоядерные машины (и возможно даже базы данных), позволяя нам переосмыслить базовые примитивы синхронизации, такие, как lock-и, управление памятью, и многообразие многопоточных структур данных.
Читать полностью »
A fistful of relays. Часть 4. Система команд или что можно уместить в 8 машинных инструкций?
2017-06-21 в 6:24, admin, рубрики: ненормальное программирование, программирование микроконтроллеров, реле, системное программирование, странные компьютерыНаконец-то можно запустить в моём компьютере на электромагнитных реле программу длиннее одной инструкции. Сейчас в нём есть ПЗУ на 8 команд, процессор с АЛУ и 8 восьмибитных регистров (один из которых PC).
Всего процессор поддерживает 5 групп инструкций: Арифметико-логические операции (ALU), Загрузка числа в регистр (MOVI), пересылка между регистрами (MOV), Остановка работы (HALT), Работа с памятью (LDST). Но есть нюансы…
Читать полностью »
Шел 2017 год. Где UDP фрагментация?
2017-06-19 в 10:11, admin, рубрики: sip, voip, voximplant, Блог компании Voximplant, Программирование, Разработка систем передачи данных, Разработка систем связи, системное программированиеVoIP — это термин-зонтик. Набор технологий, протоколов и просто buzzword'ов, которые относятся к передаче голоса (и видео!) по компьютерным сетям (локальным или интернет) вместо телефонных. И да, большая часть телеком-провайдеров всё ещё использует для передачи голоса собственные сети вместо интернет. С недешевыми коробочками, куда втыкаются T1 и E1 провода.
Чаще всего, для айтишников, не работающих в телекоме, VoIP – это связка RTP/RTCP для передачи голоса/видео плюс SIP – для договориться, кому и как передавать. Именно это связка позволяет подключить офисные «SIP телефоны» к Bitrix24 или Asterisk. Оба протокола могут работать как по TCP, так и по UDP. С передачей голоса по RTP вопросов нет: за редчайшим исключением используется UDP протокол, а кодеки компенсируют потерянные пакеты, так что собеседник почти не «квакает» даже не на самом лучшем канале связи. А вот с SIP история более печальная.