Обновить
413.41

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

Проблемы со скоростью выполнения системных вызовов «gettimeofday» и «clock_gettime» в AWS EC2

Время на прочтение8 мин
Охват и читатели6.9K

Кадр из фильма «Матрица: Революция»


В этой статье мы подробно рассмотрим детали одной интересной находки: два часто используемых системных вызова (gettimeofday, clock_gettime) в AWS EC2 выполняются очень медленно.


В Linux реализован механизм по ускорению этих двух часто используемых системных вызовов, благодаря которому их код выполняется в пространстве пользователя, что позволяет избежать переключениям в контекст ядра. Это сделано с помощью предоставляемой ядром виртуальной общей библиотеки (virtual shared library), которая отображается в адресное пространство всех запущенных программ.


Два вышеназванных системных вызова не могут использовать vDSO (virtual Dynamic Shared Object) в AWS EC2, поскольку виртуализированный источник временных меток (virtualized clock source) в xen (и некоторых конфигурациях kvm) не поддерживает получение информации о времени через vDSO.


Обойти эту проблему не получится. Можно поменять источник информации о времени на tsc, но это небезопасно. Далее мы рассмотрим вопрос более подробно и проведем сравнительное тестирование с помощью microbenchmark.

Читать дальше →

Pthreads: Потоки в русле POSIX

Время на прочтение10 мин
Охват и читатели182K

Современные операционные системы и микропроцессоры уже давно поддерживает многозадачность и вместе с тем, каждая из этих задач может выполняться в несколько потоков. Это дает ощутимый прирост производительности вычислений и позволяет лучше масштабировать пользовательские приложения и сервера, но за это приходится платить цену — усложняется разработка программы и ее отладка.



В этой статье мы познакомимся с POSIX Threads для того, чтобы затем узнать как это все работает в Linux. Не заходя в дебри синхронизации и сигналов, рассмотрим основные элементы Pthreads. Итак, под капотом потоки.

Читать дальше →

Здравствуй, Хабр

Время на прочтение3 мин
Охват и читатели25K


Тензор уже более 20 лет работает на рынке программного обеспечения. Бухгалтер, который выдает вам зарплату, точно знает, кто мы, и что мы делаем. А вот в IT-сфере мы о себе специально не заявляли. Пришло время это изменить и познакомиться.

Электронная отчетность, электронный документооборот, поиск и анализ закупок, корпоративная соцсеть, видеокоммуникации, управление персоналом – это лишь часть наших сервисов. Мы автоматизируем рабочие процессы и превращаем их в «несколько кликов».

Работать в СБИС можно офлайн, онлайн и в мобильном приложении.

Не будем грузить вас рассказами о нашем продукте. Если интересно, то вот здесь мы в буковках и картинках рассказали о нем все.

Почему мы – интересные и полезные?


Для разработки своих продуктов (online сервисов, desktop и мобильных приложений) мы используем собственный PaaS-фреймворк.

Backend фреймворк мы пишем на С++, при этом прикладной код можно писать как на С++, так и на Python или Javascript, для этого ко всем встроенным типам сделаны bridges. Помимо встроенных типов и системы вызовов (remoting, IPC, inproc), важной частью фреймворка является сервер приложения, который работает быстрее сервера Node.JS на аналогичном железе, но об этом чуть позже в отдельной статье.
Читать дальше →

Обманываем время: о тестировании с «подставным» временем на Linux и Docker

Время на прочтение3 мин
Охват и читатели16K

При разработке очередного бота для группы в Telegram у меня возникла необходимость испытать его при различных значениях системного времени. Этот бот в конце каждого дня отправляет (или, в зависимости от ряда условий, не отправляет) сообщение в чат и производит манипуляции с некоторыми предыдущими своими сообщениями (или, опять же, не производит).


Менять системное время глобально ой, как не хотелось. Муторно, плюс у меня в ней столько всего понаставлено, не дай Б-г что-то заглючит (вряд ли, но мало ли). Думал запустить VirtualBox, но уж больно лень было ставить «чистую» Убунту, расшаривать папки, и т. д., тем более что этот вариант жрёт, как троглодит серьёзно потребляет машинные ресурсы.


Но буквально недавно я начал ковырять Docker. «У него просто обязан быть механизм контроля системного времени внутри контейнера», — подумал я. Рассмотрим, что же в результате вышло.

Читать дальше →

Как найти 56 потенциальных уязвимостей в коде FreeBSD за один вечер

Время на прочтение28 мин
Охват и читатели9.6K
FreeBSD, CWE

Пришло время вновь проверить проект FreeBSD и продемонстрировать, что даже в таких серьезных и качественных проектах анализатор PVS-Studio легко находит ошибки. В этот раз я решил взглянуть на поиск ошибок с точки зрения обнаружения потенциальных уязвимостей. Анализатор PVS-Studio всегда умел выявлять дефекты, которые потенциально можно использовать для атаки. Но мы никогда не акцентировали на этом внимание и описывали ошибки как опечатки, последствия неудачного Copy-Paste и так далее, и не классифицировали их, например, согласно CWE. Сейчас очень популярно говорить и о безопасности, и об уязвимостях, поэтому попробую немного расширить ваше восприятие нашего анализатора. PVS-Studio — это не только поиск багов, но ещё и инструмент, повышающий безопасность кода.
Читать дальше →

Как мы портировали программно-аппаратное решение из SPARC Solaris в AMD64 Linux и виртуализировали все это

Время на прочтение5 мин
Охват и читатели7.9K
Эта статья для тех, кто все еще сильно любит древние Unix, но уже понимает, что срочно нужно мигрировать на Linux...
image

Началась эта история с того, что наш уважаемый заказчик решил уменьшить риски эксплуатации оборудования 10-ти летнего возраста, сэкономить на лицензиях и перейти с Unix на Linux, а заодно и виртуализировать это программно-аппаратное решение. Не то, чтобы заказчик не любил Solaris и Unix, просто сама возможность виртуализировать серверное приложение, жестко привязанное к специфической на сегодняшний день архитектуре SPARC и «седеющей» операционной системе Solaris, выглядела для заказчика очень привлекательной. Отдельным пунктом стоял вопрос замены специализированной карты с PCI интерфейсом на доступное «виртуализированное» решение. Мы решили взяться за такую интересную задачу.
Читать дальше →

Терминальная графика

Время на прочтение8 мин
Охват и читатели63K
Когда printf — мало, а ncurses — много


Когда данных становится слишком много, бывает не хватает стандартного вывода printf в консольной программе. Особенно если различных событий много и различные данные превращаются в безумный листинг. Эти данные могут поступать от контроллера через UART, и тут нечего и думать о какой-то gui-программе. Может так же быть и обычный bash-скрипт, к которому хочется прикрутить какой-никакой псевдографический интерфейс.
Читать дальше →

Java и Docker: это должен знать каждый

Время на прочтение7 мин
Охват и читатели91K
Многие разработчики знают, или должны знать, что Java-процессы, исполняемые внутри контейнеров Linux (среди них — docker, rkt, runC, lxcfs, и другие), ведут себя не так, как ожидается. Происходит это тогда, когда механизму JVM ergonomics позволяют самостоятельно задавать параметры сборщика мусора и компилятора, управлять размером кучи. Когда Java-приложение запускают без ключа, указывающего на необходимость настройки параметров, скажем, командой java -jar myapplication-fat.jar, JVM самостоятельно настроит некоторые параметры, стремясь обеспечить наилучшую производительность приложения.

В этом материале мы поговорим о том, что необходимо знать разработчику перед тем, как он займётся упаковкой своих приложений, написанных на Java, в контейнеры Linux.
Читать дальше →

Position-independent code (PIC) в разделяемых библиотеках на x64

Время на прочтение8 мин
Охват и читатели15K

enter image description here


Привет, я все еще Марко и все еще системный программист в Badoo. На прошлой неделе я опубликовал перевод о PIC в шареных библиотеках, но есть вторая часть – про разделяемые библиотеки на х64, поэтому решил не оставлять дело незаконченным.

Читать дальше →

Придумываем название для нового гипервайзера для архитектуры MIPS с аппаратно-поддерживаемой виртуализацией

Время на прочтение5 мин
Охват и читатели8.6K
На днях в офисе Imagination Technologies в Санта-Клара, Калифорния ко мне подходит специалист по многоядерному Линуксу Леонид Егошин и говорит:

Егошин: Вот, написал самый маленький гипервайзер в мире.

Я: Да? А как называется?

Егошин: Еще не придумал. И маркетинг названия не спустил. Придумай название! Это все равно будет opensource-проект.

Я: Мне чего-то трудно такое придумать. Как говорится «как вы яхту назовете, так она и поплывет». Надо общественность спросить.

Егошин: И я еще в апреле в Долгопрудном буду, в МФТИ. Не был там с XX века. Есть ли там кто-нибудь, кого интересует MIPS-Linux/IoT/гипервизоры на MIPS?

Я: Ну об этом тоже можно спросить общественность.

Итого, я написал этот пост, чтобы спросить общественность. Но сначала я расскажу, кто такой Леонид Егошин и что такое гипервайзер.

***

Не вся молодежь знает, но в СССР был свой Unix. Не при Брежневе, но уже при Андропове.

И вот одним из первых советских юниксологов и был Егошин (он единственный на фотке на Красной Площади 1980-х, кто улыбается). Потом Егошин переехал в Silicon Valley и стал работать в MIPS Technologies, которая стала Imagination Technologies. На снимке справа Егошин уже в 2015 году, с первой привезенной в Америку из России платой с российским микропроцессором Байкал-Т — Егошин помогал отлаживать на ней Линукс:



А теперь что такое гипервайзер.
Читать дальше →

Position-independent code (PIC) в разделяемых библиотеках

Время на прочтение16 мин
Охват и читатели28K

enter image description here


Привет. Меня зовут Марко, и я системный программист в Badoo. Я очень люблю досконально разбираться в том, как работают те или иные вещи, и тонкости работы разделяемых библиотек в Linux не исключение. Я представляю вам перевод именно такого разбора. Приятного чтения.

Читать дальше →

Bake – запускаем таски на bash

Время на прочтение2 мин
Охват и читатели6.5K

Думаю многим известна ситуация, когда собственный изобретенный велосипед нигде потом не используется. Поэтому я долго не решался опубликовать эту разработку, пока не обратил внимание, что таскаю его из проекта в проект. И так, одним из неотъемлемых элементов современной разработки являются так называемые таск раннеры – это Grunt/Gulp для nodejs, Rake для Ruby, Make для C/C++ и т.п. А для главного инструмента разработчика – консоли – ничего подобного нет. Точнее есть, но, как это обычно бывает, не совсем то. В результате изысканий, на свет появился инструмент Bake – таскраннер написанный на bash с поддержкой модульной структуры.


Основные особенности:


  • Таски в виде функции.
  • Поддержка аргументов.
  • Модули.
Читать дальше →

Почему все виртуальные помощники — женщины?

Время на прочтение5 мин
Охват и читатели32K


Вы замечали, в нашем мире все так устроено, что везде можно найти плюсы и минусы, черное и белое, мужское и женское? Понятно, что на Хабре 76,1 процентов мужчины, поэтому, если вы испытываете жесткий антагонизм к тематическим постам, можете смело дальше не читать. Под катом много картинок и пара любопытных историй о том, почему современные виртуальные помощники говорят женскими голосами.
Читать дальше →

Ближайшие события

Некоторые приёмы работы в Битрикс на SQL и BASH

Время на прочтение6 мин
Охват и читатели34K
Я продолжаю писать о Битриксе в контексте обменов, Mysql и командной строки Linux.

Эта статья является вводной к серии статей о структуре базы данных Битрикс, где эта тема будет раскрыта достаточно подробно. Для начала же будут представлены решения некоторых небольших, но назойливых задач. Как всегда, знание SQL обязательно.

В статье рассматриваются довольно частные вопросы, которые не возникают ежедневно. Конечно, вы можете использовать эти материалы по их прямому назначению, но главная цель статьи не в этом. Я начинаю вскрывать «чёрный ящик» под названием «структура базы данных битрикс», и показывать, что эти знания могут пригодиться для повышения уровня владения как системой, так и базовыми технологиями (SQL, linux shell), что, конечно, помогает решать новые, сложные, интересные, разнообразные задачи.

Страница, с которой можно делать SQL запросы в базу, или mysql web клиент битрикс, находится в панели управления Битрикса по пути: «Настройки->Инструменты->SQL запрос».

Также, конечно, можно делать запросы из командной строки операционной системы, для чего могу предложить вам несложную операцию извлечения логина и пароля прямо из настроек Битрикса:

log=$(grep -i "login" /home/bitrix/www/bitrix/php_interface/dbconn.php | cut -f2 -d'"')
pas=$(grep -i "pass" /home/bitrix/www/bitrix/php_interface/dbconn.php | cut -f2 -d'"')
mysql -u$log -p$pas $log

— таким образом можно получить логин и пароль к базе данных Mysql Bitrix из командной строки linux на bash. Пути, конечно же, заменяйте на ваши собственные. В варианте, предоставляемом виртаульной машиной Битрикс, DOCUMENT_ROOT выглядит как /home/bitrix/www/.
Читать дальше →

Как кастомные решения помогли сэкономить на сетевой инфраструктуре

Время на прочтение11 мин
Охват и читатели6.5K


Построение инфраструктуры CDN связано с большим количеством технических вопросов: от выбора оборудования и установки его в датацентрах до пользовательского интерфейса для взаимодействия с возможностями сети. Мы приводим перевод статьи из блога Fastly, где команда рассказывает об очень интересных кастомных решениях для работы с сетью (значительная часть которых независимо была использована в инфраструктуре Айри).

В результате оптимизации инфраструктуры удалось добиться минимального времени простоя при отказе какого-либо узла и большой масштабируемости системы.
Читать дальше →

EMC DPO: как защитить свои товары от подделок

Время на прочтение7 мин
Охват и читатели5.5K
Представим ситуацию: вы приходите в магазин, скажем, дорогих часов, покупаете понравившийся товар, с нетерпением идете домой, чтобы открыть заветную коробочку, открываете ее, и, вдруг, выясняется, что купленный товар — дешевая подделка.

Знакомо? Что делать и кто виноват? Доверие к производителю часов у вас начинает резко падать. А разве виноват произоводитель часов, что его продукцию подделывают? Спорный вопрос, мне кажется. Так или иначе, очевидно, что контрафакт причиняет огромные репутационные потери и убытки легальным производителям.

Решением может быть использование продукта EMC DPO и блокчейна Emercoin.
Читать дальше →

Разработка SELinux-модуля для пользователя

Время на прочтение3 мин
Охват и читатели13K

Это вторая статья из цикла


Сегодня мы поговорим о SELinux-пользователях, их создании, привязке, правам и другим вещам.

Зачем это делать? Есть много причин. Для меня главной причиной было выдать доступ для техподдержки для рутинных операций (таких как ребут, чистка логов, диагностика итд), но без доступа к критичным данным и изменению системных функций.

Предположения


В тексте будет содержаться много технической информации, поэтому автор предполагает, что читатель:

  • Прочитал прошлую статью
  • Имеет под рукой CentOS 7
  • На котором установлены пакеты setools-console, policycoreutils-devel, selinux-policy-devel, policycoreutils-newrole
  • И включен SELinux в режиме enforcing с политикой targeted или minimum

Это все про вас? Тогда поехали!
Читать дальше →

Так ли безопасно использование абсолютного пути в *nix системах, как мы привыкли считать?

Время на прочтение4 мин
Охват и читатели27K

image


Идея редактирования переменных окружения пользователя для повышения прав при тестировании на проникновение стара как мир. По этой теме написано множество статей, и даже в книгах начали появляться советы по использованию абсолютного пути вместо относительного. Вот пример такого совета из довольно известной книги Unix и Linux. Руководство системного администратора (4 издание):


…
Рекомендуем взять за правило при вводе команды указывать полное имя, например /bin/su или /usr/bin/su, а не просто su. Это послужит определенной защитой от тех программ с именем su, которые преднамеренно были прописаны в переменной среды path злоумышленником, намеревавшимся собрать хороший “урожай” паролей.
…

Но так ли это безопасно? Если вы тоже задавались этим вопросом, то добро пожаловать под кат.


Читать дальше →

Салют-ЭЛ24Д1: отладочная плата на российском процессоре 1892ВМ14Я для жестких условий эксплуатации

Время на прочтение5 мин
Охват и читатели28K

В нашей инженерной лаборатории появилась новая российская плата для экспериментов — отладочный модуль Салют-ЭЛ24Д1 на многоядерной системе на кристалле 1892ВМ14Я для Арктики и космоса. Посмотрим, на что она способна.
Читать дальше →

Портирование — дело тонкое: проверка Far Manager под Linux

Время на прочтение12 мин
Охват и читатели19K
Одним из популярных файловых менеджеров в среде Microsoft Windows является Far Manager, принявший эстафету у Norton Commander, созданной еще для DOS. Far Manager позволяет облегчить работу с файловой системой (создание, редактирование, просмотр, копирование, перемещение, поиск, удаление файлов), а также расширяет стандартный функционал (работа с сетью, архивами, резервными копиями и т.д.). Недавно была произведена работа по портированию Far Manager на Linux, и на текущий момент была выпущена альфа-версия. Команда PVS-Studio не могла обойти стороной данное событие и решила проверить качество адаптированного кода.
Picture 24
Читать дальше →