Рубрика «виртуальная машина»

Полёт свиньи, или Оптимизация интерпретаторов байт-кода - 1

"No matter how hard you try, you can't make a racehorse out of a pig. You can, however, make a faster pig" (комментарий в исходном коде Емакса)

Всем известен тот факт, что свиньи не летают. Не менее популярно мнение о том, что интерпретаторы байт-кодов как техника исполнения языков высокого уровня не поддаются ускорению без применения трудоёмкой динамической компиляции.

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

Читать полностью »

Я часто слышал, что для понимания работы компьютера люди предлагают изучать C. Это хорошая мысль? Вы уверены? Сразу изложу выводы статьи, просто для абсолютной ясности:

  • C — это не то, «как работает компьютер».
  • Не думаю, что большинство людей говорят буквально, так что это неважно.
  • Понимание контекста означает, что учить С по этой причине всё еще может иметь смысл, в зависимости от ваших целей.

Я планирую написать ещё две статьи с более подробным объяснением выводов, но этого уже достаточно. Добавлю сюда ссылки, когда статьи выйдут.
Читать полностью »

Интерпретаторы байт-кодов своими руками - 1

Виртуальные машины языков программирования в последние десятилетия получили весьма широкое распространение. С презентации Java Virtual Machine во второй половине 90-х прошло уже достаточно много времени, и можно с уверенностью сказать, что интерпретаторы байт-кодов — не будущее, а настоящее.

Но данная техника, на мой взгляд, практически универсальна, и понимание основных принципов разработки интерпретаторов пригодится не только создателю очередного претендента на звание "Язык года" по версии TIOBE, но вообще любому программисту.

Словом, если вам интересно узнать, как складывают числа наши любимые языки программирования, о чём до сих пор спорят разработчики виртуальных машин и как безболезненно сопоставлять строки и регулярные выражения, прошу под кат.

Читать полностью »

Всё по ГОСТу. Защита информации при использовании технологий виртуализации - 1
01.06.2017 был введен в действие ГОСТ Р 56938-2016 «Защита информации. Защита информации при использовании технологий виртуализации. Общие положения». Как-то так вышло, что обзор данного ГОСТ во множестве нововведений законодательства затерялся и сейчас хотелось бы восполнить данный пробел.

Данный ГОСТ был разработан Федеральным автономным учреждением «Государственный научно-исследовательский испытательный институт проблем технической защиты информации Федеральной службы по техническому и экспортному контролю» (ФАУ «ГНИИИ ПТЗИ ФСТЭК России») и внесен техническим комитетом по стандартизации «Защита информации» (ТК 362).Читать полностью »

Привет! Сегодня мы хотели бы поднять проблему нагрузочной балансировки в Облаке, а точнее обсудить новый подход к принятию решения о живой миграции виртуальных машин между хостами, предложенный Дорианом Минаролли, Артаном Мазрекай и Берндом Фрайслебеном в их исследовании «Tackling uncertainty in long-term predictions for host overload and underload detection in cloud computing». Вольный перевод этой статьи мы сегодня публикуем.

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

Как принять решение о миграции виртуальных машин между хостами в Облаке - 1

Динамическими рабочими нагрузками в облачных вычислениях можно управлять с помощью живой миграции виртуальных машин с перегруженных или недогруженных хостов на другие узлы для экономии электроэнергии и снижения потерь за нарушение соглашения об уровне обслуживания (SLA). Проблемой является верное определение момента перегрузки хоста в будущем для своевременного проведения живой миграции.
Читать полностью »

Привет! Сегодня мы хотели бы поднять проблему нагрузочной балансировки в Облаке, а точнее обсудить новый подход к принятию решения о живой миграции виртуальных машин между хостами, предложенный Дорианом Минаролли, Артаном Мазрекай и Берндом Фрайслебеном в их исследовании «Tackling uncertainty in long-term predictions for host overload and underload detection in cloud computing». Вольный перевод этой статьи мы сегодня публикуем.

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

Балансировка нагрузки в Облаках - 1

Динамическими рабочими нагрузками в облачных вычислениях можно управлять с помощью живой миграции виртуальных машин с перегруженных или недогруженных хостов на другие узлы для экономии электроэнергии и снижения потерь за нарушение соглашения об уровне обслуживания (SLA). Проблемой является верное определение момента перегрузки хоста в будущем для своевременного проведения живой миграции.
Читать полностью »

Сегодня мы подробно расскажем, как интегратору – партнеру 3CX подготовить облачную инфраструктуру Google для размещения сущностей (экземпляров) 3CX. Размещение сервера 3CX на облаке Google избавляет интегратора (или конечного пользователя) от необходимости вкладываться в серверное “железо” и тратить ресурсы на его обслуживание. Google – один из крупнейших и весьма надежных облачных провайдеров, а сервис Google Compute Engine отлично подходит для размещения АТС для небольших (да и больших) компаний.

Для размещения 3CX на Google Compute Engine следует выполнить несколько несложных шагов:

Одним жуть каким прохладным январским утром от знакомого прилетел вопрос — как на C# определить, не запущена ли программа в ОС (оконное приложение в ОС Windows 7 или новее) на виртуальной машине.

Требования к такому детектору были достаточно жёсткими:

  1. Должен быть полностью в исходных кодах,
  2. Должен собираться с помощью Visual Studio,
  3. Должен работать из-под аккаунта непривилегированного пользователя (нельзя использовать методы, требующие, к примеру, установки драйверов устройств, или иных операций, для которых нужны права администратора),
  4. Разрешено использовать .NET Framework 4.5 и никаких лишних зависимостей (типа Visual C++ Redistributable Package).

Под катом описание реализованного детектора на C# (в следующей части — с некоторыми элементами C++) и приличным количеством неприличного кода с использованием Visual Studio 2015 Community.

Структура публикации

  • 1 уровень. Изучение матчасти и простейших существующих решений:
    • немного теории касательно виртуализации,
    • реализация проверки ВМ с помощью данных из Windows Management Instrumentation (WMI).
  • 2 уровень. Поиск статей и публикаций про детектирование запуска в виртуальных машинах:
    • допиливаем реализацию с WMI,
    • работа с инструкцией CPUID.
  • 3 уровень. Поиск материалов с хакерских конференций:
    • допиливаем работу с CPUID,
    • делаем сводную таблицу параметров и результатов тестирования.

Читать полностью »

Система отчётов: как получать 50 млн. отчетов и сохранить Дзен - 1

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

Сегодня мы хотели рассказать вам о том, как наши ребята за три часа повысили производительность кластера для тестирования ПО в 4 раза, просто «пораскинув мозгами».

image
Читать полностью »