Как я могу программно получить объем памяти, который программа на ассемблере в настоящее время использует ассемблерные инструкции/макросы из работающей программы? Я отлаживаю ошибку 878 (недостаточно памяти) и хочу, чтобы моя программа сообщала на разных этапах, сколько памяти она использует.
Как я могу получить информацию об использовании памяти с помощью ассемблера zos
Ответы (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 в вашей информации о безопасности - никаких других специальных настроек не требуется.
LDA
содержит текущее использование, а не только лимит. LDALOAL
— это текущее использование частной области ниже линии 16 МБ, а LDAELOAL
— использование выше линии 16 МБ.
- person David Crayford; 05.12.2017
BPX1GRU
, похоже, возвращает только время, а не использование памяти, если я что-то не упустил?
- person David Crayford; 05.12.2017
STORAGE OBTAIN
(илиGETMAIN
, илиSVC 10
, илиCEEGTST
), конечно, но это крайний случай. Иногда люди используют утилиту для профилирования производительности своего магазина. Это не значит, что вы делаете что-то неправильно, это нормально, просто необычно. - person cschneid   schedule 30.11.2017VERBEXIT VSMDATA CONTROLBLOCKS
и просматривая записиDQE
. - person David Crayford   schedule 05.12.2017