Browse Prior Art Database

Efficient file allocation (Sliding secondary allocation for OS/390 datasets)

IP.com Disclosure Number: IPCOM000014208D
Original Publication Date: 2000-Nov-01
Included in the Prior Art Database: 2003-Jun-19
Document File: 4 page(s) / 93K

Publishing Venue

IBM

Abstract

This paper proposes to provide a scheme where the quantity of secondary extents allocated for OS/390 datasets increases geometrically (doubles, triples, quadruples, etc.) after some number of extents (like 10) up to a point which the maximum dataset size (1G, 2G, 4G, or 64G) can be reached with the current extent quantity within the maximum number of extents allowed on the dataset.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 57% of the total text.

Page 1 of 4

Efficient file allocation (Sliding secondary allocation for OS/390 datasets)

        This paper proposes to provide a scheme where the quantity of secondary extents allocated for OS/390 datasets increases geometrically (doubles, triples, quadruples, etc.) after some number of extents (like 10) up to a point which the maximum dataset size (1G, 2G, 4G, or 64G) can be reached with the current extent quantity within the maximum number of extents allowed on the dataset.

      For example, assume the case where it is desired for the secondary quantity to double after every 10 extents up to a point where the quantity no longer has to be doubled because a 2GB dataset size, can be reached within the remaining extents.

Primary quantity = 180 4K pages = 1 cyl Initial secondary quantity = 180 4K pages = 1 cyl

Extents Secondary quantity
1-10 180 pages=1cyl
11-20 360 pages=2cyl
21-30 720 pages=4cyl
31-40 ...
... ...
The formula for this example is

If (number_of_extents_left * current_qty) + amount_already_allocated >= max_dataset_size then use current_qty Else current_qty = 2^[TRUNC ((current_extent_number + 9) / 10) - 1] * priqty

This points out the need to keep track of the number of extents already allocated, the current quantity, and the amount of space already allocated.

More generally, the current quantity allocation above would be:

MF^[TRUNC ((current_extent_number + (extent_interval - 1)) / extent_interval) - 1 * priqty

Where

MF is the multiplication factor (double: 2, triple: 3 ...) extent_interval is the number of extents to allocate before increasing the size of secqty

The spreadsheet at the end of this article shows this formula in action with the following values acting as input to the formula:

MF (multiplication factor) priqty
initial secqty extent_interval max_number_of_extents (119 or 255) max_dataset_size (1G, 2G, 4G, or 64G)

For DB2's declared tables, one can use the following values:

MF (multiplication factor) 2
priqty 180 pages=1cyl
initial secqty 180 pages=1cyl
extent_interval 10
max_number_of_extents 255
max_dataset_size 2G

1

Page 2 of 4

The advantage of the disclosed approach is that planning for primary and secondary quantities is eliminated, resulting in high productivity for space managers. Below is a chart showing the average space wasted using the proposed scheme:

Average percent of wasted storage

60%

50%

40%

30%

20%

10%

0%1 29 57 85 113 141 169 197 225 253

Extent Number

2

Page 3 of 4

Sliding Secondary Allocation for DB2 Managed Datasets

Assumptions:

1 GB = 1024*1024*1024 Bytes

1 Cyl = 180 KB Pages

Valid input Input Area Below -- only change the red values in this spreadsheet -- all other values in spreadshet are computed

OK <- 2 = Multiplication_Factor (2: Double; 3: Triple; ...)

OK <- 255 = Max_Extents (119 or 255) Largest Secondary Extent (in KBytes)----

OK (2G) <- 2147483648 = Max_Dataset_Size in Bytes (1G, 2G, 4G, or 64G)

Sample settings:

SAP DCLd Temps

2

OK <- 737280

OK <- 737280

= Priqty in Bytes

= Secqty in Bytes

737280 73728

737280 7...