Post by Marc Van DyckYes I will do that next monday and report the results here.
OK, as promised, I tested. I does not work.
I ran the procedure below. I tested it interactively with a small
amount of messages, and then submitted it in batch, so as to have a log
file, with 1.000.000 messages.
$ SET NOVERIFY
$ total = P1
$ disp_mem = P2
$ disp_count = P3
$ MBX /CREATE /MES = 100 /POSITIONS = 'total' /PERM mvd$test1
$ count = 0
$ text = "This is message number "
$ WRITE SYS$OUTPUT "Start Writing at ''F$TIME()'..."
$ SHOW MEMORY /POOL
$snd:
$ count = count + 1
$ IF ((count/disp_count)*disp_count) .EQ. count THEN WRITE
SYS$OUTPUT "''F$TIME()' - messages sent : ''count'"
$ IF ((count/disp_mem)*disp_mem) .EQ. count THEN SHOW MEMORY
/POOL
$ message = "''text'''count'"
$ MBX /SEND /SYMBOL = message /NOLOG mvd$test1
$ IF count .LT. total THEN GOTO snd
$ WRITE SYS$OUTPUT "Finished writing ''total' messages"
$ count = 0
$ WRITE SYS$OUTPUT "Start Reading at ''F$TIME()'..."
$rec:
$ count = count + 1
$ MBX /RECEIVE /END = done mvd$test1 message
$ IF F$INTEGER (message - text) .NE. count THEN GOTO ERROR
$ IF ((count/disp_count)*disp_count) .EQ. count THEN WRITE
SYS$OUTPUT "''F$TIME()' - messages read : ''count'"
$ IF ((count/disp_mem)*disp_mem) .EQ. count THEN SHOW MEMORY
/POOL
$ GOTO rec
$error:
$ WRITE SYS$OUTPUT "Error encountered at ''F$TIME()'"
$ WRITE SYS$OUTPUT "Last message read = ''message' - counter =
''count'"
$done:
$ SHOW MEMORY /POOL
$ WRITE SYS$OUTPUT "Finished reading ''total' messages at
''F$TIME()'"
$ WRITE SYS$OUTPUT "Don't forget to execute MBX /DELETE
mvd$test1"
$ EXIT
I won’t post the whole log file here, it’s too large. But here the
begin and the end of the writing phase. The system happily accepts the
1.000.000 messages, and one can see the free nonpaged dynamic memory
decrease while the messages are sent:
Start Writing at 30-NOV-2020 16:23:06.06...
System Memory Resources on 30-NOV-2020 16:23
␍␊Dynamic Memory Usage: Total Free In Use
Nonpaged Dynamic Memory (MB) 390.62 356.07 34.54
Bus Addressable Memory (MB) 1.49 1.35 0.13
Paged Dynamic Memory (MB) 390.62 256.98 133.63
Lock Manager Dyn Memory (MB) 177.03 109.20 67.82
30-NOV-2020 16:23:09.95 - messages sent : 1000
30-NOV-2020 16:23:13.44 - messages sent : 2000
30-NOV-2020 16:23:17.10 - messages sent : 3000
30-NOV-2020 16:23:20.49 - messages sent : 4000
30-NOV-2020 16:23:24.08 - messages sent : 5000
30-NOV-2020 16:23:27.61 - messages sent : 6000
30-NOV-2020 16:23:31.24 - messages sent : 7000
30-NOV-2020 16:23:34.94 - messages sent : 8000
30-NOV-2020 16:23:38.65 - messages sent : 9000
30-NOV-2020 16:23:42.18 - messages sent : 10000
System Memory Resources on 30-NOV-2020 16:23
␍␊Dynamic Memory Usage: Total Free In Use
Nonpaged Dynamic Memory (MB) 390.62 354.85 35.76
Bus Addressable Memory (MB) 1.49 1.35 0.13
Paged Dynamic Memory (MB) 390.62 256.98 133.63
Lock Manager Dyn Memory (MB) 177.03 109.21 67.81
30-NOV-2020 16:23:46.24 - messages sent : 11000
…
30-NOV-2020 17:26:18.05 - messages sent : 990000
System Memory Resources on 30-NOV-2020 17:26
Dynamic Memory Usage: Total Free In Use
Nonpaged Dynamic Memory (MB) 390.62 235.22 155.39
Bus Addressable Memory (MB) 1.49 1.35 0.13
Paged Dynamic Memory (MB) 390.62 256.98 133.63
Lock Manager Dyn Memory (MB) 177.03 110.46 66.56
30-NOV-2020 17:26:22.07 - messages sent : 991000
30-NOV-2020 17:26:25.99 - messages sent : 992000
30-NOV-2020 17:26:29.73 - messages sent : 993000
30-NOV-2020 17:26:34.16 - messages sent : 994000
30-NOV-2020 17:26:38.16 - messages sent : 995000
30-NOV-2020 17:26:41.70 - messages sent : 996000
30-NOV-2020 17:26:45.81 - messages sent : 997000
30-NOV-2020 17:26:50.05 - messages sent : 998000
30-NOV-2020 17:26:54.14 - messages sent : 999000
30-NOV-2020 17:26:57.83 - messages sent : 1000000
System Memory Resources on 30-NOV-2020 17:26
Dynamic Memory Usage: Total Free In Use
Nonpaged Dynamic Memory (MB) 390.62 234.00 156.62
Bus Addressable Memory (MB) 1.49 1.35 0.13
Paged Dynamic Memory (MB) 390.62 256.98 133.63
Lock Manager Dyn Memory (MB) 177.03 110.36 66.66
Finished writing 1000000 messages
But, when messages are read, an end of file marker is received
after some 16.000 messages, probably the first time the message count
goes through zero:
Start Reading at 30-NOV-2020 17:26:57.85...
30-NOV-2020 17:27:01.89 - messages read : 1000
30-NOV-2020 17:27:06.46 - messages read : 2000
30-NOV-2020 17:27:10.24 - messages read : 3000
30-NOV-2020 17:27:13.98 - messages read : 4000
30-NOV-2020 17:27:18.13 - messages read : 5000
30-NOV-2020 17:27:21.89 - messages read : 6000
30-NOV-2020 17:27:26.35 - messages read : 7000
30-NOV-2020 17:27:30.68 - messages read : 8000
30-NOV-2020 17:27:34.73 - messages read : 9000
30-NOV-2020 17:27:39.10 - messages read : 10000
System Memory Resources on 30-NOV-2020 17:27
Dynamic Memory Usage: Total Free In Use
Nonpaged Dynamic Memory (MB) 390.62 235.18 155.43
Bus Addressable Memory (MB) 1.49 1.35 0.13
Paged Dynamic Memory (MB) 390.62 256.98 133.63
Lock Manager Dyn Memory (MB) 177.03 109.03 68.00
30-NOV-2020 17:27:42.79 - messages read : 11000
30-NOV-2020 17:27:46.92 - messages read : 12000
30-NOV-2020 17:27:50.76 - messages read : 13000
30-NOV-2020 17:27:54.35 - messages read : 14000
30-NOV-2020 17:27:58.51 - messages read : 15000
30-NOV-2020 17:28:02.39 - messages read : 16000
System Memory Resources on 30-NOV-2020 17:28
Dynamic Memory Usage: Total Free In Use
Nonpaged Dynamic Memory (MB) 390.62 236.03 154.58
Bus Addressable Memory (MB) 1.49 1.35 0.13
Paged Dynamic Memory (MB) 390.62 256.98 133.63
Lock Manager Dyn Memory (MB) 177.03 109.02 68.00
Finished reading 1000000 messages at 30-NOV-2020 17:28:06.05
Don't forget to execute MBX /DELETE mvd$test1
VANDYCK job terminated at 30-NOV-2020 17:28
The mailbox is indeed indicated as empty, but one can see that its
deletion still frees up a lot of nonpaged dynamic memory, a clear
indication that the mailbox was not really empty :
ROCK> mbx/info mvd$test1
Current status of mailbox named MVD$TEST1 :
Physical name : _MBA459:
Owner UIC : [000001,000034]
UIC Protection mask : (S:RWPL,O:RWPL,G:RWPL,W:RWPL)
Message size : 100
Processes attached : 0
Pending messages : 0
ROCK>
ROCK> show mem/pool
System Memory Resources on 30-NOV-2020 17:35
Dynamic Memory Usage: Total Free In Use
Nonpaged Dynamic Memory (MB) 390.62 236.06 154.56
Bus Addressable Memory (MB) 1.49 1.35 0.13
Paged Dynamic Memory (MB) 390.62 256.99 133.63
Lock Manager Dyn Memory (MB) 177.03 109.12 67.90
ROCK> mbx/att mvd$test1
ROCK> mbx/del mvd$test1
ROCK> show mem/pool
System Memory Resources on 30-NOV-2020 17:35
Dynamic Memory Usage: Total Free In Use
Nonpaged Dynamic Memory (MB) 390.62 356.05 34.57
Bus Addressable Memory (MB) 1.49 1.35 0.13
Paged Dynamic Memory (MB) 390.62 256.99 133.63
Lock Manager Dyn Memory (MB) 177.03 109.12 67.90
So it is clear that sending more than 64k messages to a mailbox cannot
be trusted and should therefore be avoided. I think it should be stated
explicitly in the documentation.
--
Marc Van Dyck