Except that SMF does not write normal VBS data.

This is from Chapter 3 in my 1984 Book, member ACHAP03 in MXG Software:

SMF has always used a RECFM=VBS, i.e., Variable, Blocked, Spanned record
format.  This is because the original OS/360 implementation would only
give 1000 bytes (of its 88K nucleus!) for SMF data, and the only way you
can write long logical records with a small physical block size records
is to use VBS!

However, the SMF Writer does not use normal VBS; in normal VBS, all data
records are spanned, so that all blocks are full, but that is not what
the SMF writer does in its "pseudo-VBS" architecture.  Instead of
spanning all records, SMF records are only spanned when the LRECL of the
record to be written is larger than the BLKSIZE of the dataset.  Why
does SMF not span all records?  It all goes back to the original BSAM
architecture introduced in OS/360 in 1969.  The SMF dump program could
not read broken VBS records (the dump failed with an ABEND 002).  If all
records were spanned, any system crash would always cause the SMF dump
program to ABEND (because the last block written to DASD would always
indicate spanning, but the next block written found would be the new
un-spanned IPL record that had been written after the crash).  So as to
minimize the probability of the 002 abend, the SMF writer normally wrote
mostly-VB records, with an occasional long record written as VBS.

In 1978 the SMF Writer was redesigned and a VSAM data set is now used.
The "pseudo-VBS" algorithm was carried forward, and the initial maximum
CI size permitted was 4096 bytes.  Thinking that larger CI Size would
always minimize the number of I/O operations, I and others lobbied for
the option to increase the CI Size to half track, and finally in MVS/ESA
the restriction was removed.  Now, however, I realize that a larger CI
size, coupled with the frequent occurrence of records larger than the
half track CI size, can significantly waste space, as this example with
a CI Size of 26624 (half-track on 3390 device) will show:

   New variable-length records are put into the current CI as long as
   the new record fits.  If there is not enough room for the new record
   in the current CI, the new record is normally NOT spanned; instead,
   the new record is written into the start of the next CI.  Record
   spanning only occurs if the new record's LRECL is greater than the CI
   size of the VSAM data set.  In that case, the new record starts in
   the next CI and fills as many CIs as are needed to write the long
   record, but then any space remaining in the final CI for the long
   record is never used.  Consider this example with records of 1000,
   32760, 1000, and 32760 bytes using a 26624 CI size:

          |------track 1------|------track 2------|------track 3------|
            CI=1      CI=2      CI=3      CI=4      CI=5      CI=6
          |AA-------|BBBBBBBBB|BBB------|CC-------|DDDDDDDDD|DD-------|
   Data:   1000      26624     6136      1000      26624     6136
   Wasted:     25624         0     20488     25624         0     20488

   Thus 67,520 bytes were written, but the 6 CIs (159,744 bytes) used
   three full tracks for the four SMF records.

   In contrast, with a CI size of 8192, these same 4 records are written
   in 10 CIs (81,920 bytes) on only two tracks (actually, less than 2
   tracks, since the last 2 CIs on the second track can be used for
   additional SMF records):

          |--------------------------track 1--------------------------|
            CI=1      CI=2      CI=3      CI=4      CI=5      CI=6
          |AA-------|BBBBBBBBB|BBBBBBBBB|BBBBBBBBB|BBBBBBBB-|CC-------|
   Data:   1000      8192      8192      8192      8184      1000
   Wasted:      7192         0         0         0         8      7192

          |--------------------------track 2--------------------------|
            CI=7      CI=8      CI=9      CI=10
          |DDDDDDDDD|DDDDDDDDD|DDDDDDDDD|DDDDDDDD-|---------|---------|
   Data:   8192      8192      8192      8184      available available
   Wasted:         0         0         0         8


   Note that if there are no records greater than 26624 bytes, the
   wastage is less (only space at the end of the current CI is wasted),
   and thus the serious wastage only occurs in practice if you have many
   CICS type 110 SMF records, as they are the only high-volume long SMF
   records in today's environment.  Prior to CICS/ESA, you could
   actually alleviate this problem, because you could specify the size
   of the buffer in CICS and thereby restrict the type 110 record to be
   less than the SMF CI size to minimize wastage, but in CICS/ESA, the
   CICS performance record buffer is fixed at 32760.


Barry Merrill

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf 
Of Shmuel Metz (Seymour J.)
Sent: Saturday, February 14, 2015 7:01 PM
To: [email protected]
Subject: Re: FB to VB PDS

In <[email protected]>, on
02/14/2015
   at 02:34 PM, Paul Gilmartin
<[email protected]> said:

>We're in unusual agreement here.  Needs:

>o VB(S) capability.

For VB I agree. I don't see the point of VBS except for special cases like SMF 
and FORTRAAN I/O.
 
-- 
     Shmuel (Seymour J.) Metz, SysProg and JOAT
     ISO position; see <http://patriot.net/~shmuel/resume/brief.html>
We don't care. We don't have to care, we're Congress.
(S877: The Shut up and Eat Your spam act of 2003)

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
[email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to