Архитекторы процессоров архитектуры x86 исторически были против предоставления программистам возможности непосредственного управления кэшем. Один как-то сказал мне в 2009 году — «никогда мы этого не сделаем, кэш всегда должен быть прозрачным для программиста». Некоторые RISC процессоры представляют архитектурную возможность управления данными/кодом, который окажется в кэше. И вот, наконец-то, нечто подобное появилось и в архитектуре x86 (начиная с Broadwell*).
Читать полностью »
Рубрика «системное программирование» - 61
CAT — Управление размером кэша процессора
2016-02-16 в 6:56, admin, рубрики: cache, intel, llc, Блог компании Intel, высокая производительность, системное программированиеman!( C => D )
2016-01-31 в 9:32, admin, рубрики: C, clang, D, dlang, Программирование, системное программированиеКаждый С-программист с опытом накапливает привычный багаж техник и идиом. Зачастую бывает сложно понять, как сделать то же самое в новом языке. Так вот, вашему вниманию предлагается коллекция распространенных паттернов на C и их эквивалентов на D. Если вы собираетесь перевести свою программу с C на D или ещё сомневаетесь стоит ли это делать, то эта статья для вас.
Две точки
2016-01-29 в 9:23, admin, рубрики: bash, dot-dot, path resolution, pwd, shell, uri, vfs, Настройка Linux, рабочий каталог, символьные ссылки, системное администрирование, системное программирование, удивительное рядом, метки: pwd 
На картинке выше вы можете наблюдать, как ls считает, что linkylink/.. это не то же самое, что текущий каталог. При этом cd, кажется, с ним не согласен.
Начну рассказ со всем знакомых веб-адресов, которые похожи на системные пути.
Две точки в путях URI (в вебе)
Rust и парадокс Блаба
2016-01-25 в 7:21, admin, рубрики: blub, c++, Rust, TypeScript, Александреску, блаб, день ног, Компиляторы, парадокс, побеждая посредственность, Пол Грэм, Программирование, системное программирование
Несколько недель назад я наткнулся на сравнительный анализ Rust, D и Go от Андрея Александреску. Андрей, уважаемый член сообщества C++ и главный разработчик языка программирования D, нанес Rust сокрушительный удар под конец своего повествования, высказав нечто, что выглядит довольно проницательным наблюдением:
Чтение кода на Rust навевает шутки о том, как «друзья не позволяют друзьям пропускать день ног» и вызывает в голове комические образы мужчин с халкообразным торсом, балансирующим на тощих ногах. Rust ставит во главу угла безопасность и ювелирное обращение с памятью. В действительности, это довольно редко является настоящий проблемой, и такой подход превращает процесс мышления и написания кода в монотонный и скучный процесс.
После нескольких встреч с Андреем, увидев некоторые из его выступлений, я убедился, что он любит подшучивать. Тем не менее, давайте проглотим наживку. Эта шутка смешная только потому, что она выглядит смешной, или может быть потому, что в ней только доля шутки?Читать полностью »
Новый интерфейс для получения атрибутов процессов в Linux
2016-01-20 в 3:06, admin, рубрики: CRIU, kernel, linux, linux kernel, netlink, open source, opensourse, openvz, procfs, ps, task_diag, virtuozzo, Разработка под Linux, системное программированиеРазрабатывая CRIU, мы поняли, что текущий интерфейс получения информации о процессах не идеален. К тому же, подобная проблема была успешно решена для сокетов. Мы попытались перенести эти наработки на процессы и получили достаточно хорошие результаты, о которых вы узнаете, дочитав эту статью до конца.
Недостатки текущего интерфейса
Прочитав заголовок, возникает вопрос:”A чем же старый интерфейс не угодил”? Многие из вас знают, что сейчас информация о процессах собирается по файловой системе procfs. Здесь каждому процессу соответствует директория, которая содержит несколько десятков файлов.
$ ls /proc/self/
attr cwd loginuid numa_maps schedstat task
autogroup environ map_files oom_adj sessionid timers
auxv exe maps oom_score setgroups uid_map
cgroup fd mem oom_score_adj smaps wchan
clear_refs fdinfo mountinfo pagemap stack
cmdline gid_map mounts personality stat
comm io mountstats projid_map statm
coredump_filter latency net root status
cpuset limits ns sched syscall
Поиск множества регулярных выражений при помощи библиотеки Hyperscan
2016-01-19 в 13:03, admin, рубрики: C, c++, intel, PCRE, regexp, rspamd, высокая производительность, системное программирование, спамВ данной статье я бы хотел рассказать о собственном опыте оптимизации выполнения множества регулярных выражений при помощи системы hyperscan. Так вышло, что при разработке своего спам-фильтра rspamd я столкнулся с необходимостью портировать большой объем старых правил, написанных для spamassassin за несколько лет работы. Моим первым решением было написать плагин, который бы читал эти правила и строил из них синтаксическое дерево. Затем на этом дереве выполнялись различные оптимизации, чтобы сократить общее время выполнения (об этом я даже делал небольшую презентацию).
К сожалению, в ходе эксплуатации выяснилось, что pcre все равно являются узким местом, и на больших письмах этот набор правил работает слишком медленно. Выяснилось, например, что на письме размером в мегабайт pcre проверяет около гигабайта (!) текста. Различные трюки, вроде ограничения количества текста для регулярных выражений, оказывали негативное влияние на срабатывания правил, а оптимизации pcre путем интенсивного использования jit fast path через pcre_jit_exec оказались слишком опасными — некоторые старые выражения были откровенно некорректными и в сочетании с некорректным входным текстом, например, содержащим «битые» UTF8 символы, приводили к воспроизводимым багам с повреждением стека программы. Однако на конференции highload мы поговорили со Славой Ольховченковым, и он мне посоветовал посмотреть на hyperscan. Далее я перейду к сути и расскажу, что из этого получилось.
Читать полностью »
Rust в 2016 году
2016-01-10 в 11:53, admin, рубрики: 2016, Rust, Компиляторы, Программирование, системное программирование
2015 год был значительным годом для Rust: мы выпустили версию 1.0, стабилизировали большинство элементов языка и кучу библиотек, значительно выросли как сообщество, а также реорганизовали управление проектом. Может показаться что 2016 год не будет таким же интересным (будет трудно превзойти выпуск 1.0), но это будет супер-важный год для Rust, в котором произойдет много захватывающих вещей. В этой статье я расскажу о том, что, как я думаю, должно произойти. Это не официальная позиция и не обещание разработчиков Rust.
2015
Прежде чем мы поговорим о будущем, вот несколько цифр за прошлый год:
В 2015 году силами сообщества Rust:
- Создано 331 предложение по улучшению языка (RFC)
- из которых 161 были приняты и влиты в основной репозиторий
- всего 120 человек подавало RFC, из них 6 человек создало 10 и более, Alex Crichton создал 23 RFC
- Создано 559 задач по улучшению RFC
- Прислано и влито в репозиторий Rust 4630 Pull-запросов
- авторами которых является 831 человек, из них 91 создали больше 10 запросов, 446 человек создали только один, а Steve Klabnik был автором 551 pull-запроса
- Создано 4710 задач
- из которых 1611 еще открыты
- авторами которых является 1319 человек, из которых 79 создали больше 10, а Alex Crichton открыл всего 159 задач
- Выпущено шесть стабильных релизов Rust (1.0 – 1.5)
- Поддерживается стабильность Rust – 96% пакетов, которые компилировались на 1.0, по прежнему компилируются с использованием версии 1.5
Дайджест по итогам 2015 года
2016-01-06 в 14:07, admin, рубрики: kolibrios, open source, Блог компании KolibriOS Project Team, колибри, системное программирование
Мы решили поздравить всех читателей блога с наступившим Новым годом и подвести итоги прошедшего. Конец 2015 года ознаменовался круглыми числами — 6000-й билд в SVN и 5000-й участник группы https://vk.com/kolibri_os социальной сети ВКонтакте.
Итоги 2015-го года для C++
2016-01-06 в 9:17, admin, рубрики: c++, Блог компании Инфопульс Украина, Компиляторы, Программирование, системное программирование
Возможно, я скажу банальную вещь, но прошедший год был хорошим годом для С++!
Просто факты:
- Вышла Visual Studio 2015 с отличной поддержкой возможностей С++14/17 и даже нескольких экспериментальных вещей
- Вышел долгожданный GCC 5.0
- С++ набрал серьёзную популярность. Где-то с июля — третье место в Tiobe Ranking
- На конференции CppCon 2015 было сделано несколько важных анонсов
А теперь об этом и другом немного подробнее
Читать полностью »
Демонстрация-обзор решения Dell EVO:rail
2016-01-05 в 11:47, admin, рубрики: all in box, dell, evorail, VDI решения VMware, VMware, Блог компании МУК, Облачные вычисления, Сетевые технологии, системное администрирование, системное программированиеВ демонстрации показаны конвергентные решения Dell для ИТ-инфраструктуры: EVO:rail
Видеозапись живой демонстрации
Стенограмма c разбивкой по времени
— На удаленном нашем ресурсе для партнеров demos.dell.com evo:rail. Что это такое? Это совместное решение с компанией VMware, которое полностью было просчитано, варингировано и идет как некий готовый бандл, рассчитан в двух вариантах, либо на определенное количество электронных машин, либо на определенное количество рабочих мест, т.е. для решения. Оно идет с программным обеспечением, с лицензиями, оно идет интегрированное на фабрике и это вот такой вот готовый модуль, который получаете и просто разворачиваете инфраструктуру. Немножко дальше мы покажем насколько эффективно это, легко и просто.
Что это дает? Это дает вам возможность не думать о том, сколько виртуальных машин нужно, как просчитать производительность, вы получаете это все от одного производителя, т.е. получаете поддержку с одних рук, ну и практически развертывание виртуальной среды у вас уже занимает не часы, а буквально 15 минут. Мой коллега покажет, что это такое и как оно работает. Читать полностью »
