Сравнение производительности способов получения содержимого дорожки CKD-тома
и ее CRC-кода
Клименко С. В.
Петербургский государственный университет путей сообщения Императора Александра I
Санкт-Петербург, Россия [email protected]
Аннотация. В статье рассмотрены способы получения содержимого и CRC-кода дорожки CKD-диска. Подробно описаны принцип работы канальных команд и их формат, а также способы того, как организовать проверку контроля целостности данных на томах между системой хранения данных и мейн-фреймом. Для каждого рассматриваемого способа определены среднее время отклика на исполнение запроса и временная эффективность. По результатам сделан вывод, какой способ оптимален для использования.
Ключевые слова: мстемы хранения данных, CRC, CKD, производительность, эффективность, дорожка, том.
Введение
Для хранения и обработки больших объемов информации во многих случаях ведущие компании используют системы хранения данных (СХД). Такие системы чаще всего работают под управлением мейнфреймов. Сегодня мейнфрей-мы применяются в области, где важна надежность. Многие крупные компании, которые сталкиваются с интенсивной пакетной и оперативной транзакционной обработкой, отдают предпочтение мейнфрейму.
Одной из наиболее распространенных операционных систем на мейнфреймах является операционная система z/OS. Основным объектом системы организации данных в z/OS является набор данных [1]. Наборы данных размещают-
ся на томах CKD (Count Key Data) (рис. 1). CKD - это модель дисковой организации данных, в которой предполагается, что диск состоит из фиксированного числа дорожек, каждая из которых имеет максимальную вместимость данных. Название архитектуры CKD происходит от формата записи, который состоит из полей, счётчика (Count), необязательного поля ключа (Key) и самих данных (Data).
Запись является наименьшей адресуемой единицей данных, хранящейся на диске. Одна или более записей могут быть записаны на дорожку. Дорожка - это наименьшая единица дискового пространства, которая может быть независимо отформатирована или защищена от неавторизованного доступа. Каждый CKD-диск (том) состоит из определенного числа цилиндров, каждый цилиндр содержит 15 дорожек. Механизм, перемещающий головки чтения/записи в заданное место магнитной поверхности, называется актуатором.
Размер каждой дорожки составляет 47 476 байт для тома модели 3380 и 56 664 байт - для тома модели 3390 [2]. Далее рассмотрим модель тома 3390.
Для защиты данных от потери, реализации аварийного восстановления, а также для переноса данных в новые места используется репликация данных. Репликация - это процесс копирования данных в массиве в другое пространство в пределах этого же массива в другой отдельный массив или в удаленный массив [3]. Целью может быть перемещение данных, защита данных в другом местоположении или пере-
Рис. 1. Структура CKD-тома 3390
дача данных во вспомогательный центр обработки данных для ведения из него своей деятельности.
После создания реплики часто возникает потребность в проверке целостности данных между дисковыми массивами. Под целостностью понимается, что после процесса репликации данные на томах идентичны друг другу.
Получить содержимое, хранящееся на диске, для последующего сравнения можно несколькими способами.
Проконтролировать целостность исходного и целевого томов для заданных дорожек и цилиндров после репликации можно следующими способами:
• воспользоваться стандартными средствами операционной системы z/OS и составить канальную программу, которая будет считывать содержимое в выделенные заранее буферы и проверять непосредственно сами данные между собой;
• воспользоваться возможностями СХД и запрашивать контрольную сумму (CRC-код) содержимого и проверять контрольные суммы между собой.
Под контрольной суммой понимается некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма, используемое для проверки целостности данных при их передаче или хранении [4].
Главное различие между двумя этими способами состоит в том, что в первом сравнивается содержимое исходного и целевого томов, а во втором - контрольные суммы содержимого.
Второй способ осуществим благодаря тому, что современные СХД обладают расширенными функциональными возможностями и могут производить подсчет контрольных сумм (Cyclic Redundancy Check (CRC) кодов) по запросу, в частности, могут подсчитывать контрольную сумму всей дорожки. Например, такой возможностью обладает программный продукт для проверки целостности данных на томах DiskCompare [5].
Данные способы были исследованы с использованием СХД Symmetrix VMAX 40K, подключенной по FICON-каналу к мейнфрейму, работающему под управлением операционной системы z/OS1.12.
Рассматриваемые способы различаются и количеством требуемой памяти для временного хранения содержимого дорожек или их CRC-кодов.
При этом размер одной дорожки составляет 56 Кбайт, а поскольку в проверке целостности участвуют два тома, необходимо иметь два буфера (2-56 Кбайт) для хранения содержимого дорожек томов. Размер CRC-кода одной дорожки составляет 4 байта, соответственно, размер буферов будет существенно меньше.
Канальные команды DE и A6
Для получения содержимого дорожки заданного цилиндра имеются канальные команды Channel Command Word (CCW - канальное слово канальной программы). Канальная программа состоит из набора CCW-команд. Она исполняется путем последовательного считывания команд CCW и выполнения задаваемых в CCW-командах операций с периферийным устройством [6]. Среди таких команд есть:
• Read Track - канальная команда DE;
• Read Track Data - канальная команда A6.
На рис. 2. представлена схема взаимодействия СХД и мейнфрейма для сравнения содержимых треков.
Команда Read Track передает несколько записей в канал. Эта команда предназначена, главным образом, для служебных программ дампа или восстановления. Эта команда отправляет все записи с логического тома без предварительного определения количества записей на дорожке и их форматов. После прочтения последней записи на дорожке содержимое передается на канал.
Команда Read Track Data передает несколько записей с дорожки на канал. Чтение данных дорожки действительно только в домене команды «Локальная запись», в которой указан код операции «Чтение дорожки» или команда «Найти запись», которая указывает «Прочитать дорожку» или код операции «Чтение дорожки» [7].
Структура CCW-команды
CCW - это операция ввода-вывода, используемая для связи с подсистемой канала. CCW содержит команду канала, например чтение, запись или управление, а также адрес данных области данных. Данные передаются в подсистему каналов. Подсистема канала передает состояние ввода-вывода обратно в выдающее приложение.
Рис. 2. Взаимодействие СХД и мейнфрейма для сравнения содержимого треков
Рассмотрим пример канальной программы с использованием канальной команды DE для получения содержимого одиннадцатой дорожки (Bl6) тридцатого цилиндра (1E16) c тома:
* CKD CHANNEL PROGRAM TO READ TRACK
* 0 1 2 3 4 5 6 7 8 9 A B C D E F
* BLKS CCCCHHHHCCCCHHHH
DXPARM DC X'C0C0000000000000001E000B001
E0 0 0B'
* XXCCCCHHHHCCCCHHHHRR
LRPARM DC X'4C000001001E000B001E000B00F
F0000'
TRACK1 DC XLFFFF
CCW063, DXPARM,4 0,10 DEFINE EXTENT
CCW047, LRPARM,4 0,10 LOCATE RECORD
CCW0 DE, TRACK1,20, FFFF READ TRACK
Сопоставим структуру команды с командой CCW0 DE, TRACK1,20, FFFF:
CCW0 - ключевое слово;
DE - код операции;
TRACK1 - адрес данных;
20 - флаги;
FFFF - счетчик данных.
Результат выполнения канальной программы приведен в сокращенном виде (так как результат выполнения команды составляет 56 Кбайт) на рис. 3.
Под кодировкой EBCDIC (Extended Binary Coded Decimal Interchange Code - расширенный двоично-десятичный код обмена информацией) понимается стандартный восьмибитный код, разработанный корпорацией IBM для использования на мейнфреймах собственного производства и совместимых с
ними. К примеру, код «C1» в кодировке EBCDIC соответствует латинской букве «А».
Из результата мы можем увидеть поле resp-time (далее -время отклика), которое дает представление о времени получения данных с дорожки.
Получение CRC-кода
Программное обеспечение EMC для управления дисковым массивом на низком уровне использует протокол связи, называемый системным вызовом (syscall). Под системным вызовом понимается набор специальных канальных команд, которые могут быть понятны СХД Symmetrix.
Системные вызовы могут объединяться в Symmetrix Application Programming Interface (SymmAPI) и представлять собой API к операционной системе хранения данных.
Программные модули SymmAPI находятся на хост-системе (мейнфрейме) и позволяют системным интеграторам и независимым поставщикам программного обеспечения получать доступ к системе хранения данных. SymmAPI взаимодействует с системой хранения данных путем использования канальных команд. Хост-система и система Symmetrix связаны через один или несколько физических интерфейсов.
В ответ на запрос от приложения, работающего на хосте, SymmAPI отправляет системный вызов к СХД Symmetrix и получает в ответ данные от СХД.
На рис. 4. представлена схема взаимодействия СХД и мейнфрейма для сравнения CRC-кодов содержимого треков.
Чтобы получить контрольные суммы (CRC коды) дорожек, необходимо сформировать корректный запрос посредством системного вызова к СХД.
VElLSEA: CCA: i::E Cd; KEÜP-T]re: fl!J:ll0,Ci|HOi(
ZMCKl]
r .....^y-.-.—........EIWÜ |
содержимое на
-дорожке в
кодировке EBCDIC
С
содержимое на дорожке в
раскодированном виде
Рис. 3. Результат выполнения команды
Рис. 4. Взаимодействие СХД и мейнфрейма для сравнения CRC-кодов содержимого треков
Intellectual Technologies on Transport. 2017. No 3
»> Response Time: 0.002240 Seconds
полученное число
CRC кодов номер диска номер цилиндра
-—У—-------------1—-----£-
»> Data 00000000 00000010
30 000001
00000010
000013Д1
ооооооо: -................-
0003000
48Е7ДА00
CRC код
End cz Syacall Reaponae -----------
— номер дорожки
Рис. 5. Результат выполнения системного вызова
В запрос входит следующая информация:
• номер системного вызова, отвечающий за подсчет контрольной суммы;
• номер диска (Symmetrix device number);
• номер цилиндра;
• число дорожек, для которых надо вернуть CRC-код (от 1 до 15).
Результат выполнения системного вызова к СХД приведен на рис. 5.
Оценка временной эффективности
Для оценки временной эффективности разработан одинаковый набор тестов, позволяющий собрать статистику по каждому из ранее описанных способов. Под временной эффективностью понимается отношение времени отклика на получение CRC-кода ко времени отклика получения содержимого дорожек.
Статистика отражает время отклика на исполнение запросов в зависимости от числа дорожек. Время отклика получено для i-дорожек, где i = 1, 5, 10, 15.
Блок-схема алгоритма тестов для сбора статистики представлена на рис. 6.
Для вычисления среднеарифметического значения времени отклика на исполнение запроса использовалась формула
1 N
t = — k N k1
(1)
где - время отклика г-го содержимого/СИС; п - общее количество обращений к дорожке.
Среднеквадратичное отклонение рассчитывалось по формуле
WN Ъ(ц -1 )2'
(2)
где t - среднеарифметическое значение. Временная эффективность
5 = 100 - tcRC + °CRC-100,
tR +aR
(3)
где 1К и 1СКС - время получения содержимого и СИС-кода, соответственно; стд и <5сис - их среднеквадратичные отклонения, соответственно.
Результаты измерений представлены в таблицах 1, 2.
Среднее время получения запроса - величина непостоянная, так как зависит от степени загрузки канала между хостом и СХД, а также от загруженности самого хоста и СХД. Стоит также отметить, что главное преимущество способа контроля целостности по СИС-коду - в меньшей нагрузке на канал между СХД и мейнфреймом, так как количество передаваемой информации в разы сокращается. Однако при таком способе идет дополнительная нагрузка на кэш, поскольку в нем подсчитывается СИС-код содержимого дорожки.
Таблица 1
Результаты выполнения запросов к группам дорожек
Тип запроса к дорожке Количество дорожек Количество запросов Среднее время отклика, с Среднеквадратичное отклонение
Получение содержимого 1 100 0,001 0,0007
5 50 0,0038 0,0017
10 0,0063 0,0013
15 0,0094 0,0015
Получение CRC-кода 1 100 0,0011 0,0001
5 50 0,0040 0,0011
10 0,0068 0,0015
15 0,0092 0,0008
Таблица 2
Эффективность получения CRC кодов по сравнению с содержимым
Рис. 6. Блок-схема «Структура теста»
Тип запроса к дорожке Количество дорожек Эффективность, %
1 29,41
Получение 5 7,27
CRC-кода 10 -9,21
15 8,26
Рассмотрим том размерностью 65 520 цилиндров. Его размер составляет: 65 520 -15 • 56 664 = 55 689 379 200 байт =52 Гбайта (где 15 - количество дорожек; 56 664 - размер в байтах каждой дорожки). Соответственно, 52 Гбайта придется передать по каналу только для одного тома. Способ получения СКС-кода требует пересылки меньшего количества информации по каналу: 65 520 -15 • 4 = 3931200 байт =4 Гбайта, где 15 - количество дорожек; 4 - размер в байтах каждого СКС-кода дорожки.
Таким образом, нагрузка на канал уменьшится в
65 520-15 • 56 664 -= 14116 раз.
65520-15 • 4
Систематическое изложение вопросов, касающихся проблематики настоящей статьи, содержится в [9, 10].
Заключение
В статье описаны способы получения содержимого дорожки тома при помощи стандартных средств операционной системы z/OS и способ получения CRC-кода, который генерируется программно на стороне СХД по запросу пользователя. Собрана статистика, позволяющая оценить производительность рассматриваемых способов.
Анализ результатов показал, что способ генерации CRC-кода дорожки на стороне СХД для контроля целостности данных обладает рядом преимуществ, такими как время отклика и меньшая нагрузка на канал между СХД и мейн-фреймом.
Литература
1. Бартеньев О. В. Особенности тестирования наборов данных в операционной системе z/OS / О. В. Бартеньев, С. В. Клюев // Программные продукты и системы. 2014. № 107 (3). С. 53-58.
2. Kuzler C. IBM Enterprise Storage Server / C. Kuzler, P. Norman, A. Pate, R. Wolf. - San Jose, California: IBM Corp., Int. Tech. Support Org., 1999. 250 с.
3. Глоссарий EMC. URL: https://russia.emc.com/corporate/ glossary/replication.htm (дата обращения 20.09.2017).
4. Мыцко Е. А. Особенности программной реализации вычисления контрольной суммы CRC32 на примере PKZIP, WINZIP, ETHERNET / Е. А. Мыцко, А. Н. Мальчуков // Вестн. науки Сибири. 2011. № 1 (1). С. 279-282.
5. New Features in EMC Enginuity 5876 for Mainframe Environments. 2012. 19 p.
6. Варфоломеев В. А. Архитектура платформ IBM eServer zSeries / В. А. Варфоломеев, Э. К. Лецкий, М. И. Шамров, В. В. Яковлев. - М.: Интуит, 2016. 640 с.
7. Internal Disk Subsystem: Reference Guide / Int. Bus. Mach. Corp. 1999. 264 p.
8. High Level Assembler for z/OS & z/VM & z/VSE Language Reference Version 1 Release 6 / Int. Bus. Mach. Corp. 6 ed., 2008. 484 p.
9. Hennessy J. L. Computer Architecture a Quantitative Approach / J. L. Hennessy, David A. Patterson. 5 ed., Elsevier, Inc., 2012. 851 p.
10. Bruce J. Memory Systems Cache, Dram, Disk / J. Bruce, N. Spencer W., T. Wang David. Morgan Kaufmann Publ., 2008. 982 p.
Comparison of the Performance of the Methods for Obtaining the Content of the Track CKD Volume and its CRC Code
Klimenko S. V. Emperor Alexander I Petersburg State Transport University St. Petersburg, Russia [email protected]
Abstract. The article describes methods of obtaining content and CRC code of the CKD track. The principle of the operation of the channel commands and their format are described in detail, as well as ways to organize a check of data integrity control between storage and mainframe volumes. For each of the methods considered, the average response time for execution of the request and time efficiency are determined. Based on the results obtained, it is concluded which of the methods is optimal for use.
Keywords: storage systems, CRC, CKD, performance, efficiency, track, volume.
References
1. Bartenev O. V., Klyuev S. V. Peculiarities of data sets testing in the z/OS operating system [Osobennosti testirovaniya na-borov dannykh v operatsionnoy sisteme z/OS], Software and Systems [Programmnye produkty i sistemy], 2014, no. 107 (3), pp. 53-58.
2. Kuzler C., Norman P., Pate A., Wolf R. IBM Enterprise Storage Server. San Jose, California, IBM Corp., Int. Tech. Support Org., 1999. 250 p.
3. EMC Glossary. Available at: https://russia.emc.com/corpo-rate/glossary/replication.htm (accessed 20 September 2017).
4. Mytsko E.A., Malchukov A. N. Features of the software implementation of CRC32 checksum calculation using the example of PKZIP, WINZIP, ETHERNET [Osobennosti pro-grammnoy realizatsii vychisleniya kontrolnoy summy CRC32 na primere PKZIP, WINZIP, ETHERNET], Newsletter of Siberian Sci. [Vestnik nauki Sibiri], 2011, no.1 (1), pp. 279-282.
5. New Features in EMC Enginuity 5876 for Mainframe Environments, 2012, 19 p.
6. Varfolomeev V. A., Letskiy E. K., Shamrov M. I., Jakov-lev V. V. Architecture of IBM platforms eServer zSeries [Architek-tura platform IBM eServer zSeries], Moscow, Intuit, 2016, 640 p.
7. Internal Disk Subsystem: Reference Guide. Int. Bus. Mach. Corp. 1999, 264 p.
8. High Level Assembler for z/OS & z/VM & z/VSE Language Reference Version 1 Release 6. Int. Bus. Mach. Corp. 6 ed., 2008. 484 p.
9. Hennessy J. L., Patterson D. A. Computer Architecture a Quantitative Approach. 5 ed. Elsevier, Inc., 2012. 851 p.
10. Bruce J., Spencer N. W., David W. T. Memory Systems Cache, Dram, Disk. Morgan Kaufmann Publ., 2008. 982 p.