IBM Spectrum Protect In-the-Cloud Deployment Guidelines With Amazon Web Services V1.2
IBM Spectrum Protect In-the-Cloud Deployment Guidelines With Amazon Web Services V1.2
In-the-Cloud Deployment
Guidelines with Amazon Web
Services
James Damgar
Daniel Benton
Jason Basler
IBM Spectrum Protect Performance Evaluation
US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule
Contract with IBM Corp.
© Copyright International Business Machines Corporation 2018, 2019
US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule
Contract with IBM Corp.
CONTENTS
Contents.............................................................................................................................................. 3
List of Figures ...................................................................................................................................... 5
List of Tables ....................................................................................................................................... 6
Introduction ........................................................................................................................................ 6
1.1 Purpose of this Paper.......................................................................................................... 6
1.2 Considerations for Disk-to-Cloud Tiering Versus Direct-to-Cloud Data Movement ........... 7
1.2.1 Cloud Accelerator Cache Considerations.................................................................... 8
1.2.2 Workload Limitations and Considerations with Tiering ............................................. 9
1.2.3 Amazon S3 Intelligent-Tiering ................................................................................... 12
1.3 Cloud Deployment Patterns.............................................................................................. 12
1.4 Cloud Environment Considerations .................................................................................. 14
1.4.1 Importance of Adequate Sizing ................................................................................ 14
1.4.2 Linux Logical Volume Manager (LVM) ...................................................................... 15
1.5 References to Physical IBM Spectrum Protect Blueprints ................................................ 15
1.6 Database Backup Capacity ................................................................................................ 16
1.7 Server Maintenance Scheduling Considerations .............................................................. 17
1.8 Session Scalability by Blueprint Size ................................................................................. 17
Amazon EC2 Compute Configurations.............................................................................................. 19
2.1 Design Considerations for Amazon EC2 Instances ........................................................... 26
2.1.1 Considerations for Direct-to-Cloud Architectures .................................................... 28
2.1.2 Sizing the Cloud Accelerator Cache .......................................................................... 29
2.1.3 AWS: Large Instance Considerations ........................................................................ 30
2.1.4 AWS: Medium Instance Considerations ................................................................... 31
2.1.5 AWS: Small Instance Considerations ........................................................................ 31
2.1.6 AWS: Extra-Small Instance Considerations ............................................................... 31
Throughput Measurements and Results .......................................................................................... 32
3.1 Dataset Descriptions ......................................................................................................... 32
3.2 Backup and Restore Measurements ................................................................................. 34
3.2.1 AWS: Large Instance Measurements ........................................................................ 34
3.2.2 AWS: Medium Instance Measurements ................................................................... 37
3.2.3 AWS: Small Instance Measurements ........................................................................ 39
3.2.4 AWS: Extra-Small Instance Measurements .............................................................. 40
Appendix ........................................................................................................................................... 42
Disk Setup Commands for Linux Deployments ................................................................................. 42
Disk Benchmarking ........................................................................................................................... 57
Object Storage Benchmarking .......................................................................................................... 64
Instance and Object Storage: Navigating the AWS Portal ................................................................ 68
References ........................................................................................................................................ 74
Notices .............................................................................................................................................. 75
Trademarks ........................................................................................................................... 76
LIST OF FIGURES
Figure 5: AWS large configuration; database volume average throughput; 8 KiByte random
writes/reads .................................................................................................................. 60
Figure 6: AWS large configuration; database volume average IOPS; 8 KiByte random writes/reads
...................................................................................................................................... 61
Figure 7: AWS large configuration; cloud cache volume average throughput; mixed 256 KiByte
writes and reads ........................................................................................................... 61
Figure 8: AWS medium configuration; database volume average throughput; 8 KiByte random
writes/reads .................................................................................................................. 62
Figure 9: AWS medium configuration; database volume average IOPS; 8 KiByte random
writes/reads .................................................................................................................. 62
Figure 10: AWS medium configuration; cloud cache volume average throughput; mixed 256 KiByte
writes and reads ........................................................................................................... 63
Figure 11: AWS small configuration; database volume average throughput; 8 KiByte random
writes/reads .................................................................................................................. 63
Figure 12: AWS small configuration; database volume average IOPS; 8 KiByte random
writes/reads .................................................................................................................. 64
Figure 13: AWS small configuration; cloud cache volume average throughput; mixed 256 KiByte
writes/reads .................................................................................................................. 64
LIST OF TABLES
Table 1: IBM Spectrum Protect physical Blueprint targets (V4.1, Linux x86) .................................. 16
Table 2: Preferred ranges of maximum values for client session counts ........................................ 18
Table 9: AWS, large configuration, 128 MiByte VE-like dataset backup results ............................. 34
Table 10: AWS, large configuration, 128 MiByte VE-like dataset restore ....................................... 35
Table 11: AWS, large configuration, 128 MiByte random dataset backup results .......................... 35
Table 12: AWS, large configuration, 128 MiByte random dataset restore ...................................... 35
Table 13: AWS, large configuration, 1 GiByte dataset backup results ............................................ 36
Table 14: AWS, large configuration, 1 GiByte dataset restore results ............................................ 36
Table 15: AWS, medium configuration, 128 MiByte VE-like dataset backup results ...................... 37
Table 16: AWS, medium configuration, 128 MiByte VE-like dataset restore results ....................... 37
Table 17: AWS, medium configuration, 128 MiByte random dataset backup results...................... 38
Table 18: AWS, medium configuration, 128 MiByte random dataset restore results ...................... 38
Table 19: AWS, medium configuration, 1 GiByte dataset backup results ....................................... 38
Table 20: AWS, medium configuration, 1 GiByte dataset restore results ....................................... 38
Table 21: AWS, small configuration, 128 MiByte VE-like dataset backup results ........................... 39
Table 22: AWS, small configuration, 128 MiByte VE-like dataset restore results ........................... 39
Table 23: AWS, small configuration, 128 MiByte random dataset backup results .......................... 39
Table 24: AWS, small configuration, 128 MiByte random dataset restore results .......................... 40
Table 25: AWS, small configuration, 1 GiByte dataset backup results ........................................... 40
Table 26: AWS, small configuration, 1 GiByte dataset restore results ............................................ 40
Table 27: AWS, extra-small configuration, 128 MiByte VE-like dataset backup results ................. 40
Table 28: AWS, extra-small configuration, 128 MiByte VE-like dataset restore results .................. 41
Table 29: AWS, extra-small configuration, 128 MiByte random dataset backup results ................. 41
Table 30: AWS, extra-small configuration, 128 MiByte random dataset restore results ................. 41
Table 31: AWS, extra-small configuration, 1 GiByte dataset backup results .................................. 41
Table 32: AWS, extra-small configuration, 1 GiByte dataset restore results ................................... 41
Introduction
7
container pool disk tier, the instance disk capacity might have to be much greater, with the
caveat that a slower-performing disk might be sufficient for this case. In all cases, you must
understand the ingestion targets (after data deduplication and compression) to determine a
daily disk capacity for a transient disk case. Meanwhile, operational recovery requirements
in terms of the number of days’ worth of recovery data (after deduplication and
compression) should be determined to further size a disk container pool with tiering to
cloud if necessary.
With the direct-to-cloud model, you can minimize local block storage capacity. This is an
advantage because local block storage can be cost prohibitive in cloud-hosted
environments.
9
Figure 1: Disk-to-cloud tiering, before and after
Figure 2 depicts the situation after tiering is completed and the REUSEDELAY parameter
value of the source directory-container storage pool is exceeded (so that deduplicated
extent removal for extents with zero reference count can occur).
Figure 2: Disk-to-cloud tiering, after tiering
Notice that deduplicated extents 1 and 2 remain on disk even after tiering and extent
cleanup have occurred. This is due to the fact that those extents are shared between the
active and inactive backup copies. If many deduplicated extents are shared by objects (a
high duplicate data rate with high data deduplication ratios), it is more likely that data will
remain on disk, even after backup objects have been tiered at an IBM Spectrum Protect
inventory level. Keep this factor in mind when you consider a disk-to-cloud tiering model
and when you size an environment.
For workloads that deduplicate well from day to day, there will be many shared extents
across backup and archive generations and a smaller capacity footprint on tiered object
storage as a result because these backup and archive generations will also share many
extents in the cloud-container storage pool. For workloads that deduplicate poorly day to
day (highly unique data change each day), there will be few shared extents across backup
and archive generations and potentially a larger capacity footprint on tiered object storage
because these backup and archive generations will each point to (more) unique data in the
cloud-container storage pool.
If the primary motivation for using disk-to-cloud tiering is rapid recovery of operational data,
a tiering model might provide the best approach. You must understand the nature of the
client workload to accurately size the directory-container storage pool on disk.
11
1.2.3 Amazon S3 Intelligent-Tiering
Beginning with IBM Spectrum Protect V8.1.8, you can enable Amazon S3 Intelligent-
Tiering for objects in IBM Spectrum Protect cloud-container storage pools. When you issue
the DEFINE STGPOOL command to define a cloud-container storage pool with Amazon
S3, you can specify a new parameter, CLOUDSTORAGECLASS (and update the parameter
value later by using the UPDATE STGPOOL command). Setting this parameter to a value of
AUTOMATICVENDORTIERING will cause all new cloud-container storage pool objects that
are uploaded to S3 to be sent to the Intelligent-Tiering storage class (as opposed to the
default Standard storage class). Objects with the AUTOMATICVENDORTIERING storage
class type can be transitioned automatically to the Amazon S3 Infrequent Access tier if the
object has not been accessed for 30 consecutive days. This functionality offers storage
capacity savings for Amazon S3 users. IBM Spectrum Protect data that is already
deduplicated and compressed can be further transitioned to a lower-cost storage tier within
S3, provided that restore or other read requests that would involve deduplicated extents
within the transitioned object are infrequent. With Amazon S3 Intelligent-Tiering, objects
that are read are automatically moved back to the frequent access tier. For more
information about Amazon Intelligent-Tiering, see References [10].
In the figure, the first deployment pattern could involve an IBM Spectrum Protect server
that is installed on premises or in Amazon on an EC2 instance, with primary backup and
archive data landing in object storage immediately. The positioning of the IBM Spectrum
Protect server in relationship to clients could be one critical decision point when you
consider whether to have a server instance on premises or within AWS. This pattern could
involve use of a direct-to-cloud architecture with accelerator cache or a small disk
container pool with immediate tiering to a second cloud-container storage pool without
accelerator cache.
The second deployment pattern would make use of cloud-based Amazon S3 object
storage at the secondary disaster recovery (DR) site. This DR server could be installed at
an on-premises site or on an Amazon EC2 instance. In the latter case, sufficient wide area
network (WAN) bandwidth between the primary and secondary sites is required for
acceptable performance. Much like the first deployment pattern, here the IBM Spectrum
Protect server at the DR site could make use of a direct-to-cloud topology with a cloud-
container storage pool featuring accelerator cache, or it could use a small disk container
pool landing spot with immediate tiering to a cloud-container storage pool backed by object
storage.
The third deployment pattern features specific use of disk-to-cloud tiering, available with
IBM Spectrum Protect V8.1.3 and later, to allow for operational recovery data to reside on
faster performing disk storage. Data that is older, archived, or both would be tiered to
cloud-based Amazon S3 object storage after a specified number of days. This deployment
could also be implemented at an on-premises site or within an Amazon EC2 instance.
However, the additional cost of having a larger capacity disk container pool should be
factored into cost estimates with an in-the-cloud solution.
A combination of approaches is also possible within the same deployment. For example,
a cloud-container storage pool could be configured with accelerator cache disk and made
to store long-term retention or compliance archives. A directory-container storage pool
could be configured as a disk tier for normal backups, and a tiering relationship could be
set up so that operational recovery data (for example, backups from the previous 7 days) is
kept on this disk tier, while older data is demoted to the same cloud-container storage pool.
13
The same cloud-container storage pool can be a direct backup target and a tiering target.
However, if the pool is a direct target of a backup-archive client, the pool must be
configured with accelerator cache disk.
15
ingest data are for the block storage Blueprints. These ingestion targets assume an 8-hour
backup window.
Table 1: IBM Spectrum Protect physical Blueprint targets (V4.1, Linux x86)
Although not defined explicitly in the physical Blueprints, the extra-small cloud Blueprint
systems target up to 10 TB or more of total managed (front-end) data with a daily ingestion
rate of up to 1 TB, or more, per day.
• The retention policy that affects client node data on the target replication
server should match the value of the TIERDELAY parameter of the storage
rule responsible for tiering the same client node data on the source server.
In general, the server that is used for disk-to-cloud tiering (whether it be the source
replication server or the target replication server) should be the server with the longer
retention policy for the client nodes that are affected by the tiering storage rule.
17
(For more information about the Blueprint configurations, see References [1].)
The actual throughput scalability of a cloud-based solution depends on many factors,
including the configured disk capability and capacity of the system, the amount of CPU and
memory resources available on the system, and the relative rate of data deduplication and
compression for the dataset that is ingested into the server. Larger objects, which feature a
larger deduplicated extent size (for example, 250 - 350 KiBytes, or more) and which do not
deduplicate or compress well (for example, less than 10%), will result in less database and
computation (CPU) overhead, but will utilize more disk and network bandwidth. The logical
reduction of front-end client data to the physical back-end data (which is actually written
out and stored to disk and object storage) means that the disk, network, and object storage
components will be stressed to a higher degree as client/server session counts increase.
Memory usage by the IBM Spectrum Protect server might also be greater. As session
counts increase, these components are likely to become a system bottleneck, limiting front-
end throughput.
Objects that feature smaller, deduplicated extent sizes (for example, 60 - 100 KiBytes or
similar) and that deduplicate and compress well (for example, 50% data deduplication with
50% compressibility) will result in less network, disk, and object storage bandwidth used,
but will lead to more database and computation overhead to facilitate these data reduction
operations. As session counts increase, CPU and database-related memory are likely to
first become limiting factors for these data types. In general, the more successfully data
can be deduplicated and compressed (and therefore the greater the data reduction from
front-end to back-end data), the greater the number of feasible client sessions. The
following table indicates a reasonable range of client session counts based on system size
and data type, as well as the likely limiting factor for the system as the high end of the
range is approached. For more information about these data types, see Throughput
Measurements and Results.
Table 2: Preferred ranges of maximum values for client session counts
Extra 10 – 50 25 – 50 10 – 50 10 – 50
small
1
This model uses 128 MiByte objects, 250 - 350 KiByte extents, and <10% data deduplication and
compressibility. Full backup operations are used with pseudo random data or data that cannot be easily
deduplicated or compressed. For example, this model can be applied to encrypted data.
2
This model uses 128 MiByte objects, 150 - 200 KiByte extents, and 50% data deduplication and compressibility.
For example, this model can be applied to virtual machine backups.
3
This model uses 1 GiByte objects, 60 - 100 KiByte extents, and 50% data deduplication and compressibility. For
example, this model can be applied to database image backups.
4
This model uses 128 KiByte objects and <10% data deduplication and compressibility. For example, this model
can be applied to file server data and other small files or objects.
Often, a diminishing rate of return in regard to throughput is experienced when 50 - 100 total client
sessions are exceeded, regardless of data type. More sessions are possible and might be
warranted, given the client schedule or other requirements. However, aggregate gains in total
throughput of a single IBM Spectrum Protect instance might not be substantial past this point.
19
network connection from an on-premises data center to AWS in order to access Amazon
Virtual Private Cloud (VPC) as well as public AWS services, such as Amazon S3.
For example, if an IBM Spectrum Protect source server were to ingest 40 TB of front-end
data that reduced to 10 TB after (2:1) data deduplication and (2:1) data compression, that
10 TB of back-end data would have to be replicated during the daily storage pool
protection and node replication window. A 1 Gbps dedicated link can support
approximately 3.5 TB per hour of throughput. Amazon Direct Connect offers both 1 Gbps
and 10 Gbps options with the additional benefit of being charged an AWS Direct Connect
data transfer rate that is below the rate charged for incoming internet data transfer. See
References [6].For each of the instances, isolated throughput measurements should be
conducted with an S3 API tool to determine maximum throughput to collocated S3 bucket
storage within that region.
Table 3: AWS, large configuration
256 GB RAM
20 Gbit Ethernet
connectivity
21
192 GB RAM
10 Gbit Ethernet
connectivity
64 GB RAM
Up to 10 Gbit
Ethernet
connectivity
23
100 GB EBS GP2 IBM Spectrum 1
volume Protect instance
disk
Up to 10 Gbit
Ethernet
connectivity
25
Accessed via VPC
endpoint using
HTTPS
Blue-
Sizing Instance Blueprint
Instance type vCPU Memory print
category line CPU
memory
Extra
m5(a) M5(a).xlarge - -
small 4 16 GB
m5(a) m5(a)xlarge 16 64 GB
Small i3 i3.4xlarge 16 122 GB 12 64 GB
d2 d2.2xlarge 8 61 GB
c4 c4.8xlarge 36 60 GB
m5(a) m5(a).12xlarge 48 192 GB
Medium 16 128 GB
i3 i3.8xlarge 32 244 GB
d2 d2.4xlarge 16 122 GB
Large m4 m4.10xlarge 40 160 GB 44
27
i3 i3.8xlarge 32 244 GB
256 GB
m5(a) m5(a).16xlarge 64 256 GB (V3.1) or
i3 i3.16xlarge 64 488 GB 384 GB
(V4.1)
d2 d2.8xlarge 36 244 GB
The previous table is sorted from lowest to highest cost instance in each category. Costs
are estimated from the Amazon EC2 calculator based on a Red Hat Enterprise Linux
instance in the US West Oregon Region with On-Demand hourly pricing. Pricing is subject
to change; for this reason, exact figures are not provided. The entries highlighted in blue
are the current preferred Amazon EC2 instance types for extra-small, small, medium, and
large configurations, respectively. The blue entries provide a good balance between
controlling costs while satisfying IBM Spectrum Protect server requirements.
Beginning with IBM Spectrum Protect V8.1.3, the server automatically throttles client
backup operations if the cloud accelerator cache portion of a direct-to-cloud storage pool is
nearing full capacity. As a result, it is not mandatory to configure cloud accelerator disk
cache space that would be large enough to hold a full day’s worth of backups (after data
deduplication and compression). However, disk benchmarks should be run to ensure that
the anticipated back-end workload that an IBM Spectrum Protect server is expected to
support will not result in this disk location being the primary bottleneck of the system (see
Disk Benchmarking). In the previous table, the EC2 instances were carefully selected to
ensure that they have the dedicated EBS bandwidth and disk resources that are necessary
for the desired role. In practice, any planned deployment should be validated to ensure it
will meet performance requirements.
The NVMe SSD storage available for many instances, including the i3 line, should be
avoided for use by IBM Spectrum Protect. If the instance is stopped, all data in this non-
EBS disk will be lost. This would include a scenario in which data that is ingested by the
IBM Spectrum Protect server into the cloud accelerator cache, and reported successfully
stored to the client, is lost from this disk before the asynchronous disk-to-cloud transfer is
completed.
Thresholds, particularly at the EBS disk level, must be kept in mind when designing and
deploying complete instance solutions. For example, IOPS are limited to a count of 80,000
per AWS account per disk type. Failure to account for IOPS or throughput limitations
imposed by the service provider on the account, instance, or disk level can result in
performance problems that might be difficult to debug in production. For Amazon
documentation about this subject, see References [4] [5].
29
Figure 4: Sizing the cloud accelerator cache for AWS
31
instance type provides up to 2120 Mbps of dedicated throughput to the EBS disk layer,
along with up to 10 Gbit Ethernet bandwidth.
EBS gp2 disks were again chosen for the database and active log volumes to ensure
adequate IOPs capability, even for this smaller instance size. For convenience with
scalability, the five 64 GB disks were combined into a single LVM volume group with four
database volumes and one active log volume created. Similarly, a single 512 GB ST1
volume was provisioned and divided into two volumes using LVM, one for database
backup and one for use as the archive log volume. If additional database backup capacity
is required, additional EBS disk capacity could be added to this volume group. This applies
as well to the one 1200 GB GP2 disk provisioned for the cloud accelerator cache. General
purpose SSD performance is still preferable for the overlapped I/O seen with this volume.
The 128 MiByte, VE-like front-end dataset represents a relatively large object size that
aligns with the IBM Spectrum Protect for Virtual Environments: Data Protection for VMware
API client’s VE megablock size for virtual machine disk backups. The large object size
and relatively large, though realistic, deduplication extent size represents a favorable
profile for the IBM Spectrum Protect server’s ingestion engine to achieve good
performance. A duplicate data rate of 70% combined with a compressibility rate of 50% for
this dataset yields an 85% total data reduction from front-end data as compared with data
that is actually stored to the (cloud-accelerator cache and object storage) back-end after
data deduplication, compression, and encryption processing. Although this workload does
not qualify as a “best case,” it does represent a realistic, favorable scenario in which to
model top-end throughput capability of an IBM Spectrum Protect system without
overestimating throughput performance.
The 128 MiByte, random front-end dataset represents a larger object size with a large,
favorable deduplication extent size. However, the random nature of the data ensures that it
does not deduplicate well with existing storage pool data or compress well. This dataset is
included to represent a workload that is throughput intensive from the perspective of
storage pool disk and object storage network load. Full backups of large objects containing
relatively random data content would be modeled well by this dataset.
The 1 GiByte front-end dataset represents a model of structured, database-like data
possessing a relatively small deduplication extent size relative to the front-end object size.
Such a workload is representative of what might be experienced with an IBM Spectrum
Protect for Databases: Data Protection for Oracle backup environment protecting
production databases. The smaller extent size causes additional strain and overhead for
the IBM Spectrum Protect ingestion engine and typically results in less throughput than the
128 MiByte dataset. A duplicate data rate of 50% and compressibility of 50% yield a 75%
overall front-end to back-end reduction for this workload, with a 4:1 ratio reduction, which
approaches what is seen for this type of data in the field.
The 128 KiByte front-end dataset is used here as a relative “worst case” workload in
regard to throughput efficiency for the IBM Spectrum Protect server. This “small file”
workload will stress the data deduplication, compression, encryption, and object storage
transfer components of the IBM Spectrum Protect server to a higher degree relative to the
amount of data that is actually protected and transferred to object storage. This high
overhead dataset allows for predicting a lower estimate on performance of an IBM
Spectrum Protect environment within these cloud solutions.
33
3.2 Backup and Restore Measurements
The following sections outline the backup and restore throughput results that were
experienced with the previously mentioned datasets in the built cloud environments.
Prior to conducting backup and restore tests on the IBM Spectrum protect environments, a
load phase was conducted whereby the servers were initially loaded with a set of
deduplicated 128 MiByte front-end data in order to populate the server database tables to
provide for a more realistic customer configuration. IBM Spectrum Protect database
queries can change their behavior based on the size and layout of server database tables.
This load phase was performed to bring behavior in line with real environment
expectations.
For each dataset, up to 50 IBM Spectrum Protect client backup sessions were initiated in
parallel to the server for the large Amazon configuration, up to 25 for the medium Amazon
configuration, and up to 10 for the small Amazon configuration. The results presented here
for backup represent the maximum front-end throughput experienced with the largest
number of sessions tested against that system.
For each dataset on restore, between 1 and 40 client restore sessions were initiated for the
large Amazon system, between 1 and 20 for the medium Amazon system, and between 1
and 10 for the small Amazon system. Results presented here include the intermediate
session count values to show how restore throughput can scale with the number of restore
sessions involved for datasets similar to these types.
All throughput values represent front-end, “protected data” values, before inline data
deduplication, compression, and encryption. These are the data rates experienced by a
client that is backing up data to or restoring data from the IBM Spectrum Protect server.
The rates are similar to what customers would likely describe as their performance
experience with the product. On ingestion, the actual quantity of data that makes it to
accelerator cache disk and onwards to object storage will be less, depending on the data
deduplication and compression rate. On restore, all individual extents comprising a front-
end object will be restored using HTTP GET calls from the object storage device. However,
the built-in caching within the IBM Spectrum Protect server’s restore engine might reduce
the number of restore operations needed if a workload contains duplicate data.
Table 10: AWS, large configuration, 128 MiByte VE-like dataset restore
1 209.7 737.1
2 392.3 1379.0
4 627.7 2206.9
8 1107.1 3892.3
16 1128.4 3966.9
32 1736.8 6105.9
With the 50% compressibility of this dataset, the amount of data transmitted over the wire
(from object storage) is half its decompressed front-end value. This allows for throughput in
excess of 10 Gbit line speed without saturating the EC2-to-S3 Ethernet link. Restore rates
from object storage are typically challenged due to latency and individual read
characteristics. Restore throughput rates with realistic session counts from object storage
pools might challenge certain data recovery time objectives (RTOs).
Table 12: AWS, large configuration, 128 MiByte random dataset restore
35
Sessions MiBytes/s Gibytes/hour
1 145.0 509.8
2 253.8 892.4
4 385.4 1354.9
8 477.9 1680.0
16 540.2 1899.1
32 405.2 1424.7
This dataset benefits from a large deduplication extent size of approximately 200 - 300
KiBytes, on average. This allows for more data movement per HTTP GET operation
performed by the cloud-container storage pool and subsequently greater throughput per
session compared to the previous 128 MiByte dataset.
Ingestion throughput rates with the 1 GiByte dataset featuring the smaller (60 – 100
KiByte) average deduplication extent size were less than the 128 MiByte favorable
workload, but still in line with large Blueprint throughput targets in this direct-to-cloud
configuration.
1 129.9 456.7
2 235.3 827.4
4 291.4 1024.3
8 446.0 1568.1
16 346.9 1219.5
32 477.4 1678.5
Restore throughput rates with the smaller extent workload are somewhat less than the
favorable, 128 MiByte dataset. This is due to the additional overhead of more HTTP GET
requests necessary to restore this data (smaller extents lead to more operations per front-
end restored data). A throughput of more than 1 TiByte/hour could be achieved with 20-40
restore sessions of this data type.
Throughput with the favorable 128 MiByte object dataset with the medium Amazon build
easily falls within the upper end of the medium Blueprint throughput target with 25 backup
sessions for an 8-hour backup window and surpasses it with a 10-hour window. This
configuration could possibly support the data workload of a smaller, large Blueprint role.
Table 16: AWS, medium configuration, 128 MiByte VE-like dataset restore results
1 254.4 894.5
2 506.4 1780.4
4 859.3 3020.9
8 1823.2 6409.6
16 1910.4 6716.2
37
128 MiByte random front-end dataset results:
Table 17: AWS, medium configuration, 128 MiByte random dataset backup results
Table 18: AWS, medium configuration, 128 MiByte random dataset restore results
1 163.7 575.4
2 268.3 943.2
4 419.1 1473.5
8 444.1 1561.2
16 463.8 1630.5
With the 1 GiByte dataset workload, ingestion throughput for 8- or 10-hour backup
windows is still within medium Blueprint targets (6 – 20 TiBytes per day front-end data
protected).
1 157.4 553.2
2 313.1 1100.7
4 644.4 2265.5
8 593.0 2084.7
16 578.8 2034.8
Table 22: AWS, small configuration, 128 MiByte VE-like dataset restore results
1 226.2 795.1
2 415.2 1459.6
4 644.1 2264.5
8 887.9 3121.6
39
Table 24: AWS, small configuration, 128 MiByte random dataset restore results
1 141.0 495.7
2 223.4 785.4
4 286.1 1005.9
8 339.5 1193.7
1 140.1 492.7
2 244.1 858.1
4 336.0 1181.3
8 391.3 1375.6
1 180.1 633.2
2 330.7 1162.6
4 555.4 1952.6
Table 30: AWS, extra-small configuration, 128 MiByte random dataset restore results
1 96.7 339.8
2 109.5 384.8
4 122.1 429.1
41
Sessions MiBytes/s GiBytes/hour
1 120.4 423.4
2 172.2 605.4
4 190.6 670.1
APPENDIX
IBM Spectrum Protect, Large Amazon EC2 System, Ubuntu Linux: m5a.16xlarge
Instance Type
#############################################
# Miscellaneous
#############################################
apt update
apt upgrade -y
touch /etc/multipath.conf
sysctl vm.swappiness=5
43
# Install the Korn shell
#############################################
#############################################
mkdir /sp
mkdir /sp/tsminst1
mkdir /sp/sp_db1
mkdir /sp/sp_db2
mkdir /sp/sp_db3
mkdir /sp/sp_db4
mkdir /sp/sp_db5
mkdir /sp/sp_db6
mkdir /sp/sp_db7
mkdir /sp/sp_db8
mkdir /sp/sp_dbb1
mkdir /sp/sp_dbb2
mkdir /sp/sp_alog
mkdir /sp/sp_archlog
mkdir /sp/sp_cc
# Note that disk name values may be different from those seen here in actual
deployments
# Instance directory
mkfs.xfs /dev/nvme8n1
pvcreate /dev/nvme4n1
pvcreate /dev/nvme6n1
pvcreate /dev/nvme7n1
pvcreate /dev/nvme10n1
pvcreate /dev/nvme12n1
pvcreate /dev/nvme14n1
pvcreate /dev/nvme18n1
pvcreate /dev/nvme19n1
mkfs.xfs /dev/mapper/sp_cc-sp_cc_vg
# DB
pvcreate /dev/nvme1n1
pvcreate /dev/nvme3n1
pvcreate /dev/nvme5n1
pvcreate /dev/nvme9n1
pvcreate /dev/nvme11n1
pvcreate /dev/nvme15n1
pvcreate /dev/nvme16n1
pvcreate /dev/nvme22n1
mkfs.ext4 /dev/mapper/sp_db-sp_db_db1
mkfs.ext4 /dev/mapper/sp_db-sp_db_db2
45
mkfs.ext4 /dev/mapper/sp_db-sp_db_db3
mkfs.ext4 /dev/mapper/sp_db-sp_db_db4
mkfs.ext4 /dev/mapper/sp_db-sp_db_db5
mkfs.ext4 /dev/mapper/sp_db-sp_db_db6
mkfs.ext4 /dev/mapper/sp_db-sp_db_db7
mkfs.ext4 /dev/mapper/sp_db-sp_db_db8
# Active Log
mkfs.ext4 /dev/nvme21n1
# DB backup
mkfs.ext4 /dev/nvme13n1
mkfs.ext4 /dev/nvme20n1
# Archive log
pvcreate /dev/nvme2n1
pvcreate /dev/nvme17n1
mkfs.ext4 /dev/mapper/sp_archlog-sp_archlog_vg
vi /etc/fstab
#############################################
#############################################
# Add a Linux group and user to own the Spectrum Protect instance.
groupadd tsmsrvrs
passwd tsminst1
# Ensure that this user can use the mount points previously created
# From here, proceed with the IBM Spectrum Protect installation and setup
IBM Spectrum Protect, Medium Amazon EC2 System, Ubuntu Linux: m5a.12xlarge
Instance Type
#############################################
# Miscellaneous
#############################################
apt update
apt upgrade -y
touch /etc/multipath.conf
47
# Set server hostname
sysctl vm.swappiness=5
#############################################
#############################################
mkdir /sp
mkdir /sp/tsminst1
mkdir /sp/sp_db1
mkdir /sp/sp_db2
mkdir /sp/sp_db3
mkdir /sp/sp_db4
mkdir /sp/sp_dbb1
mkdir /sp/sp_dbb2
mkdir /sp/sp_alog
mkdir /sp/sp_archlog
mkdir /sp/sp_cc
# Note that disk name values may be different from those seen here in actual
deployments
# Instance directory
# Cloud Cache
pvcreate /dev/nvme2n1
pvcreate /dev/nvme5n1
pvcreate /dev/nvme9n1
pvcreate /dev/nvme14n1
mkfs.xfs /dev/mapper/sp_cc-sp_cc_vg
# DB
pvcreate /dev/nvme8n1
pvcreate /dev/nvme11n1
pvcreate /dev/nvme12n1
pvcreate /dev/nvme15n1
mkfs.ext4 /dev/mapper/sp_db-sp_db_db1
mkfs.ext4 /dev/mapper/sp_db-sp_db_db2
mkfs.ext4 /dev/mapper/sp_db-sp_db_db3
mkfs.ext4 /dev/mapper/sp_db-sp_db_db4
# Active Log
mkfs.ext4 /dev/nvme3n1
49
# DB backup
mkfs.ext4 /dev/nvme4n1
mkfs.ext4 /dev/nvme13n1
# Archive log
pvcreate /dev/nvme1n1
pvcreate /dev/nvme7n1
pvcreate /dev/nvme10n1
mkfs.ext4 /dev/mapper/sp_archlog-sp_archlog_vg
vi /etc/fstab
#############################################
#############################################
# Add a Linux group and user to own the Spectrum Protect instance.
groupadd tsmsrvrs
passwd tsminst1
# Ensure that this user can use the mount points previously created
# From here, proceed with the IBM Spectrum Protect installation and setup
IBM Spectrum Protect, Small Amazon EC2 System, Ubuntu Linux: m5a.4xlarge
Instance Type
#############################################
# Miscellaneous
#############################################
apt update
apt upgrade -y
touch /etc/multipath.conf
sysctl vm.swappiness=5
#############################################
#############################################
51
systemctl start lvm2-lvmetad
mkdir /sp
mkdir /sp/tsminst1
mkdir /sp/sp_db1
mkdir /sp/sp_db2
mkdir /sp/sp_db3
mkdir /sp/sp_db4
mkdir /sp/sp_dbb1
mkdir /sp/sp_dbb2
mkdir /sp/sp_alog
mkdir /sp/sp_archlog
mkdir /sp/sp_cc
# Note that disk name values may be different from those seen here in actual
deployments
# Instance directory
mkfs.xfs /dev/nvme6n1
# Cloud Cache
pvcreate /dev/nvme1n1
pvcreate /dev/nvme10n1
mkfs.xfs /dev/mapper/sp_cc-sp_cc_vg
# DB
pvcreate /dev/nvme3n1
pvcreate /dev/nvme4n1
pvcreate /dev/nvme8n1
pvcreate /dev/nvme11n1
mkfs.ext4 /dev/mapper/sp_db-sp_db_db1
mkfs.ext4 /dev/mapper/sp_db-sp_db_db2
mkfs.ext4 /dev/mapper/sp_db-sp_db_db3
mkfs.ext4 /dev/mapper/sp_db-sp_db_db4
# Active Log
mkfs.ext4 /dev/nvme9n1
mkfs.ext4 /dev/nvme2n1
mkfs.ext4 /dev/nvme5n1
mkfs.ext4 /dev/nvme7n1
vi /etc/fstab
#############################################
#############################################
# Add a Linux group and user to own the IBM Spectrum Protect instance.
groupadd tsmsrvrs
53
passwd tsminst1
# Ensure that this user can use the mount points previously created
# From here, proceed with the IBM Spectrum Protect installation and setup
IBM Spectrum Protect, Extra-Small Amazon EC2 System, Ubuntu Linux: m5a.xlarge
Instance Type
#############################################
# Miscellaneous
#############################################
apt update
apt upgrade -y
touch /etc/multipath.conf
sysctl vm.swappiness=5
#############################################
#############################################
# Run the following as the "root" user
mkdir /sp
mkdir /sp/tsminst1
mkdir /sp/sp_db1
mkdir /sp/sp_db2
mkdir /sp/sp_db3
mkdir /sp/sp_db4
mkdir /sp/sp_dbb1
mkdir /sp/sp_alog
mkdir /sp/sp_archlog
mkdir /sp/sp_cc
# Note that disk name values may be different from those seen here in actual
deployments
# Instance directory
mkfs.xfs /dev/nvme6n1
# Cloud Cache
pvcreate /dev/nvme2n1
mkfs.xfs /dev/mapper/sp_cc-sp_cc_vg
# DB and actlog.
pvcreate /dev/nvme3n1
pvcreate /dev/nvme6n1
pvcreate /dev/nvme7n1
55
pvcreate /dev/nvme8n1
pvcreate /dev/nvme9n1
mkfs.ext4 /dev/mapper/sp_db-sp_db_db1
mkfs.ext4 /dev/mapper/sp_db-sp_db_db2
mkfs.ext4 /dev/mapper/sp_db-sp_db_db3
mkfs.ext4 /dev/mapper/sp_db-sp_db_db4
mkfs.ext4 /dev/mapper/sp_db-sp_db_alog
pvcreate /dev/nvme3n1
mkfs.ext4 /dev/mapper/sp_dbb_vg-sp_dbb_dbb
mkfs.ext4 /dev/mapper/sp_dbb_vg-sp_dbb_archlog
vi /etc/fstab
#############################################
#############################################
# Add a Linux group and user to own the IBM Spectrum Protect instance.
# Set the password for this instance.
groupadd tsmsrvrs
passwd tsminst1
# Ensure that this user can use the mount points previously created
# From here, proceed with the IBM Spectrum Protect installation and setup
Disk Benchmarking
As a part of vetting each AWS test configuration outlined in this document, disk benchmark
tests were performed to validate the capability of the disk volumes underlying the IBM
Spectrum Protect database and cloud accelerator cache. From a database point of view,
this vetting was done to ensure that the volumes were sufficiently capable from an IOPS
perspective to support the 8 KiByte random mixed write and read workload that a busy
Blueprint-level system would demand. From a cloud cache standpoint, the vetting was
performed to ensure that overlapped 128-256 KiByte write and read throughput could
achieve a rate high enough such that the server’s bottleneck for IO would be at the
instance-to-object storage network level and not the disk level. The goal was to ensure that
the disk could perform at a rate such that the IBM Spectrum Protect server could utilize it
during overlapped ingest and be able to stress the network link layer simultaneously.
Disk benchmarking was performed by using the tsmdiskperf.pl Perl script, provided as a
part of the Blueprint configuration scripts package found on the IBM Spectrum Protect
Blueprints page (References [1]). Execution of the script was performed as follows:
perl tsmdiskperf.pl workload=stgpool fslist=directory_list
perl tsmdiskperf.pl workload=db fslist=directory_list
With a stgpool workload specification, the script drives a 256 KiByte IO pattern, whereas
with a db workload specification, the script drives 8 KiByte operations. For each directory
location provided as a value to the comma-separate fslist, a pair of IO processes is
created to perform writes and reads to test files that are generated in that directory.
Typical script output for a stgpool workload run resembles the following example:
======================================================================
: Number of filesystems: 1
57
: Mode: readwrite
: File size: 2 GB
======================================================================
: The test can take upwards of ten minutes, please be patient ...
===================================================================
: RESULTS:
: dm-2
===================================================================
The value that was extracted for the purposes of comparison and validation for stgpool
workloads was Avg Combined Throughput (MB/sec). The goal was to determine the
largest aggregate average throughput for writes and reads to the accelerator cache disk
such that overlapped backup ingest and transfer to object storage will not be constrained
by disk capability.
When running the tool in db workload mode, output should appear similar to the following
example:
======================================================================
:
: Workload type: db
: Number of filesystems: 1
: Mode: readwrite
: File size: 10 GB
======================================================================
: The test can take upwards of ten minutes, please be patient ...
===================================================================
: RESULTS:
: dm-6
===================================================================
For the db workload tests, the Avg Combined Throughput (MB/sec) and Average
IOPS metrics are significant for evaluating database disk capability. Here, the small
random IOPS capability of the underlying disk that is used for the IBM Spectrum Protect
Db2 database is of interest.
59
To conduct measurements of your own, increase the number of write/read threads pairs
(and directories) by 1 for each test until the average throughput, the average IOPS, or both
stabilize (level off). Benchmark test results are provided here as a reference for those who
want to build systems resembling those laid out in this document and who want to validate
that their system is capable of supporting the described level of ingestion. For each graph,
the horizontal axis represents the quantity of write/read thread pairs (and the number of
directory locations used with fslist). For each successive bar to the right, the thread
count affecting the disk is increased by 2 (1 write thread, 1 read thread, and adding a
directory location). The vertical axis represents total average throughput in MiBytes/s.
250
Number of Write/Read Thread Pairs
200
Throughput (MiBytes/s)
150
100
50
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Figure 5: AWS large configuration; database volume average throughput; 8 KiByte random
writes/reads
35000
Number of Write/Read Thread Pairs
30000
25000
20000
IOPs
15000
10000
5000
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Figure 6: AWS large configuration; database volume average IOPS; 8 KiByte random writes/reads
700
Number of Write/Read Thread Pairs
600
Throughput (MiBytes/s)
500
400
300
200
100
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Figure 7: AWS large configuration; cloud cache volume average throughput; mixed 256 KiByte writes
and reads
61
AWS Medium Configuration
100
Number of Write/Read Thread Pairs
90
Throughput (MiBytes/s) 80
70
60
50
40
30
20
10
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Figure 8: AWS medium configuration; database volume average throughput; 8 KiByte random
writes/reads
12000
Number of Write/Read Thread Pairs
10000
8000
IOPs
6000
4000
2000
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Figure 9: AWS medium configuration; database volume average IOPS; 8 KiByte random writes/reads
500
Number of Write/Read Thread Pairs
450
400
Throughput (MiBytes/s)
350
300
250
200
150
100
50
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Figure 10: AWS medium configuration; cloud cache volume average throughput; mixed 256 KiByte
writes and reads
70
Number of Write/Read Thread Pairs
60
Throughput (MiBytes/s)
50
40
30
20
10
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Figure 11: AWS small configuration; database volume average throughput; 8 KiByte random
writes/reads
63
8000
Number of Write/Read Thread Pairs
7000
6000
5000
IOPs
4000
3000
2000
1000
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Figure 12: AWS small configuration; database volume average IOPS; 8 KiByte random writes/reads
255
Number of Write/Read Thread Pairs
250
245
Throughput (MiBytes/s)
240
235
230
225
220
215
210
205
200
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Figure 13: AWS small configuration; cloud cache volume average throughput; mixed 256 KiByte
writes/reads
2. To run a set of automated tests scaling from 1 to 100 threads, run the
tsmobjperf.pl tool by using the recently created RAM disk files as source files to
upload. If more threads are specified than files are present in the source list, the tool
completes a round-robin action over these source files. Because all activity is read-
only, using separate file handles from memory-mapped sources, multiple threads
sharing the same file is not a concern. To test with 1, 10, 20, 30, 40, 50, 60, 70, 80, 90,
and 100 threads, run the tool as follows, specifying the arguments as needed:
perl tsmobjperf.pl type=type endpoints=endpoint user="user"
pass="pass" bucket=bucket min=1 max=100 step=10 flist=
comma_delimited_source_files_list
where:
65
• endpoint specifies a comma-delimited list of IP addresses or URLs for the
object storage endpoints. For Amazon S3, this should be a single private S3
endpoint that is accessed over HTTPS (for security), preferably with a VPC
endpoint set up.
• For S3, the pass is the secret key for a user who has valid S3 credentials to
create buckets and PUT and GET objects in the region indicated by the
endpoint URL. These values align with those that are used to define an IBM
Spectrum Protect cloud-container storage pool, either via the Operations
Center or the command line.
• The bucket value should be an Amazon S3 bucket name that the credentialed
user has create/PUT/GET access to and that exists in the object storage
system. The min and max values should indicate the minimum and maximum
thread counts to test.
• The step value should indicate the increase in thread count from test to test.
Each thread count test (for 1, 10, 20, or more threads) uploads 10 x 1 GB objects per
thread. The previous example would result in a total of 5510 GB of data being stored to
the test bucket after all thread tests are completed. The tool does not remove objects
that are created. You must remove the objects manually after test completion.
Upon completion, the tool generates aggregate throughput metrics that can be used to
estimate practical instance-to-object storage performance rates for IBM Spectrum
Protect. Data is provided in comma-separated-value format (CSV) and the output of
the SPObjBench.jar tool can be inspected upon completion as well:
===================================================================
: Type: s3
: Pass: SECRETKEY
: Min Threads: 1
: Thread Step: 10
: File List:
/mnt/ramdisk/file.1,/mnt/ramdisk/file.2,/mnt/ramdisk/file.3,/mnt/ramdisk/file.4,
/mnt/ramdisk/file.5,/mnt/ramdisk/file.6,/mnt/ramdisk/file.7,/mnt/ramdisk/file.8,
/mnt/ramdisk/file.9 ,/mnt/ramdisk/file.10
===================================================================
===================================================================
: Test Results
1, XXX
10, XXX
20, XXX
30, XXX
40, XXX
50, XXX
60, XXX
70, XXX
80, XXX
90, XXX
100, XXX
===================================================================
It can be beneficial to monitor network transmission rates externally from the tool, as
well, to validate the absolute throughput rate that is experienced to object storage over
the (Ethernet) network. The tool reports an aggregate rate that can include build-up
and tear-down overhead associated with the tool. Calculating an actual transmission
rate from the instance-to-object storage while the test is running can give an indication
of the throughput limits of the environment. On Linux, for example, the dstat utility
can be used to monitor several system metrics at once, including network interface
send and receive statistics, by using the basic command:
67
% dstat
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
The dstat tool outputs a new line of metrics at a configured interval, much like the
standard iostat and netstat utilities. For the execution above, the net/total
send column is of greatest interest, here reported in MiBytes, as an indication of how
quickly data could be sent to the object storage endpoint from the server.
3. Select an appropriate and supported Amazon Machine Image (AMI), for example,
Ubuntu Server 16.04 LTS.
4. Select an instance type that is applicable to the desired IBM Spectrum Protect cloud
Blueprint size. Click Next: Configure Instance Details.
69
5. On the “Step 3: Configure Instance Details” page, customize the VPC, subnet, IAM
role, and other settings related to the instance. Click Next: Add Storage.
6. On the “Step 4: Add Storage” page, add the necessary IBM Spectrum Protect EBS
block disk appropriate to the desired cloud Blueprint size. Optionally, select the delete
on termination check box if EBS volumes should be deleted when the instance is
deleted.
Warning: Deletion of EBS volumes might not be desirable with IBM Spectrum Protect.
EBS volumes contain persistent IBM Spectrum Protect storage pool and database
data that might be required outside the lifetime of the instance. For example, it might
be necessary to terminate an EC2 instance and provision one of a different size or
model in some circumstances. Maintaining EBS disks with IBM Spectrum Protect data
separate from the instance will allow for greater instance flexibility.
7. Click Next: Add Tags. Add any instance-specific tags that you require. Then, click
Next: Configure Security Group.
8. On the “Step 6: Configure Security Group” page, assign the instance to a new or
existing Amazon EC2 security group. Security groups help to organize incoming or
outgoing protocol and port restriction rules for one or more instances in a group. Note
that outgoing TCP port 80 is required for HTTP communication to S3 object storage
and TCP port 443 is required for HTTPS. Click Review and Launch.
9. On the final “Step 7: Review Instance Launch” page, review the desired instance
settings. If the settings are correct, click Launch to direct Amazon to create the
instance and attached volumes.
AWS S3 Object Storage
1. At the top left, click Services. Then, in the Storage section, click S3.
2. Click Create bucket to create a bucket for use by IBM Spectrum Protect cloud-
container storage pools.
3. Specify a globally-unique name for the bucket and select an Amazon Region where
the bucket will be created. For optimal performance, the Amazon S3 bucket and
Amazon EC2 instance hosting IBM Spectrum Protect should be in the same Amazon
71
Region. Click Next.
4. On the “Configure options” pane of the create bucket wizard, specify any further
options that you require.
Tips:
- Versioning is not recommended with IBM Spectrum Protect because this feature is
not used by cloud-container storage pools.
- If data privacy is a concern, object-level encryption is not necessary because
deduplicated extent-level encryption can be enabled on the IBM Spectrum Protect
cloud-container storage pool with little, if any, performance penalty.
Click Next.
5. On the “Set Permissions” page, adjust public bucket access, if desired. The preferred
method is to keep the default settings. Click Next.
6. On the final “Review” page, review the desired bucket settings. If the settings are
correct, click Create bucket to direct Amazon to create the bucket within the desired
region.
When you access Amazon S3 object storage from an Amazon EC2 instance, be sure to use the
optimal S3 protocol endpoint. For a listing of available endpoints, see References [8]. If possible,
use the private endpoint that is geographically closest to the Amazon EC2 compute instance to
help optimize throughput.
73
REFERENCES
Notices
This information was developed for products and services offered in the US. This material might be available from IBM in
other languages. However, you may be required to own a copy of the product or product version in that language in order to
access it.
IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM
representative for information on the products and services currently available in your area. Any reference to an IBM
product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used.
Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be
used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program,
or service.
IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of
this document does not grant you any license to these patents. You can send license inquiries, in writing, to:
For license inquiries regarding double-byte character set (DBCS) information, contact the IBM Intellectual Property
Department in your country or send inquiries, in writing, to:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some
jurisdictions do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may
not apply to you.
This information could include technical inaccuracies or typographical errors. Changes are periodically made to the
information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements
and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice.
Any references in this information to non-IBM websites are provided for convenience only and do not in any manner serve
as an endorsement of those websites. The materials at those websites are not part of the materials for this IBM product and
use of those websites is at your own risk.
IBM may use or distribute any of the information you provide in any way it believes appropriate without incurring any
obligation to you.
Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information
between independently created programs and other programs (including this one) and (ii) the mutual use of the information
which has been exchanged, should contact:
Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.
75
The licensed program described in this document and all licensed material available for it are provided by IBM under terms
of the IBM Customer Agreement, IBM International Program License Agreement or any equivalent agreement between us.
The performance data discussed herein is presented as derived under specific operating conditions. Actual results may
vary.
Information concerning non-IBM products was obtained from the suppliers of those products, their published
announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of
performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM
products should be addressed to the suppliers of those products.
This information is for planning purposes only. The information herein is subject to change before the products described
become available.
This information contains examples of data and reports used in daily business operations. To illustrate them as completely
as possible, the examples include the names of individuals, companies, brands, and products. All of these names are
fictitious and any similarity to actual people or business enterprises is entirely coincidental.
COPYRIGHT LICENSE:
This information contains sample application programs in source language, which illustrate programming techniques on
various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to
IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application
programming interface for the operating platform for which the sample programs are written. These examples have not been
thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of
these programs. The sample programs are provided "AS IS", without warranty of any kind. IBM shall not be liable for any
damages arising out of your use of the sample programs.
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp.,
registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other
companies. A current list of IBM trademarks is available on the web at "Copyright and trademark information" at
www.ibm.com/legal/copytrade.shtml.
Intel and Itanium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and
other countries.
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.
Java™ and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.
VMware is a registered trademark of VMware, Inc. or its subsidiaries in the United States and/or other jurisdictions.