JPJ поглощает Gamesys Group Plc и меняет название

Рейтинг надежности онлайн казино за 2020 год:
  • Казино ИКС
    Казино ИКС

    1 место, лидер народного рейтинга! Лучшее казино по отзывам игроков. Большие бонусы и моментальный вывод выигрыша на карту.

  • Джой Казино
    Джой Казино

    2 место в рейтинге! Хорошее лицензионное казино с огромными Джекпотами и моментальными выплатами!

  • Казино Чемпион
    Казино Чемпион

    3 место! Одно из самых надежных онлайн казино для россиян. Полностью на русском языке! Бонус за регистрацию и за каждый депозит!

Jpj Share News (JPJ)

Share Name Share Symbol Market Type Share ISIN Share Description
Jpj Group Plc LSE:JPJ London Ordinary Share GB00BZ14BX56 ORD GBP0.10
Price Change % Change Share Price Bid Price Offer Price High Price Low Price Open Price Shares Traded Last Trade
0.00 0.0% 725.00 717.00 727.00 0.00 0.00 0.00 0.00 00:00:00
Industry Sector Turnover (m) Profit (m) EPS — Basic PE Ratio Market Cap (m)
Travel & Leisure 319.6 18.5 20.0 36.3 540

Gamesys Group PLC Block Listing Return

02/01/2020 1:17pm

UK Regulatory (RNS & others)

Jpj (LSE:JPJ)
Historical Stock Chart

3 Months : From Dec 2020 to Mar 2020

RNS Number : 5804Y

Gamesys Group PLC

02 January 2020

Block Listing Return

Date: 02 January 2020

(Note: Italicised terms have the same meaning as given in the Listing Rules.)

Gamesys Group plc

Dan Talisman, Chief Legal Officer & Company Secretary

Механизмы контейнеризации: cgroups

Продолжаем цикл статей о механизмах контейнеризации. В прошлый раз мы говорили об изоляции процессов с помощью механизма «пространств имён» (namespaces). Но для контейнеризации одной лишь изоляции ресурсов недостаточно. Если мы запускаем какое-либо приложение в изолированном окружении, мы должны быть уверены в том, что этому приложению выделено достаточно ресурсов и что оно не будет потреблять лишние ресурсы, нарушая тем самым работу остальной системы. Для решения этой задачи в ядре Linux имеется специальный механизм — cgroups (сокращение от control groups, контрольные группы). О нём мы расскажем в сегодняшней статье.

Тема cgroups сегодня особенно актуальна: в ядро версии 4.5, вышедшей в свет в январе текущего года, была официально добавлена новая версия этого механизма — group v2.
В ходе работы над ней cgroups был по сути переписан заново.

Почему потребовались столь радикальные изменения? Чтобы ответить на этот вопрос, рассмотрим в деталях, как была реализована первая версия cgroups.

Cgroups: краткая история

Разработка cgroups была начата в 2006 году сотрудниками Google Полом Менеджем и Рохитом Сетом. Термин «контрольная группа» тогда ещё не использовался, а вместо него употреблялся термин «контейнеры процессов» (process containers). Собственно, сначала они и не ставили перед собой цели создать cgroups в современном понимании. Изначальный замысел был гораздо скромнее: усовершенствовать механизм cpuset, предназначенный для распределения процессорного времени и памяти между задачами. Но со временем всё переросло в более масштабный проект.

В конце 2007 года название process containers было заменено на control groups. Это было сделано, чтобы избежать разночтений в толковании термина «контейнер» (в то время уже активно развивался проект OpenVZ, и слово «контейнер» стало употребляться в новом, современном значении).

В 2008 году механизм cgroups был официально добавлен в ядро Linux (версия 2.6.24). Что нового появилось в этой версии ядра по сравнению с предыдущими?

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

В init/main.c были были добавлены отсылки к функциям для активации cgoups во время загрузки: cgroup_init и cgroup_init_early. Были незначительно изменены функции, используемые для порождения и завершения процесса — fork() и exit().

В виртуальной файловой системе /proc появились новые директории: /proc//сgroup (для каждого процесса) и /proc/cgroups (для системы в целом).

Архитектура

Механизм cgroups состоит из двух составных частей: ядра (cgroup core) и так называемых подсистем. В ядре версии 4.4.0.21 таких подсистем 12:

  • blkio — устанавливает лимиты на чтение и запись с блочных устройств;
  • cpuacct — генерирует отчёты об использовании ресурсов процессора;
  • cpu — обеспечивает доступ процессов в рамках контрольной группы к CPU;
  • cpuset — распределяет задачи в рамках контрольной группы между процессорными ядрами;
  • devices — разрешает или блокирует доступ к устройствам;
  • freezer — приостанавливает и возобновляет выполнение задач в рамках контрольной группы
  • hugetlb — активирует поддержку больших страниц памяти для контрольных групп;
  • memory — управляет выделением памяти для групп процессов;
  • net_cls — помечает сетевые пакеты специальным тэгом, что позволяет идентифицировать пакеты, порождаемые определённой задачей в рамках контрольной группы;
  • netprio — используется для динамической установки приоритетов по трафику;
  • pids — используется для ограничения количества процессов в рамках контрольной группы.

Вывести список подсистем на консоль можно с помощью команды:

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

  • cgroup.clone_children — позволяет передавать дочерним контрольным группам свойства родительских;
  • tasks — содержит список PID всех процессов, включённых в контрольные группы;
    cgroup.procs — содержит список TGID групп процессов, включённых в контрольные группы;
  • cgroup.event_control — позволяет отправлять уведомления в случае изменения статуса контрольной группы;
  • release_agent — содержится команда, которая будет выполнена, если включена опция notify_on_release. Может использоваться, например, для автоматического удаления пустых контрольных групп;
  • notify_on_release — содержит булеву переменную (0 или 1), включающую (или наоборот отключающую), выполнение команду, указанной в release_agent.

У каждой подсистемы имеются также собственные управляющие файлы. О некоторых из них мы расскажем ниже.

Чтобы создать контрольную группу, достаточно создать вложенную директорию в любой из подсистем. В эту вложенную директорию будут автоматически добавлены управляющие файлы (ниже мы расскажем об этом более подробно). Добавить процессы в группу очень просто: нужно просто записать их PID в управляющий файл tasks.

Совокупность контрольных групп, встроенных в подсистему, называется иерархией.Попробуем разобрать принципы функционирования cgroups на простых практических примерах.

Иерархия cgroups: практическое знакомство

Пример 1: управление процессорными ресурсами

С помощью этой команды мы создали контрольную группу, в которой содержатся следующие управляющие файлы:

Пока что в нашей группе никаких процессов нет. Чтобы добавить процесс, нужно записать его PID в файл tasks, например:

Cимволами $$ обозначается PID процесса, выполняемого текущей командной оболочкой.

Этот процесс не закреплён ни за одним ядром CPU, что подтверждает следующая команда:

Вывод этой команды показывает, что для интересующего нас процесса доступны 2 ядра CPU с номерами 0 и 1.

Попробуем «привязать» этот процесс к ядру с номером 0:

Проверим, что получилось:

Пример 2: управление памятью

Встроим созданную в предыдущем примере группу ещё в одну подсистему:

Попробуем ограничить для контрольной группы group0 потребление памяти. Для этого нам понадобится прописать соответствующий лимит в файле memory.limit_in_bytes:

Механизм cgroups предоставляет очень обширные возможности управления памятью. Например, с его помощью мы можем оградить критически важные процессы от попадания под горячую руку OOM-killer’a:

Если мы поместим в отдельную контрольную группу, например, ssh-демон и отключим для этой группы OOM-killer, то мы можем быть уверены в том, что он не будет «убит» при преувеличении потребления памяти.

Пример 3: управление устройствами

Добавим нашу контрольную группу ещё в одну иерархию:

По умолчанию у группы нет никаких ограничений доступа к устройствам:

Попробуем выставить ограничения:

Эта команда включит устройство /dev/null в список запрещённых для нашей контрольной группы. Мы записали в управляющий файл строку вида ‘c 1:3 rmw’. Сначала мы указываем тип устройства — в нашем случае это символьное устройство, обозначаемое буквой с (сокращение от character device). Два других типа устройств — это блочные (b) и все возможные устройства (а). Далее следуют мажорный и минорный номера устройства. Узнать номера можно с помощью команды вида:

Вместо /dev/null, естественно, можно указать любой другой путь. Вывод этой команды выглядит так:

Первая цифра в выводе — это мажорный, а вторая — минорный номер.

Три последние буквы означают права доступа: r — разрешение читать файлы с указанного устройства, w — разрешение записывать на указанное устройство, m — разрешение создавать новые файлы устройств.

При выполнении последней команды система выдаст сообщение об ошибке:

С устройством /dev/null мы никак взаимодействовать не можем, потому что доступ закрыт.

В результате выполнения этой команды в файл /sys/fs/cgroup/devices/group0/devices.allow будет добавлена запись a *:* rwm, и все ограничения будут сняты.

Cgroups и контейнеры

Из приведённых примеров понятно, в чём заключается принцип работы cgroups: мы помещаем определённые процессы в группу, которую затем «встраиваем» в подсистемы. Разберём теперь более сложные примеры и рассмотрим, как cgroups используются в современных инструментах контейнеризации на примере LXC.

Установим LXC и создадим контейнер:

Посмотрим, что изменилось в директории cgroups после создания и запуска контейнера:

Как видим, в каждой иерархии появилась директория lxc, которая в свою очередь содержит поддиректорию Ubuntu. Для каждого нового контейнера в директории lxc будет создаваться отдельная поддиректория. PID всех запускаемых в этом контейнере процессов будут записываться в файл /sys/fs/cgroup/cpu/lxc/[имя контейнера]/tasks

Выделять ресурсы для контейнеров можно как с помощью управляющих файлов cgroups, так и с помощью специальных команд lxc, например:

Аналогичным образом дело обстоит с контейнерами Docker, systemd-nspawn и другими.

Недостатки cgroups

На протяжении почти 10 лет существования механизм cgroups неоднократно подвергался критике. Как отметил автор одной статьи на LWN.net, разработчики ядра cgroups активно не любят. Причины такой нелюбви можно понять даже из приведённых в этой статье примеров, хоть мы и старались подавать их максимально нейтрально, без эмоций: встраивать контрольную группу в каждую подсистему по отдельности очень неудобно. Присмотревшись повнимательней, мы увидим, что такой подход отличается крайней непоследовательностью.

Если мы, например, создаём вложенную контрольную группу, то в некоторых подсистемах настройки родительской группы наследуются, а в некоторых — нет.

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

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

Автор этого текста, инженер Facebook Течжен Хе, прямо указал, что главная проблема cgroups заключается в неправильной организации, при которой подсистемы подключаются к многочисленным иерархиям контрольных групп. Он предложил использовать одну и только одну иерархию, а подсистемы добавлять для каждой группы отдельно. Такой подход повлёк за собой серьёзные изменения вплоть до смены названия: механизм изоляции ресурсов теперь называется cgroup (в единственном числе), а не cgroups.

Разберёмся более подробно в сути реализованных нововведений.

Cgroup v2: что нового

Как уже было отмечено выше, сgroup v2 был включён в ядро Linux начиная с версии ядра 4.5. При этом старая версия поддерживается тоже. Для версии 4.6 уже существует патч, с помощью которого можно отключить поддержку первой версии при загрузке ядра.

На текущий момент в cgroup v2 можно работать только с тремя подсистемами: blkio, memory и PID. Уже появились (пока что в тестовом варианте) патчи, позволяющие управлять ресурсами CPU.

Cgroup v2 монтируется при помощи следующей команды:

Предположим, мы смонтировали cgroup 2 в директорию /cgroup2. В этой директории будут автоматически созданы следующие управляющие файлы:

  • cgroup.controllers — содержит список поддерживаемых подсистем;
  • cgroup.procs — по завершении монтирования содержит список всех выполняемых процессов в системе, включая процессы-зомби. Если мы создадим группу, то для неё тоже будет создан такой файл; он будет пустым, пока в группу не добавлены процессы;
  • cgroup.subtree_control — содержит список подсистем, активированных для данной контрольной группы; по умолчанию пуст.

Эти же самые файлы создаются в каждой новой контрольной группе. Также в группу добавляется файл cgroup.events, который в корневой директории отсутствует.

Новая группа создаётся так:

Чтобы добавить для группы подсистему, нужно записать имя этой подсистемы в файл cgroup.subtree_control:

Для удаления подсистемы используется аналогичная команда, только на место плюса ставится минус:

Когда для группы активируется подсистема, в ней создаются дополнительные управляющие файлы. Например, после активации подсистемы PID в директории появятся файлы pids.max и pids.current. Первый из этих файлов используется для ограничения числа процессов в группе, а второй — содержит информацию о числе процессов, включённых в группу на текущий момент.

Внутри уже имеющихся групп можно создавать подгруппы:

Все подгруппы наследуют характеристики родительской группы. В только что приведённом примере подсистема PID будет активирована как для группы group1, так и для обеих вложенных в неё подгрупп; в них также будут добавлены файлы pids.max и pids.current. Сказанное можно проиллюстрировать с помощью схемы:

Чтобы избежать недоразумений с вложенными группами (см. выше), в cgroup v2 действует следующее правило: нельзя добавить процесс во вложенную группу, если в ней уже активирована какая-либо подсистема:

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

Заключение

В этой статье мы рассказали, как устроен механизм cgroups и какие изменения были внесены в его новую версию. Если у вас есть вопросы и дополнения — добро пожаловать в комментарии.

Для всех, кто хочет глубже погрузиться в тему, приводим список ссылок на интересные материалы:

Если вы по тем или иным причинам не можете оставлять комментарии здесь, добро пожаловать в наш корпоративный блог.

Свежий взгляд на PLC на примере решений компании Corinex 50

Автор: Директор по развитию и новым продуктам ЗАО «СЕТЬТЕЛЕКОМ», торговая марка Altegrosky

Статья публикуется в рамках конкурса «Формула связи»

Оглавление:

  1. ВведениеМифы и факты о PLC
  2. Немного теории
  3. Характеристики PLC сетей
  4. PLC и коаксиальные сети
  5. Методы подключения к электросетям
  6. Заключение
  7. Приложение. Таблица расчета PLC сети

Введение

Мифы и факты о PLC

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

Малая мощность PLC сигнала (100 мВт) небольшими порциями распределена по широкому спектру, в то время как большая мощность КВ радиостанций ( 1 … 50 Вт) сконцентрирована в узком спектре;

Счетчик не оказывает влияния на сигнал. Ослабление около 5 дБ;

Счетчик ослабляет PLC сигнал. Ослабление 5-40 дБ. В этом случае можно подключать сигнал после счетчика и обеспечить нормально качество работы PLC сети;

  • Счетчик шунтирует PLC сигнал. В этом случае большая часть сигнала ослабляется через встроенный ВЧ шунт, PLC подключение не работает ни до счетчика, ни после счетчика. Единственный вариант установить связь отступить от счетчика по кабелю направленному в сторону потребителей от 10 метров и выше.
  • Факт 2. В алюминиевой проводке затухание сигнала сильнее, чем в медной, что сокращает дальность связи примерно в 2 раза. Факт 3. В подземных кабелях из-за свойств земли затухание сигнала в 2-3 раза больше. Однако на передачу сигнала в электросетях, в основном, влияет не ослабление, а уровень шума, который в подземных коммуникациях существенно ниже. Факт 4. Чем больше разветвлений (автоматов) в электрощите, тем сильнее падает мощность сигнала прямо в точке подключения сигнала.
    На реальных объектах сочетание нескольких неблагоприятных факторов может сделать развертывание PLC невыгодным или принципиально невозможным, поэтому перед развертыванием сети всегда необходимо собирать максимальное количеств информации, включая план электросети, тип кабельной проводки, схемы щитов и автоматов, и что особенно важно, сверить полученную информацию с реальностью. Типичный пример организации электросети в российской глубинке:

    Немного теории

    Рис 1. Спектр PLC сигнала

    Замечательным свойством технологии является умение подстраивать степень модуляции по каждой несущей под затухание, т. е. адаптация к амплитудно-частотной характеристики линии. Таким образом «заваленные» частоты продолжают использоваться для передачи полезного сигнала, пусть и с меньшим количеством символов на несущую.

    В решениях класса Home нет никакой возможности управления спектром передаваемого сигнала, поэтому качество работы на существующих сетях может оказаться неоптимальным. В операторских решениях существует возможность выбора режима работы (Mode), всего этих режимов 13 и они серьезно отличаются по характеру применения. Home решения используют только режим 13, средневольтовые решения Access используют режимы 1-3, низковольтовые решения Access по умолчанию используют режим 6. Вот так выглядит спектр живого сигнала полученного с коаксиального выхода PLC шлюза доступа компании Corinex:

    Рис. 2 Спектр Mode6

    Ниже приводится таблица спектров режимов 1-2-3, которые позволяют организовать BPL сеть на частотных репитерах, работающих на разной частоте по одному кабелю, например по линии электропередачи 10 Кв до удаленного поселка.

    Пример организации связи с использованием частотных репитеров:

    Об использовании схемы с FDD репитерами более подробно можно почитать в документации производителя: http://mm.corinex.com/Products/Access%20Products/Corinex%20Medium%20Voltage%20Access%20Gateway/manual/manual%20Corinex%20Medium%20Voltage%20Access%20Gateway%20ENG.pdf
    И наконец, полная картина всех режимов работы PLC.

    В реальных применениях на сетях 220 Вольт (LV) при необходимости увеличить дистанцию, на которой устанавливается связь рекомендуется использовать последовательность режимов 6 — 1 — 7

    Линейка оборудования Corinex

    В In-home и Access используются одинаковое железо, за исключением головных станций, которые имеют более мощный уровень сигнала и по определению отсутствуют в линейке In-Home.

    Рейтинг отдачи денег с онлайн казино:
    • Казино ИКС
      Казино ИКС

      1 место, лидер народного рейтинга! Лучшее казино по отзывам игроков. Большие бонусы и моментальный вывод выигрыша на карту.

    • Джой Казино
      Джой Казино

      2 место в рейтинге! Хорошее лицензионное казино с огромными Джекпотами и моментальными выплатами!

    • Казино Чемпион
      Казино Чемпион

      3 место! Одно из самых надежных онлайн казино для россиян. Полностью на русском языке! Бонус за регистрацию и за каждый депозит!

    Добавить комментарий