Как я могу получить информацию об использовании памяти с помощью ассемблера zos

Как я могу программно получить объем памяти, который программа на ассемблере в настоящее время использует ассемблерные инструкции/макросы из работающей программы? Я отлаживаю ошибку 878 (недостаточно памяти) и хочу, чтобы моя программа сообщала на разных этапах, сколько памяти она использует.


person FierceMonkey    schedule 29.11.2017    source источник
comment
Это зависит от того, на какой ОС вы работаете, и включает вызов OS API.   -  person arrowd    schedule 29.11.2017
comment
У меня зос v1.3   -  person FierceMonkey    schedule 30.11.2017
comment
Реальный или виртуальный?   -  person zarchasmpgmr    schedule 30.11.2017
comment
Вау, z/OS 1.3: прекращение поддержки 31 марта 2005 г....   -  person piet.t    schedule 30.11.2017
comment
Я ошибся, на самом деле это версия 2.1. определение объема виртуальной памяти было бы хорошо. Я пытаюсь отладить 878 абенд. Я уверен, что есть и другие способы сделать это, но меня интересует именно этот метод (если это вообще возможно)   -  person FierceMonkey    schedule 30.11.2017
comment
Обычно просто увеличивают параметр REGION на шаге задания. Это не сработает, если ошибка создала безудержный цикл STORAGE OBTAIN (или GETMAIN, или SVC 10, или CEEGTST), конечно, но это крайний случай. Иногда люди используют утилиту для профилирования производительности своего магазина. Это не значит, что вы делаете что-то неправильно, это нормально, просто необычно.   -  person cschneid    schedule 30.11.2017
comment
Я отлаживаю ABEND878, используя IPCS VERBEXIT VSMDATA CONTROLBLOCKS и просматривая записи DQE.   -  person David Crayford    schedule 05.12.2017


Ответы (1)


Размер области можно задать различными способами в зависимости от типа адресного пространства (сеанс TSO, пакетное задание, STC и т. д.). Некоторые сайты задают пользовательские размеры регионов с помощью выхода SMF, поэтому не всегда легко понять, что здесь происходит.

Предельное значение для заданного адресного пространства хранится в области данных LDA (см. https://www-304.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R3ga320937/$file/iead300_v2r3.pdf). В программе на ассемблере вы получите это значение, перейдя от PSAAOLD к ASCBLDA, а затем проверив размер области, который вы ищете.

Более современный интерфейс для этого материала доступен в различных API служб UNIX в z/OS. Например, getrusage (BPX1GRU) показывает использование ресурсов для нескольких ресурсов, включая память. Все, что нужно программе на ассемблере для использования этого материала, - это значение UID UNIX в вашей информации о безопасности - никаких других специальных настроек не требуется.

person Valerie R    schedule 30.11.2017
comment
Я знаю, каков предельный размер моего региона, я указываю его в операторе JCL EXEC с параметром REGION=XX. меня интересует не максимально допустимая память, а объем памяти, выделенный в настоящее время работающей программой в любой момент времени во время ее выполнения. - person FierceMonkey; 04.12.2017
comment
Валерия ответила правильно. LDA содержит текущее использование, а не только лимит. LDALOAL — это текущее использование частной области ниже линии 16 МБ, а LDAELOAL — использование выше линии 16 МБ. - person David Crayford; 05.12.2017
comment
BPX1GRU, похоже, возвращает только время, а не использование памяти, если я что-то не упустил? - person David Crayford; 05.12.2017
comment
@FierceMonkey: Небольшое предостережение: то, что вы установили REGION в своем JCL, не означает, что вы действительно знаете размер своего региона - есть несколько способов переопределить размер региона в зависимости от того, насколько сложный ваш сайт. - person Valerie R; 21.12.2017
comment
@David Crayford: Вы правы насчет стандартного BPX1GRU ... хотя есть способ - если вам действительно нужно знать, я бы посоветовал включить трассировку SYSOMVS и запустить команду ps с параметром -vsz - вы получите обязательно найдите ответ в выводе трассировки. - person Valerie R; 21.12.2017
comment
@ValerieR Это потребует создания процесса и передачи вывода, что, вероятно, излишне. Ваше первоначальное предложение гоняться за контрольными блоками — оптимальное решение. - person David Crayford; 04.01.2018
comment
@David Crayford: Я думаю, вы неправильно поняли ... есть плохо задокументированный способ получить то, что хотел оригинальный постер, используя BPX1GRU, но вам нужно знать, что такое магические параметры. Один из способов понять это — посмотреть, что делает некоторый существующий код (команда ps -vsz), и как только вы узнаете, что вызывает этот код, вы сможете сделать то же самое. Я не предлагаю вызывать ps как решение — только как исследовательский инструмент. :) - person Valerie R; 04.02.2018