Побеждаем мейнфрейм / Андрей Николаенко (ibs)

100
Побеждаем мейнфрейм 3.0

Upload: ontico

Post on 06-Jan-2017

167 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Побеждаем мейнфрейм

3.0

Page 2: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

$ who am iСистемный архитектор в системном интеграторе (IBS)Не эксперт по мейнфреймам

• Пересечения в «ландшафтах»• Работа с технико-экономическими показателями• Взаимодействие с эксплуатантами

Только личное мнение и личный опыт• Никаких мнений от имени работодателя или его партнёров• Могу ошибаться или заблуждаться, но искренне и не ради

выгоды

Page 3: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

I Мифы о мейнфрейме

II Технологии мейнфреймов для современной цивилизации

Самый-самый …?Не умеет X, но умеет Y ? Несистемный исторический экскурс

Поверхностный технологический обзор

Page 4: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Легенда разрушения легенд

Рисунки здесь и далее – ©Discovery

Page 5: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 1:Самый древний компьютер?Были ли самые первые компьютеры мейнфреймами?

Page 6: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Первый мейнфрейм – IBM System/360

Разработан в 1964–1967 годы

Затраты в разработку – $5 млрд

Годовая выручка IBM тех лет – $3,2 млрд

Самый дорогостоящий проект в истории

вычислительной техники

Mark I, ENIAC, EDSAC, БЭСМ мейнфреймами не считаются

Page 7: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Отличительные особенности

Ориентированный на задачи коммерческого сектора

УниверсальныйДесятичные операции Операции с

плавающей точкой

Универсальный пакет системного

программного обеспечения

Подключение широкого класса

периферии

Канальная архитектураДля доступа к памяти Для ввода-вывода

Микрокод для реализации процессорных инструкций

СерийныйРазличные по производительности и стоимости

варианты в одной линейкеС возможностями развития и обратной

совместимостью

Page 8: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Разработчики

Фредерик Брукс

«Мифический человеко-месяц»

Джин Амдал

Фирма Amdahl

Геррит Блау

Нидерландский математик

Page 9: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Первые залы с IBM S/360

Изображение – ©IBM, конец 1960-х

Page 10: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Первые залы с IBM S/360…

Изображение – ©IBM, конец 1960-х

Page 11: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 1:Самый древний компьютер?

Мейнфреймы появились через 20 лет после первых компьютеров

Page 12: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 2:Практически не встречается в современной природе?Неужели их кто-то использует? Разве они ещё производятся?

Page 13: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Мейнфреймы в структуре продаж IBM~4% от выручки

(2014)

~$3,7 млрд

Рост 2014/2015 – 35%

более $5 млрд?

2014/2015 – 50 новых покупателей в 25

странах

Рынок существенный, миллиардный…

Page 14: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

… но подвержен существенным колебаниям

Рисунок– ©IDC?

Page 15: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

… а в 1990-е годы был длительный спад

Рисунок– ©Annex Research, 2009

Page 16: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 2:Практически не встречается в современной природе?

Мейнфреймы производятся, их рынок – миллиардный и он спорадически растёт

Page 17: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 3:Мейнфрейм – это IBM?Кроме IBM это кто-то ещё делает?

Page 18: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Fujitsu

Fujitsu BS2000 SE-700 на процессорах SPARC под управлением ОС ICL-VME,

«сделано в Германии»

Siemens

Fujitsu-Siemens

Fujitsu

Page 19: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Univac Clearpath Forward под управлением OS 2200(на Intel Xeon E5, c 2012)

Unisys+

=

(c 1986)

Page 20: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Также производят мейнфреймы в 2010-е

• S/390-совместимые, а также на базе Intel Xeon и Itanium

• Важная часть экосистемы мейнфреймов IBM (HDS)

• Слухи (2016) об IBM mainfraimes → Hitachi• Младшая линия ACOS-2 – на базе Intel Xeon• Старшая линия ACOS-4 – на базе NOAH-6

• Серия Gcos на Intel Xeon

Page 21: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

…и всё-таки это в 90% случаев – IBM

IBM – движущая сила и

«законодатель моды»

Почти все прочие – клоны с разной

степенью совместимости с

IBM

~90% современных мейнфреймов

От 85% до 95% продаж новых мейнфреймов

В России – трудно найти не IBM

Page 22: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Но в 1970-е рынок был более обитаем…B Burroughs → Unisys

U Univac → Sperry → Unisys

N NCRC Control Data

CorporationH Honeywell → Bull → Atos

Scientific Data

SystemsXerox Amdahl ICL Siemens ЕС ЭВМ

Page 23: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 3:Мейнфрейм – это IBM?

Не только IBM, но в основном всё же IBM

Page 24: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 4:ЕС ЭВМ – это клон IBM S/370?Разве были какие-то другие ЕС ЭВМ?

Page 25: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

1970–1988: IBM System/37031-битная

архитектура

Монолитная оперативная память

128-битная вещественная арифметика

Обратно совместимая с S/360

Изображение – ©IBM, начало1970-х

Page 26: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

1967: решение об «Единой серии»Дискуссии о «большом скачке»

• Принципиальное решение о клонировании

System/360 только-только выпущена

• Первые машины – клоны S/360

Page 27: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Серии ЕС ЭВМ

1010 1011 1012 1020 1030 1040 1050

1015 1025 1035 1045 1055 1060 1061

1036 1046 1066 1068

Клон мини-ЭВМ Mitra System/360

System/370

System/370++

I р я д :

I I р я д :

I I I р я д :

1130 1181 1220 I V р я д :

Page 28: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Минская (или

болгарская) машина

в ГДР

Изображение – CC-SA, автор: Еуген Норско, ГДР, 1981

Page 29: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 4:ЕС ЭВМ – это клон IBM S/370?

В основном – да, но были и на основе S/360, и усовершенствованные, и венгерская не-IBM-серия

Page 30: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 5:70% информации в мире обрабатывается мейнфреймами?Какой информации? По состоянию на какой год?

Page 31: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Хроника 70%• More than 70% of corporate data in the world is

still on mainframe systems• Meta Group1998• …mainframe, which is home to 70 percent of the

world’s critical transactional data• IBM Systems Magazine2008• …70% of all relevant data for companies stored

on databases on System z • Robert Vaupel. High Availability and Scalability of

Mainframe Environments2013

Page 32: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Прочие сомнительные факты«94 банка из Топ-100 используют мейнфреймы IBM»• Сбербанк – входит, но есть ли там хоть один мейнфрейм?

«Около 97% розничных банков в мире используют System z в качестве главного сервера для АБС»• Есть такой хоть один в России?

Суммарная стоимость находящихся в эксплуатации приложений для мейнфреймов – $1 трлн

Page 33: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Публичные активные мейнфреймоводы России

ЦБ РФ РЖД Газпром

Page 34: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

z160 в ЦОДе РЖД и терминал Экспресс-3

Изображения – ©Алексей Надёждин, 2013

Page 35: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 5:70% информации в мире обрабатывается мейнфреймами?

У этой информации были основания, но она неконкретна и устарела

Page 36: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 6:Вид суперкомпьютера?Ведь он призван усиленно «дробить числа»?

Page 37: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

MIPS и FLOPS

MIPSМлн

инструкций в секунду

Метрика для мейнфреймов

FLOPSВещественных

операций в секунду

Метрика для суперкомпьюте

ров

Page 38: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

TPC-x и Linpack

TPC-C, TPC-H

Транзакций в секунду

Запросов в секунду

L*PackFLOPS, FLOPS

FLOPS, FLOPS, FLOPS, FLOPS

Page 39: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Не принципиально для суперкомпьютера

Отказоустойчивость, время наработки на отказ

Предсказуемая производительностьСамовосстановление

Дублирование компонентов, резервирование

Обновления без перезагрузокОбратная совместимость

Целостность данных

Page 40: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 6:Вид суперкомпьютера?

Считает весьма быстро, но по MIPS, неинтересные показатели для «числодробилок»

Page 41: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 7:Самый быстрый,самый многосокетный, самый многоядерный?Кто, если не мейнфрейм?

Page 42: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Чемпионы по гнёздам и ядрам (2016)

IBM z13

21 ЦПУ

168 ядер

336 потоков

IBM p795

32 ЦПУ

256 ядер

1024 потока

SPARC M6-32

32 ЦПУ

384 ядра

3072 потока

Huawei Kun-Lun

32 ЦПУ

576 ядер

1152 потока

Page 43: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Быстрейший [коммерческий] процессор [общего назначения] – у мейнфрейма

IBM zEC125,5

ГГцIBM

Power 7+4,4 ГГц

SPARC S74,27 ГГц

Intel Xeon X56984,4

ГГц

Page 44: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Время большого скачка

Изображение – ©IBM, 2013

z13 (2015): 5.0 GHz

Page 45: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 7:Самый быстрый,самый многосокетный, самый многядерный?

Уступает по количеству ЦПУ и ядер RISC-машинам в максимальной набивке и вертикальным x86,

но при этом частоты – выше 5 ГГц

Page 46: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 8:RISC?Какая у мейнфрейма может быть процессорная архитектура?

Page 47: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Две ветви больших машин IBM

pSeriesPerformance

RISCzSeries

Zero-downtime

CISC

Page 48: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 8:RISC?

Все процессоры мейнфреймов IBM на CISC-архитектуре; разве что у Fujitsu – RISC

Page 49: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 9:Требует собственных залов и жидкостного охлаждения?Мейнфрейм как ЦОД?

Page 50: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Когда-то – требовалось

Основная площадь – под периферию

Page 51: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

System/390: c 1995 года всё стало проще

Почти* стандартные

серверные шкафы

Стандартное трёхфазное

питание

Воздушное охлаждение

Page 52: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

…на 1–2+* стойко-места

Изображение – ©Infoworld

Page 53: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

z13 на выставке(до 21,5 КВт в ЦОД)

Изображение – ©IBM, 2015

Page 54: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Традиции жидкостного охлаждения ещё живы (опция)

Изображение – ©IBM, 2015

Page 55: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 9:Требуют собственных залов и жидкостного охлаждения?

Уже четверть века как не требуют

Page 56: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 10:Самый дорогой?Может ли быть что-то дороже мейнфрейма?

Page 57: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Конечная цена системы – вопрос щепетильный

Из одного публичного сравнения (2012)Oracle SPARC T4-4 – $1,2 млн IBM p795 – $4,5 млн

Сильно зависит от конфигураций и программного обеспеченияz13 – «от $1 млн» z114 – «от $75 млн»

Page 58: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Но можно найти на барахолке

Page 59: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 10:Самый дорогой?

Старшие мейнфреймы весьма дороги – от $1 млн за систему, но и старшие RISC-системы стоят за теми же порогами

Page 60: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 11:Монолит для запуска одного экземпляра ОС?«Большая рама для одной операционки»

Page 61: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Виртуализация из 1960-х

Одна из ключевых возможностей мейнфреймовПолучение нескольких

виртуальных мейнфреймов из одного

Дизайн «без протечек»Без слоя эмуляций

Поддержка на процессорном уровне

Полная изоляция

CP/CMS• 360

VM/SP• 370

VM/ESA• 390

z/VM• zSeries

Page 62: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Аппаратные секции

• Разбиение пула процессорных ресурсов на секции

• Подобное доступно в Power, SPARC, Itanium, мейнфреймх на x86 (Hitachi)

LPAR – аппаратн

о-ресурсная изоляция

Page 63: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

2015 год: новые веяния

KVM портирован на z/Architecture

Docker портирован на

z/Linux

Page 64: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

IFL1 IFL2 IFL3CP1 CP2 CP3 CP4

IBM System z

Физические ядра ЦПУ

z/VM

Linux

v2CPU

Linux

LPAR1

z/OS

LPAR2

z/OS

LPAR3

z/VM

LPAR4

z/VM

Логические ЦПУ

Логические ЦПУ

IFL4

Linux

LinuxvCPU

Linux

Linux

Linux

Физические ядра ЦПУ

(Виртуальная машина в виртуальной машине)n

KVMv3CPU

Page 65: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Специальные цели процессора общего назначения

Часть ядер отведена под специальные нужды и они недоступны для вычислительных нагрузок

В z13 – из 168 ядер только для 141 ядра покупатель может определить назначение

Каждое ядро мейнфрейма прошивается «миллипрограммой», определяющей его

назначение

Page 66: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Виды «спецназа»

CPCentral

Processor

Для запуска

и нагрузок общего назначе

ния в z/OS, z/VM

IFLIntegrated facility for

Linux

Для z/Linux

zAAP

Application Assist

Processor

Для Java- и XML-

нагрузок в z/OS

zIIP

Integrated Informatio

n Processor

Для некотор

ого класса

нагрузок в z/OS (XML, IPSec)

ICF

Internal Coupling Facility

Для кластера

z/OS

SAP

System Assist

Processor

Обработка

ввода-вывода

IFPIntegrated Firmware Processor

Для PCIe-

устройств

spare

Резерв «под

паром»

Может заменить любое из ядер в случае

сбоя

Page 67: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 11:Монолит для запуска одного экземпляра ОС?

Виртуализация поддерживается ещё со времён System/360,и это фактически стандартная и всеобще используемая

возможность

Page 68: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 12:Операционная система у мейнфрейма – не Unix, и вообще бесфайловая?Другие абстракции, нет командной строки, не похожа ни на что

Page 69: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Основная операционная система мейнфреймовCP/CMS• 360

MVS• 370

OS/390• 390

z/OS• zSeries

Open MVS Unix services

100% POSIX certifiedФайловая

система

Сокеты Стек TCP/IP …

Page 70: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Набор данных, а не файл

Не наборы байтов!Нет концепции «файла», объединяющей программы и данные

Средства доступа к содержимому наборов данныхИз операционной системы Из программных средств

Наборы данных каталогизируются, организуются в иерархии ENT01.DEPT01.EMP0024

DatasetОсновная абстракция пользовательских данных

Коллекция форматированных записей Ключи, индексы

Page 71: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Пре-СУБД и СУБД над наборами данных

• Customer Information Control System

CICS

• Иерархическая СУБДIMS

• Реляционная СУБДDB2

• Иерархическая СУБДAdabas

• До 10g, потом – на z/Linux

Oracle Database

Не-IBM:

Page 72: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Приложения над наборами данных

Карточный процессинг

БронированиеPARS Sabre

Transaction Processing Facility (TPF)

Языковые средства по работе с наборами данных (Кобол, Фортран)

Page 73: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Sabre

Page 74: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Sabre red

Page 75: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Два способа взаимодействия

Job Command LanguageДля программ, которые что-то обрабатывают

Пакетный TSO (Time-sharing option)Для операторов и пользователей информационных систем

Интерактивный

Page 76: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Как зайти в ОС?ISPF

• Interactive System Productivity Facility• TSO-приложение

Терминал 3270• Не строчный, а блочный!• EBCDIC

Page 77: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Вх о д

им

в T S O/ I S P

F

Page 78: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Х о ди

м п

о м

е ню

Page 79: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

У т ил

ит ы

Page 80: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

На б

ор

ы д

а нн

ых

Page 81: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Г де з д

е с ь к а т а ло

г и?

Page 82: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Ка т а л

ог и

Page 83: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

И г д

е же U

ni x ?

Page 84: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Е с т ь и U

ni x …

Page 85: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

и д

а же ф

а йл

ы…

Page 86: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Изображение – ©IBM, 1979

Page 87: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

…и даже GUI

Page 88: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 12:Операционная система у мейнфрейма – не Unix, и вообще бесфайловая?

Изначально – да; начиная с OS/390 – сервисы Unix и файловые системы встроены

Page 89: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 13:Невоспроизводимый на x86?Разве можно это повторить на x86_64?

Page 90: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Геркулес: hercules-3.12 • Первый выпуск – 1999 год• Автор – Роджер Боулер

Свободно распространяемый эмулятор ЦПУ мейнфреймов

• System/370• System/390• System z• Amdahl

Поддерживает практически весь ряд

• z/OS• z/VM

• z/Linux

Запускает любые ОС

• ~50 – 60 MIPS на 2 × Xeon E5• Пики – 1200 MIPS

Работает стабильно, но с не очень высокой производительностью

Page 91: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 13:Невоспроизводимый на x86?

Есть устойчивый программный эмулятор

Page 92: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 14:Немасштабируемый?Может расти только по вертикали до предела своего двустворчатого шкафа?

Page 93: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Параллельный сисплексОбъединение нескольких мейнфреймов (или LPAR) в кластер

Перезапуск заданий

при сбоях

Single System Image –

«как одна система»

Совместный доступ к наборам данных

Программные средства для параллельной работы

DB2 IMS VSAM Oracle DB 10g Adaplex

Page 94: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Миф 14:Немасштабируемый?

Чудес не бывает, но заложенные в параллельный сисплекс средства позволяют в большинстве случаев выбраться за пределы

«одной коробки»

Page 95: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

II Технологии мейнфреймов – современной цивилизацииНе настала ли пора ещё что-нибудь позаимствовать от мейнфреймов?

Page 96: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Single System ImageРешения и подходы параллельного сисплекса

• Сериализация для совместного доступа к общим ресурсам хранения• Интерфейс для СУБД

• Прозрачность для приложений

Доступный на оборудовании потребительского класса сверхотзывчивый ввод-вывод и сверхбыстрый интерконнект

• NVMf: 5 млн IOPS своими руками, Бангалор, 14:00

Не пора ли оживить Open SSI?

Page 97: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

RAIMRedundant Array of Independent Memory

С учётом появления NVDIMM?• Особенно для резидентных вычислений (in-memory

database)+проекты с пометкой

“Software-defined memory”

Page 98: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Дублированное выполнениеИнструкции выполняются параллельно на

двух ядрах, результат сверяется

• Заимствовано в Tandem Nonstop (ныне – HPE)

По сети? Экономный горячий резерв?

Page 99: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Спецназ для ЦПУ, разгрузка от ввода-вывода

Там, где важна предсказуемая производительность

Канально-архитектурные решения по доступу к общим ресурсам хранения

Будущие FPGA-сопроцессоры?

Тонкая ручная настройка

Page 100: Побеждаем мейнфрейм / Андрей Николаенко (IBS)

Спасибо за внимание!