31
SAP HANA on IBM Power Systems and IBM System Storage Advanced Operations Guide IBM Deutschland Research & Development GmbH Created on December 10, 2017 – Version 0.1 Last modified on October 2 nd , 2019 – Version 1.1 © Copyright IBM Corporation, 2019

SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

SAP HANA on IBM Power Systems

and IBM System Storage

Advanced Operations Guide

IBM Deutschland Research & Development GmbH

Created on December 10, 2017 – Version 0.1 Last modified on October 2nd, 2019 – Version 1.1

© Copyright IBM Corporation, 2019

Page 2: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

2

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Edition Notice and Version Information © Copyright IBM Corporation 2018. All Rights Reserved. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. All trademarks or registered trademarks mentioned herein are the property of their respective holders. IBM Corporation Systems and Technology Group Route 100 Somers, NY 10589 Edition Notice: this is version 1.1 of this document. Focus: SAP HANA Scale-up and Scale-out solutions Target:

• SAP HANA 2

• SAP HANA 1

Doc Version Changes

0.2 (Apr/23/2018)

Initial Publication

0.3 (Jul/04/2018)

Optimize LPAR placement for best performance HWCCT output parser

0.4 (Oct/25/2018

Better describe need to knows about LPM operations.

0.5 (June/17/2019)

HANA2 SPS4 update on new technologies: https://w3.ibm.com/w3publisher/hana-on-power/blog/4e471840-86dc-11e9-be04-ab47485ee8f9 LPM and DPO OS dependencies changed

0.6 (June/08/2019)

/proc/powerpc/topology_updates parameter description.

0.7 (August/05/2019)

Refinement LPM prerequisites.

1.0 (September/20/2019)

Full LPM Support and prerequisites.

1.1 (October/2/2019)

Addon to LPM minimum Linux kernels

Note: Before using this information and the product it supports, be sure to read the general information under ”Copyrights and Trademarks” on page 30 as well as “Disclaimer and Special Notices” on page 31.

Page 3: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

3

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Preface SAP HANA on POWER is an established solution allowing customers to run HANA-based applications on a flexible IBM Power Systems infrastructure. Existing IT assets - servers, storage, as well as skills and operation procedures - can easily be (re-)used, instead of enforcing additional investment into dedicated SAP HANA only appliances. This document will over time summarize best practices gained when operating SAP HANA on a shared and flexible infrastructure.

About This Document This document is intended for operational teams dealing with SAP HANA® on POWER® deployments. It describes the best practices to operate SAP HANA. This document is replacing the former Implementation Guide. This guide does not replace existing SAP HANA documentation and sizing guides. IBM employees can access the ISICC SAP HANA on Power Systems (IBM only) community for up-to-date materials complementary to this guide. The most recent document version can be downloaded from IBM TechDocs: http://www.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/WP102502 Feel free to provide feedback and change requests for this document via email to [email protected]. Caution: This guide does not replace the daily operations handbook that we recommend customers to create for their specific production operations.

Page 4: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

4

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Table of Contents Introduction ............................................................................................................................................. 5

Using Life Partition Mobility or Dynamic Platform Optimizer for LPARs running SAP HANA ................. 5

Prerequisites ........................................................................................................................................ 5

Background .......................................................................................................................................... 5

What are topology changes ............................................................................................................. 5

Difference between offline and online topology changes .............................................................. 5

Method and procedures ...................................................................................................................... 6

Verify Infrastructure ........................................................................................................................ 6

Verify OS and HANA capabilities...................................................................................................... 6

Procedure for offline topology changes .......................................................................................... 6

Procedure for online topology changes .......................................................................................... 6

Bridging the time until next HANA restart for none optimized numa layouts .................................... 7

Sample Operation: Life Partition Mobility of an SAP HANA scale-out node ....................................... 8

Sample Operational Procedure ....................................................................................................... 9

OS Prerequisites for DPO and LPM of HANA LPARs ..............................................................................10

Optimize LPAR Placement for Performance Optimization ....................................................................11

Display NUMA Topology ....................................................................................................................11

View the NUMA topology from inside the OS ...............................................................................11

View the LPAR placement from HMC ............................................................................................11

Read HMC Resource Dump............................................................................................................12

Analyzing and fixing memory placement with the dynamic platform optimizer (DPO): ..................14

HWCCT Output Parser ...........................................................................................................................15

Network Test......................................................................................................................................15

Filesystem Test ..................................................................................................................................15

Connect Data Sources to SAP HANA on IBM Power Systems via SAP HANA Smart Data Integration ..16

HANA 2 SPS4 update for IBM Power Servers ........................................................................................16

Support ..................................................................................................................................................16

Detect currency of topology ..................................................................................................................16

Detect execution of LPM .......................................................................................................................16

Referenced documents ..........................................................................................................................17

Appendix A: tdicl.sh ...............................................................................................................................18

Appendix B: siegerehrung.pl ..................................................................................................................20

Appendix C: eval_sgrhg.py .....................................................................................................................28

Copyrights and Trademarks ...................................................................................................................30

Disclaimer and Special Notices ..............................................................................................................31

Page 5: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

5

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Introduction This Advanced Operations Guide provides a subset of guidance’s, that will help to operate and administrate specific operations.

Using Life Partition Mobility or Dynamic Platform Optimizer for

LPARs running SAP HANA SAP HANA as of HANA 2 SPS4 and below reads the topology of NUMA nodes on startup only. Depending on the HANA and OS version this chapter summarizes the best practices to run on optimal performance.

Prerequisites If one of these apply the following chapter is of interest.

• You run SAP HANA code below or equal HANA 2.0 SPS4

• OS Version is one of those listed in chapter “OS Prerequisites for DPO and LPM of HANA

LPARs”.

There is continuous work to improve the capabilities for SAP HANA workloads to even better support online capabilities with a target of near zero downtime maintenance. These prerequisites are listed as of September/2019.

Note: Performing topology changes while HANA is running has typically a temporarily performance impact, today. The impact increases with the size of the HANA DB, how the locality of memory is after the operation, and which Numa Node Numbers the DB happens to reside on.

Background

What are topology changes

Topology changes are changes of the underlying Hardware or OS infrastructure in regards to Memory and Core locality. Some of these can result in a performance degradation on an SAP HANA database. Sample topology changes are:

- Add or remove resources to/from the LPAR (COD, …)

- Change affinity between CPU’s and memory (LPM, DPO, …)

Difference between offline and online topology changes

Topology changes in an SAP HANA environment can be done offline or online. Offline topology changes require the downtime of the Operating System and/or the SAP HANA database. After implementing the topology changes the environment comprising of OS and/or SAP HANA must be restarted. Online topology changes are done while the LPAR including the Operating System and SAP HANA are up. The changes will directly affect the LPAR and sub sequentially SAP HANA after the topology change is applied.

Page 6: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

6

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Both are supported with SAP HANA on Power. While the online topology change has no downtime it has the impact of resulting in reduced performance until the next restart of OS and HANA the Offline topology change is a downtime operation that can be minimized by startup acceleration such as faster Storage subsystems such as the FS900 or FS9100 Series or the new features in HANA2 SPS4 outlined in chapter “HANA 2 SPS4 update for IBM Power Servers”.

Method and procedures There are three phases:

• Verify Infrastructure

• Verify capabilities of online operations of the OS and SAP HANA

• Start operation based on the verified options

Verify Infrastructure

A topology change is associated with data growth (e.g. adding another LPAR to a server by using LPM) or change (e.g. apply DPO). Hence, the Server has to be reviewed for available resources (CPU, Memory) and their locality. If resources are available, the OS and HANA versions have to be verified for their capabilities to decide on the best suiting option. Having performed the first phase three options can be pursued based on the result (Figure 1 Planning Topology Changes):

a) All components are capable to handle online changes or the potential intermediate performance reduction is acceptable then follow the GREEN – line

No downtime b) Only the OS is capable to perform online topology changes and a intermediate performance

degradation is not acceptable then follow the BLUE – line Reduced Downtime by startup acceleration options.

c) Neither the OS (kernel below the here documented minimum requirements) nor SAP HANA is capable of online topology changes then follow the ORANGE - line.

Downtime

Verify OS and HANA capabilities

Check if the OS and/or SAP HANA release level supports online operations (Yellow boxes in Error! Reference source not found.). Based on the verification proceed either with the offline or online topology change subchapter below.

Procedure for offline topology changes

If the LPAR / Virtual System is offline, all topology changes can be implemented directly. All topology changes will be read freshly by the Operating System and SAP HANA (see Error! Reference source not found., ORANGE-line).

Procedure for online topology changes

Based on the evaluation either follow the BLUE or ORANGE line in the flow of the graph in Error! Reference source not found.. After implementing and activation of the topology changes verify the topology environment on the Server, Operating System and SAP HANA level.

Page 7: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

7

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Figure 1 Planning Topology Changes

Bridging the time until next HANA restart for none optimized numa layouts As long HANA does not adapt to new NUMA layouts without restart the following tunable can be used to reduce the impact in case the NUMA layout is not optimal.

NOTE: Only apply this setting in case real performance degradation is experienced on the end-user side. After the next restart of HANA turn back the setting to run NUMA aware to get out most performance of your SAP HANA Installation.

If the NUMA topology is not optimal, check the following SAP HANA parameter by running the following command (enable olap numa): SELECT * FROM M_INIFILE_CONTENTS \

WHERE FILE_NAME = 'indexserver.ini' AND KEY = 'enable_olap_numa'

Page 8: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

8

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

This parameter must be set to “false” or “not set” only on LPARs that having an uneven NUMA distribution. If the parameter is set to “true”, disable the parameter by running either of the following commands: ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') \

SET ('parallel','enable_olap_numa') = 'false' WITH RECONFIGURE

or ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') \

UNSET ('parallel','enable_olap_numa') WITH RECONFIGURE

Sample Operation: Life Partition Mobility of an SAP HANA scale-out node This chapter describes the methodology how to operate and administrate online topology changes in an SAP HANA landscape based on IBM Power Systems.

Figure 1 Sample Operation Flow: Life Partition Mobility (LPM)

Page 9: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

9

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Figure 3 Check Status of SAP HANA (offline)

Figure 2 Check Status of SAP HANA (online)

The outlined steps in Error! Reference source not found. are now illustrated based on Life Partition Mobility in an SAP HANA Scale Out environment with an active Standby node. Based on this use case two things can be illustrated: LPM relocates an SAP HANA database from one server to another server without downtime of the business process. However, the affinity between cores and memory may or may not have the same characteristics on the target site. In case the same/similar characteristics are available all is fine. But if not AND the resulting performance characteristics of SAP HANA do not meet the expectations this chapter will give guidance how to plan for this and execute the LPM operations while maintaining the performance characteristics. The additional challenge of this use case is introduced by the SAP HANA Auto Host failover mechanism. As with all cluster products relying on IP heart beating for monitoring purposes on LPM there is a small window where the IP is not available. SAP HANA Auto Failover relies on IP heart beating only. Hence, any operation resulting in a short unavailability of the IP will result in a takeover to the standby node.

Sample Operational Procedure

This sample procedure only describes the operational part of the topology change. All observations about available resources and other necessary conditions are done before. The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP Hana Master LPAR 2: SAP Hana Worker Node LPAR 3: SAP Hana Standby Node During the operation, please check the SAP HANA status. For this purpose, you can use SAP HANA Studio or the "sapcontrol" command.

1. Check the status of your SAP HANA Scale-Out environment.

2. Stop SAP HANA on the Standby node (LPAR 3) : login as <sid>adm and run "HDB stop"

HANA stops the IP heart beating and no failover to the standby node will be triggered.

Check the status of your SAP HANA Scale-Out environment and verify that the Standby node

is deactivated.

LPAR3 LPAR2 LPAR1

Page 10: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

10

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

3. Migrate the LPAR(s) you want to move to the second server.

4. Start SAP HANA on the Standby node(LPAR 3): login to <sid>adm and run "HDB start" in

order to reactivate Auto-Host-Failover.

5. Check the status of your SAP HANA Scale-Out environment and verify that the Standby node

is activated.

6. Optional: Plan for a performance improvement if required by optimize the LPAR using DPO

and restart depending on the capabilities of the OS and HANA of dynamically adapt to

topology changes.

OS Prerequisites for DPO and LPM of HANA LPARs As of Aril 2018 SUSE supports life update capabilities of changed topologies. These happen after DPO, LPM and other operations locating the LPAR differently on the same or a different server.

Note: HANA 2 SPS4 and below does not handle the information about changed topologies what can cause performance degradation. With below prerequisites an LPM procedure can be executed life. In case the performance impact is too large DPO and a restart of OS and HANA is required what can be a deferred operation during the next downtime.

To address this there are updates in Linux to hide the topology changes and by that enables HANA to reliably work during DPO and LPM operations. Using the right kernel will automatically provide the right boot options. Only the minimum kernel versions are listed. Higher Kernel versions will fulfill the prerequisites too. For SLES the minimum kernels are:

SLES 11 up to SLES12 SP2 working without any prerequisites. SLES 12 SP3: minimum kernel 4.4.178-94.91.1 SLES 12 SP4: minimum kernel 4.12.14-95.16.1 SLES 15 SP0: minimum kernel 4.12.14-150.17.1 SLES 15 SP1 and above working without any prerequisites.

For RHEL the minimum kernel is: RHEL 7.6: n.a. RHEL 7.7: kernel-3.10.0-1062 and above RHEL 8.1: kernel-4.18.0-147 and above

You can verify that the setting is as expected by testing following. By default the minimum kernel apply the setting to “off”: cat /proc/powerpc/topology_updates

off

Page 11: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

11

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Optimize LPAR Placement for Performance Optimization

Display NUMA Topology

View the NUMA topology from inside the OS

The LPAR placement can change after an LPM operation or similar tasks. However, as HANA does not accept online topology changes the topology update in the OS is not updated life. The flip side of this is that OS sided commands do not reflect necessarily the right information.

Log into the LPAR and ensure the command numactl --hardware has a symmetric output. In special ensure every NUMA Node with a core holds memory as well. The following LPAR has a bad numa layout. NUMA node0 has cores but no Memory. NUMA node 6 holds all the memory but no cores what degrades the performance of SAP HANA.

Numa Node 0 PowerVM provides a more flat node numbering unlike PowerNv. For example on

PowerNV, tuleta, Node ids would 0,1, 16,17; However if the same tuleta was

configured for PowerVM, then possible node ids would be 0, 1, 2, 3.

On Power, the node distance and the associativity of cpu, memory is by way

of reading the device tree. Lpar admins/users dont have a way to request

specific resources from the hypervisor. i.e LPAR might request for 4 cores

but it doesnt have any flexibility over choosing which nodes these cores

come from.

Now when a system is partitioned into multiple Lpars, all lpars may not get

resources from node 0. Lets take an example of 8 node system, and we

requested for 4 cores, all the 4 cores may be assigned from node 3(i.e 4th

node). PowerVM also does a good job of providing memory from same nodes

from where the cpus are provided. In such a case, System creates a dummy

node node 0 which is cpuless and memory less

At this time, Linux-mm/ and arch/powerpc/mm/numa.c expects node 0 to be

online at the boot. So only node 0 tends to be dummy. No other nodes apart

from node 0 would be dummy.

View the LPAR placement from HMC

This option always delivers the current information.

lsh30021:~ # numactl --hardware

available: 2 nodes (0,6)

node 0 cpus: 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 26 27 28 29

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

61 62 63

node 0 size: 0 MB

node 0 free: 0 MB

node 6 cpus:

node 6 size: 32768 MB

node 6 free: 31649 MB

node distances:

node 0 6

0: 10 40

6: 40 10

Page 12: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

12

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Create a resource dump

1) Command line login on the HMC console via ssh

2) On the HMC you check first which resource dumps are already in the dump directory:

hscroot@<hmc>:~> lsdump -h

dump_type=resource,name=RSCDUMP.109130D.09000001.20140624065824,size=

2490992,source_size=0

dump_type=resource,name=RSCDUMP.109130D.0B000001.20141114162422,size=

16128,source_size=0

3) Issue a startdump: startdump -m <machine name> -t resource -r 'hvlpconfigdata -affinity

-domain'

Creating the dump may take a few seconds.

4) Identify taken dump: ls –ltr /dump

or

With the lsdump command you can check if the new dump is available:

hscroot@<hmc>:~> lsdump -h

dump_type=resource,name=RSCDUMP.<my dump ID>,size=12784,source_size=0

dump_type=resource,name=RSCDUMP.<dump2-ID>,source_size=0

dump_type=resource,name=RSCDUMP.<dump3-ID>,source_size=0

This dump contains binary and human readable data.

5) Identify the dump cat /dump/RSCDUMP.<my dump ID> | more

this displays a set of data. Verify if in the following table none of the LPAR IDs belonging to a

HANA LPAR is spanning the drawers.

or you download it to another machine e.g. with

scp hscroot@<hmc>:/dump/RSCDUMP.<my dump ID> .

After you downloaded/watched the file it is probably a good idea to delete it on the HMC to

prevent accumulating garbage on the HMC.

hscroot@<hmc>:~> rmdump -f RSCDUMP.<my dump ID>

Read HMC Resource Dump

The Resource dump contains beside the binary data 2 human readable tables. Below a table to illustrate the key things to look at. In special LPAR 6 (green) and LPAR 8 (red) are highlighted. Table 1: |-------|---------------|----------|---|----------|---------|-----|

|Domain | Procs Units| Memory | |Proc Units| Memory |Ratio|

|SEC|PRI|Total|Free|Free|Total|Free|LP |Tgt |Aloc |Tgt|Aloc | | |-------|---------------|----------|---|----------|---------|-----|

a| 0 | |3200 |400 | 20 |4096 | 0 | | | | | | 0 |

Page 13: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

13

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

c| | 0 | 800 |100 | 20 |1024 | 0 | | | | | | 0 |

| | | | | | | | 1 | 40 | 40 |16 | 16 | |

| | | | | | | | 2 | 40 | 40 |16 | 16 | | | | | | | | | | 6 |400 | 400 |102| 102 | |

| | | | | | | | 8 |200 | 200 |844| 844 | |

| | 1 | 800 |100 | 0 |1024 | 0 | | | | | | 0 |

| | | | | | | | 6 |500 | 500 |128| 128 | |

| | | | | | | | 8 |100 | 100 |839| 839 | |

| | | | | | | |12 |100 | 100 |31 | 31 | | | | 2 | 800 |200 | 0 |1024 | 0 | | | | | | 0 |

| | | | | | | | 6 |400 | 400 |103| 103 | |

| | | | | | | | 8 |200 | 200 |809| 809 | |

| | 3 | 800 | 0 | 0 |1024 | 0 | | | | | | 0 |

| | | | | | | | 6 |700 | 700 |179| 179 | |

| | | | | | | | 8 |100 | 100 |515| 515 | |

| | | | | | | |12 | | |294| 294 | | |-------|---------------|----------|---|----------|---------|-----|

b| 1 | |3200 |700 | 0 |4096 | 6 | | | | | | 6 |

| | 4 | 800 | 0 | 0 |1024 | 0 | | | | | | 0 |

| | | | | | | | 4 |800 | 800 |956| 956 | |

| | 5 | 800 |100 | 0 |1024 | 6 | | | | | | 46 |

| | | | | | | | 4 |400 | 400 |615| 615 | | | | | | | | | | 8 | | |218| 218 | |

| | | | | | | |12 |300 | 300 |183| 183 | |

| | 6 | 800 |300 | 0 |1024 | 0 | | | | | | 0 |

| | | | | | | | 4 |400 | 400 |615| 615 | |

| | | | | | | | 8 |100 | 100 |405| 405 | |

| | 7 | 800 |300 | 0 |1024 | 0 | | | | | | 0 | | | | | | | | | 4 |400 | 400 |614| 614 | |

| | | | | | | | 8 |100 | 100 |404| 404 | |

| | | | | | | |12 | | | 4 | 4 | |

|-------|---------------|----------|---|----------|---------|-----|

Step 1: Each Enclosure should be symmetrically equipped o The column "Domain" describes the physical topology.

o "SEC" describes the enclosures (This server has two enclosures )

o “PRI” describes the sockets (This server has 8 sockets, 4 in each enclosure)

o The rows a) and b) describe the configuration of each enclosure

o Each enclosure has 32 Cores ( Column Procs/Total - 3200 Units ) and 1 TB Memory.

The memory is listed in 256MB Blocks --> Column Memory Total 4096 Blocks == 1TB

Memory.

o Similarly, the data for each socket e.g. row c) : 8 Cores , 256GB memory ( 1024

Blocks ).

Step 2: Identify LPAR placement LPAR ID 6 - green: In Table1 the LPAR is spread across 4 sockets in enclosure 0 ( see green lines). The column LP describes the LPAR ID ( in this case 6 ). The reason that this LPAR is spread across the 4 sockets is, that it will not fit onto one socket (It uses 20 Cores, which is more than one socket contains ). Therefore the Hypervisor kept the LPAR in one enclosure and distributed across all sockets in this enclosure. This is the best solution for this case. In case the LPAR would be smaller than 8 Cores and 256GB AND there would have been a socket

Page 14: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

14

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

which could provide those resources, the Hypervisor would have placed the LPAR to one socket. LPAR ID 8 - red: The LPAR is a more difficult one. It was created as the last LPAR and has an inconvenient size ( 8 Cores and ~1TB of memory ). When the LPAR was created the Hypervisor had to take the rest of available resource on the whole machine and as a result the LPAR is scattered across 7 Cores, 2 enclosures and in one case it got memory from one socket but no cores from this socket ( socket 5 ).

The relevant lines are marked red in the Table 1.

Therefore, the LPAR has not such a good performance characteristic, since we expect to see local,

near AND far memory access. This LPAR would benefit from a better placement in case a HANA

production system is running on it with insufficient performance.

Analyzing and fixing memory placement with the dynamic platform

optimizer (DPO):

In the newer versions of the firmware, the hypervisor team provided methods to analyze and fix memory placement issues on the ssh shell of the HMC. This works transparent for the applications and can be executed while every LPAR is up and running as long as there is some memory free on the machine and if this feature is enabled. To list the servers:

To analyze the current situation, you can run the command lsmemopt:

The tool does not show the exact placement of memory and cores. Instead it does a rating, where 100 is the best and 0 is the worst. As you see it rated my LPAR <name of optimal LPAR> with a 100, which means the placement cannot be improved according to the rules of the hypervisor. The example shows that LPAR <name of improvable LPAR> has not the perfect rating. Running the command above with the option -o calcscore would tell to what degree DPO can optimize the LPAR based on the current situation.

lssyscfg -r sys -F name

hscroot@<ip-hmc>:~> lsmemopt -m <Power Server Name> -r lpar -o currscore

lpar_name=<name of LPAR>,lpar_id=1,curr_lpar_score=100

lpar_name=<name of LPAR>,lpar_id=2,curr_lpar_score=100

lpar_name=<name of LPAR>,lpar_id=3,curr_lpar_score=none

lpar_name<name of LPAR>,lpar_id=4,curr_lpar_score=100

lpar_name=<name of LPAR>,lpar_id=5,curr_lpar_score=none

lpar_name=<name of optimal LPAR>,lpar_id=6,curr_lpar_score=100

lpar_name=<name of improvable LPAR>,lpar_id=8,curr_lpar_score=74

lpar_name=<name of LPAR>,lpar_id=12,curr_lpar_score=32

lpar_name=<name of LPAR>,lpar_id=31,curr_lpar_score=none

Page 15: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

15

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

To use DPO to optimize the LPARS use the command optmem:

All other LPAR's were candidates to be changed as well, in order to achieve best placement for the mentioned LPAR's. If a LPAR should not be touched (e.g. running SAP HANA production systems), it can be specified with another option ( see man pages for optmem ). Since the command is running in the background you can check the optimization status with:

HWCCT Output Parser SAP has two versions of HWCCT. One for up to HANA 2 SPS1 (https://launchpad.support.sap.com/#/notes/1943937) and a second starting with SAP HANA 2 SPS2 (https://launchpad.support.sap.com/#/notes/2501817). The Network and Filesystem test provide a large amount of information which needs to be read and interpreted and compared to other runs. To ease these tasks the following scripts can be used for convenience.

Network Test The network test has to be run multiple times in a row. The average throughput must be above 9 Gb/s and should be above 9.3 Gb/s and the out layers within a certain range. In order to use this script copy tdicl.sh from “Appendix A: tdicl.sh”.

Filesystem Test The scripting consists of two pieces. The first one “siegerehrung.pl” selects the mandatory throughput and latency values and tests them against the KPIs documented in the SAP documentation. Please verify if these values change and adjust the script accordingly. It can seamlessly deal with data from multiple LPARs either collected simultaneously or sequentially in different runs. (Appendix B: siegerehrung.pl) The second one “eval_sghrg.py” takes the result file of “siegerehrung.pl” and calculates the difference between runs using “-d” flag or to which extend the result is above the SAP KPI using the “-k” flag. (Appendix C: eval_sgrhg.py)

optmem -m <Power Server Name> -o start -t affinity -p <name(s) of

improvable LPAR(s)>

lsmemopt -m <Power Server Name>

Page 16: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

16

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Connect Data Sources to SAP HANA on IBM Power Systems via SAP

HANA Smart Data Integration To use SAP Smart Data Integration (SDI) with you SAP HANA database please download: Connect Data Sources to SAP HANA on IBM Power Systems via SAP HANA Smart Data Integration from IBM Techdocs.

HANA 2 SPS4 update for IBM Power Servers With the latest HANA version fast startup options are enhanced and new Memory saving functionality has shipped. For an introduction please see following article on how to leverage this on IBM Power Server: https://w3.ibm.com/w3publisher/hana-on-power/blog/4e471840-86dc-11e9-be04-ab47485ee8f9 (IBM internal).

http://ibmsystemsmag.com/Power-Systems/8/2019/SAP-Native-Storage-Extension (external).

Support

Detect currency of topology Compare the HMC topology dump showed before with numactl –hardware can be used. If they do not match the performance can likely be improved by a reboot on a ideal NUMA layout.

Detect execution of LPM Find log entries in /var/log/drmgr $ cat /var/log/drmgr.0

########## Jun 03 14:37:53 2019 ##########

Validating partition migration capability...yes.

drmgr: -m -c pmig -p pre -s 0xa200c41e6ca504f8 -t 10 -n -d 1 5

Validating partition migration capability...yes.

Initiating migration via /sys/kernel/mobility/migration with

0xa200c41e6ca504f8

Kernel migration returned 0

Refreshing RMC via refrsrc

Find date of last reboot: $ who -b

system boot 2019-05-24 09:15

In case the reboot timestamp is before the LPM timestamp you know that the represented topology is depending on the OS kernel and settings do not reflect the current topology and the performance can be easily fixed following the DPO chapter of this document and a reboot.

Page 17: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

17

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Referenced documents • Assistance

o IBM TechLine support

o SAP Sizing Questionnaire for Suite and BW

o ISICC SAP HANA on Power Systems (IBM only)

o SUSE Linux Enterprise Server 11 on POWER Ordering Guide for SAP Application

Environment (BP only)

• Storage

o IBM System Storage Architecture and Configuration Guide for SAP HANA TDI

o SAPmagic - Storage Sizing Tool for SAP landscapes (IBM and BP only)

o IBM FlashCopy backup solution for SAP HANA TDI

o IBM ESS (Spectrum Scale) Architecture and Configuration Guide for SAP HANA TDI

o SAP HANA on NetApp All Flash FAS Systems with NFS

o Optimizing Quality of Service with SAP HANA on Power Rapid Cold Start

• Hardware mapping:

o ISICC SAPS Capacity Tables for Power Systems (IBM only, BPs and customers

should contact the IBM TechLine for support)

o POWER8 Facts and features

o Sales Support Information (SSI) (IBM only)

o SAP HANA on Power Planning Guide

• Deployment

o SAP HANA on IBM Power Systems and IBM System Storage (Supplemental IBM

Installation Guide to the SAP HANA Master, Implementation and Administration

Guides) o SUSE Linux Enterprise Server for SAP: https://www.suse.com/documentation/suse-

best-practices/

Page 18: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

18

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Appendix A: tdicl.sh #!/bin/bash

######################################################################

# #

# ====== ============ == == #

# == == == ==== ==== #

# == == == == == == == #

# == ============ == == == #

# == == == == == #

# == == == == == #

# ====== ============ == == #

# #

######################################################################

# Licensed Materials - Property of IBM

#

# (C) COPYRIGHT International Business Machines Corp. 2000

# All Rights Reserved

#

# US Government Users Restricted Rights - Use, duplication or

# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

#

# This script is provided as-is. No support is given. Any damage

# resulting from the use or misuse of this script are not the

# responsibility of IBM.

#

# Program : tdicl.sh

# Author : Ronald Kukuck

# Changes: 1.0 initial version 2017-03-02

# 1.1 Code beautifying

######################################################################

# #

# Program runs the SAP TDINetClient 60 times and calculates the #

# average of the throughput. You have the TDINetServer to be started #

# on the second host before you start this script. #

# It has to be executed in the "hwcct" directory. #

# #

# usage : tdicl.sh hostname [100] #

# #

######################################################################

if [ -f ./envprofile.sh ]

then

. ./envprofile.sh

else

echo "Please execute program in the \"hwcct\" directory!"

exit;

fi

MINRES=9999

MAXRES=0

MINMXV=9999

MAXMXV=0

SUM=0

SUMMXV=0

MXVL=""

if [ -n "$1" ]

then

HOSTNAME=$1

else

echo "Please give hostname as first argument "

exit;

fi

Page 19: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

19

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

PACKETS=10

if [ $# -ge 2 ]

then

if [ "$2" -ge 100 ]

then

PACKETS=100

fi

fi

if [ "$PACKETS" -ge 100 ]

then

echo "Using 100M packet size"

else

echo "Using 10M packet size"

fi

for (( CNT=0;CNT < 60; CNT++))

do

if [ "$PACKETS" -ge 100 ]

then

RESULT_ST=` ./lib/TDINetClient -m $HOSTNAME 4464 100000000 10 n| fgrep "

Throughput"|sed "s/.*://g"`

else

RESULT_ST=` ./lib/TDINetClient -m $HOSTNAME 4464 10000000 10 n| fgrep "

Throughput"|sed "s/.*://g"`

fi

if [ -z $RESULT_ST ]

then

echo "Please check that TDINetServer is started on host $HOSTNAME."

exit

fi

read MXVL RESULT <<< $RESULT_ST

# echo "MXVL=" "$MXVL" " RESULT=" "$RESULT"

TMP_RESULT=$RESULT

RESULT=$MXVL

MXVL=$TMP_RESULT

if [ $RESULT -lt $MINRES ]

then

MINRES=$RESULT

fi

if [ $RESULT -gt $MAXRES ]

then

MAXRES=$RESULT

fi

# echo "RESULT=" $RESULT " MINVAL=" $MINRES " MAXVAL=" $MAXRES

SUM=$(($SUM + $RESULT))

if [ -n "$MXVL" ]

then

if [ $MXVL -lt $MINMXV ]

then

MINMXV=$MXVL

fi

if [ $MXVL -gt $MAXMXV ]

then

MAXMXV=$MXVL

fi

echo "RESULT=" $RESULT " MINVAL=" $MINRES " MAXVAL=" $MAXRES " MXVALU="

$MXVL " MINMXV=" $MINMXV " MAXMXV=" $MAXMXV

SUMMXV=$(($SUMMXV + $MXVL))

else

echo "RESULT=" $RESULT " MINVAL=" $MINRES " MAXVAL=" $MAXRES

fi

Page 20: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

20

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

# sleep 0.5s

done

AVR=$(($SUM / 60))

if [ -n "$MXVL" ]

then

AVRMXV=$(($SUMMXV / 60))

echo "Average: " $AVR " +" $((MAXRES - $AVR)) " -" $(($AVR - MINRES)) "

MAXVAL: " $AVRMXV " +" $((MAXMXV - $AVRMXV)) " -" $(($AVRMXV - MINMXV))

else

echo "Average: " $AVR " +" $((MAXRES - $AVR)) " -" $(($AVR - MINRES))

fi

Appendix B: siegerehrung.pl #!/usr/bin/perl

##############################################################

#

# ====== ============ == ==

# == == == ==== ====

# == == == == == == ==

# == ============ == == ==

# == == == == ==

# == == == == ==

# ====== ============ == == #

##############################################################

# Licensed Materials - Property of IBM

#

# (C) COPYRIGHT International Business Machines Corp. 2000

# All Rights Reserved

#

# US Government Users Restricted Rights - Use, duplication or

# disclosure restricted by GSA ADP Schedule Contract with IBM

# Corp.

#

# This script is provided as-is. No support is given. Any

# damage resulting from the use or misuse of this script are

# not the responsibility of IBM.

#

# Program: siegerehrung.pl

# Author: Olaf Weiser, Ronald Kukuck

# Changes: 1.0 initial version 2016-03-26

# 1.1 usage and header

# 1.2 Latency Wert LOG

# 1.3 Add Ratio trigger time, code beautifying

$DD = 0;

$SEARCH = "contention";

$A = `ls`;

$PATH = ".";

#

# required values # description

$RL_1M_OW = ">250"; # required LOG overwrite 1M

$RL_1M_RR = ">250"; # required LOG read 1M

#

$RL_4K_OW = ">30"; # required LOG overwrite 4K

$RL_4K_LL = " <1000"; # required LOG latency 4k

#

$RL_16K_OW = ">120"; # req. LOG

$RL_16K_LL = "<1000";

#

$RD_16M_IW = ">200"; # req data initial write

$RD_16M_OW = ">250";

$RD_16M_RR = ">400";

#

$RD_16K_IW = ">40";

$RD_16K_OW = ">100";

#

Page 21: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

21

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

$RD_64K_IW = ">100"; # req data initial write

$RD_64K_OW = ">150";

$RD_64K_RR = ">250";

#

$RD_64M_IW = ">200"; # req data initial write

$RD_64M_OW = ">250";

$RD_64M_RR = ">400";

$RD_1M_IW = ">150"; # req data initial write

$RD_1M_OW = ">200";

$RD_1M_RR = ">300";

$RTT_LIM = "<0.1";

#

# default PATH is . , if not specified by -d

foreach $i (0 .. $#ARGV) {

if($ARGV[$i] eq "-d") { $PATH = $ARGV[$i+1]; }

if($ARGV[$i] eq "-h") { USAGE () }

}

#all files

$F = ` ls $PATH | grep $SEARCH `;

@FILE = split ( /\s+/, $F );

# goes through data and sort

foreach $FILE (@FILE) {

#filter out hostname # short the name

@H = split ( /_/ , $FILE ); $HH = $H[3];

@H = split ( /\./ , $HH ) ; $HOST = $H[0];

push (@AA , $HOST );

#filter out workload

@H = split ( /_/ , $FILE ); $WL = $H[2]; # Set the Workload

@CONTENT = `cat ${PATH}/$FILE`;

foreach $LINE (@CONTENT) {

chomp($LINE);

if ( $LINE =~ /16M blocksize/ ) { $BS = "16M"} # Set the Block

Size

elsif ( $LINE =~ /16K blocksize/ ) { $BS = "16K"}

elsif ( $LINE =~ /64K blocksize/ ) { $BS = "64K"}

elsif ( $LINE =~ /64M blocksize/ ) { $BS = "64M"}

elsif ( $LINE =~ /4K blocksize/ ) { $BS = "4K"}

elsif ( $LINE =~ /1M blocksize/ ) { $BS = "1M"}

elsif ( $LINE =~ /Initial Write Test/ ) { $WM = "Initial"; $LAT = 0} #

Set the Working Mode; Reset latency flag

elsif ( $LINE =~ /Overwrite Test/ ) { $WM = "Overwrite"; $LAT = 0}

elsif ( $LINE =~ /Read Test/ ) { $WM = "read"; $LAT = 0}

elsif ( $LINE =~ /Latency Test/ ) { $LAT = 1}

else {

if ($LAT == 0) {

if ( $LINE =~ /I\/O time:............./ ) {

@V = split ( /\s+/ , $LINE ) ;

$TP = pop (@V);

$TP = pop (@V);

if ($#V == 7) {

$TP = pop (@V);

$TP = pop (@V);

}

#end test

# sort - workload LOG

if ( $WL =~ /log/ ) { $log =

"${log}:${HOST}:${BS}:${WM}:${TP}" } # WL log

elsif ( $WL =~ /data/ ) { $data =

"${data}:${HOST}:${BS}:${WM}:${TP}" } # WL data

} # if IO time in line

elsif ( $LINE =~ /Ratio trigger time to I/ ) {

Page 22: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

22

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

$RTT = -1;

@V = split ( /\./ , $LINE ) ;

$RTT_nkm = pop (@V);

$RTT_vkm = pop (@V);

if ($RTT_nkm =~ /e/ ) {

@E = split ( /e/ , $RTT_nkm);

$EXP = pop(@E);

$VAL = pop(@E);

if ( $EXP =~ /-03/ ) {

$RTT = "0.00${RTT_vkm}${VAL}"

}

elsif ( $EXP =~ /-04/ ) {

$RTT = "0.000${RTT_vkm}${VAL}"

}

elsif ( $EXP =~ /-05/ ) {

$RTT = "0.0000${RTT_vkm}${VAL}"

}

elsif ( $EXP =~ /-06/ ) {

$RTT = "0.00000${RTT_vkm}${VAL}"

}

elsif ( $EXP =~ /-07/ ) {

$RTT = "0.000000${RTT_vkm}${VAL}"

}

else {

...

}

}

else {

$RTT = "${RTT_vkm}.${RTT_nkm}" ;

}

# sort - workload LOG

if ( $WL =~ /log/ ) { $log_rtt =

"${log_rtt}:${HOST}:${BS}:${WM}:${RTT}" } # WL log

elsif ( $WL =~ /data/ ) { $data_rtt =

"${data_rtt}:${HOST}:${BS}:${WM}:${RTT}"} # WL data

}

}

else {

# 4 K log latency .

#if (( $LINE =~ /I\/O time:............./ ) && ( $LAT == 1 ) && (( $BS

eq "4K" ) || ( $BS eq "16K" )) && ( $WMOLD eq "")) {

if ( $LINE =~ /Latency:.............../ && ( $BS eq "4K" || $BS eq

"16K" ) && $WM eq "Overwrite") {

@V = split ( /\s+/ , $LINE ) ;

$TP = pop (@V);

$TP = pop (@V);

# sort - workload LOG

if ( $WL =~ /log/ ) { $log =

"${log}:${HOST}:${BS}:latency:${TP}" } # WL log

}

}

}

} # end of foreach LINE

} # end of foreach $FILE

#print $log

# generate output

#HOST ARRAY without dupes:

foreach $VAR (@AA) {

$tt = 0;

foreach $VV (@BB) {

if ( $VV eq $VAR ) {

$tt ++;

}

}

Page 23: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

23

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

if ( $tt eq 0 ) {

push (@BB, $VAR);

}

}

@HOSTS = @BB;

$long = @HOSTS ; print "long is $long \n";

if ( $long < 2 ) {

print "single node test .. \n";

# $RL_1M_OW = 500; # required LOG overwrite 1M

# $RL_1M_RR = 500; # required LOG read 1M

# $RL_4K_OW = 300; # required LOG overwrite 4K

# $RL_4K_LL = 400; # required LOG latency 4k

# $RL_16K_OW = 500; # req. LOG

# $RL_16K_LL = 400;

# $RD_16M_IW = 350; # req data initial write

# $RD_16M_OW = 500;

# $RD_16M_RR = 800;

# $RD_16K_IW = 100;

# $RD_16K_OW = 150;

# $RD_64K_IW = 150; # req data initial write

# $RD_64K_OW = 500;

# $RD_64K_RR = 500;

# $RD_64M_IW = 350; # req data initial write

# $RD_64M_OW = 500;

# $RD_64M_RR = 800;

# $RD_1M_IW = 250; # req data initial write

# $RD_1M_OW = 500;

# $RD_1M_RR = 800;

}

$HOSTLINE = " Testcase | REQ | UNT | ";

$LINE = "-------------------+-----+-----+";

$BLINE = " ---------------+-----+-----+";

foreach $HOST (@HOSTS) {

# $ADDEN = sprintf "%12s",$HOST; $HOSTLINE = "$HOSTLINE ${ADDEN}| ";

# $LINE="$LINE--------------+"; $BLINE="$BLINE--------------+";

$ADDEN = sprintf "%12s",$HOST; $HOSTLINE = "$HOSTLINE ${ADDEN} | ";

$LINE="$LINE---------------+"; $BLINE="$BLINE---------------+";

}

$COLUMN=@HOSTS;

if ( $DD eq 2 ) {

foreach $i (0 .. $#HOSTS) {

print "$HOSTS[$i] - ";

}

}

foreach $HOST (@HOSTS) {

@A = split ( /:/, $log );

foreach $i ( 0 .. $#A ) {

if ( $A[$i] eq "$HOST" ) {

if ( $A[$i+1] =~ /1M/ ) {

if ( $A[$i+2] =~ /Overwrite/ ) {

$LOG_OVER_1M{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$LOG_READ_1M{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] eq "4K" ) {

if ( $A[$i+2] =~ /Overwrite/ ) {

$LOG_OVER_4K{"$HOST"} = $A[$i+3]

Page 24: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

24

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

}

elsif ( $A[$i+2] =~ /latency/ ) {

$LOG_LAT_4K{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] eq "16K" ) {

if ( $A[$i+2] =~ /Overwrite/ ) {

$LOG_OVER_16K{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /latency/ ) {

$LOG_LAT_16K{"$HOST"} = $A[$i+3]

}

}

}

}

@A = split ( /:/, $log_rtt );

foreach $i ( 0 .. $#A ) {

if ( $A[$i] eq "$HOST" ) {

if ( $A[$i+1] =~ /1M/ ) {

if ( $A[$i+2] =~ /Overwrite/ ) {

$LOG_OVER_1M_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$LOG_READ_1M_rtt{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] eq "4K" ) {

if ( $A[$i+2] =~ /Overwrite/ ) {

$LOG_OVER_4K_rtt{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] eq "16K" ) {

if ( $A[$i+2] =~ /Overwrite/ ) {

$LOG_OVER_16K_rtt{"$HOST"} = $A[$i+3]

}

}

}

}

@A = split ( /:/, $data );

foreach $i ( 0 .. $#A ) {

if ( $A[$i] eq "$HOST" ) {

if ( $A[$i+1] =~ /16M/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_16M{"$HOST"} = $A[$i+3] ;

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_16M{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_16M{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] =~ /16K/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_16K{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_16K{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_16K{"$HOST"} = $A[$i+3]

}

}

Page 25: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

25

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

elsif ( $A[$i+1] =~ /64K/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_64K{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_64K{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_64K{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] =~ /64M/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_64M{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_64M{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_64M{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] =~ /1M/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_1M{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_1M{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_1M{"$HOST"} = $A[$i+3]

}

}

} # end of if host

} # end of foreach $#A

@A = split ( /:/, $data_rtt );

foreach $i ( 0 .. $#A ) {

if ( $A[$i] eq "$HOST" ) {

if ( $A[$i+1] =~ /16M/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_16M_rtt{"$HOST"} = $A[$i+3] ;

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_16M_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_16M_rtt{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] =~ /16K/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_16K_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_16K_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_16K_rtt{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] =~ /64K/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_64K_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_64K_rtt{"$HOST"} = $A[$i+3]

Page 26: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

26

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_64K_rtt{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] =~ /64M/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_64M_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_64M_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_64M_rtt{"$HOST"} = $A[$i+3]

}

}

elsif ( $A[$i+1] =~ /1M/ ) {

if ( $A[$i+2] =~ /Initial/ ) {

$DAT_INIW_1M_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /Overwrite/ ) {

$DAT_OVER_1M_rtt{"$HOST"} = $A[$i+3]

}

elsif ( $A[$i+2] =~ /read/ ) {

$DAT_READ_1M_rtt{"$HOST"} = $A[$i+3]

}

}

} # end of if host

} # end of foreach $#A

} # end of foreach $HOST

print "##################################################################\n";

print "# #\n";

print "# HWCCT filesystem test - results overwiev - version 1.3 #\n";

print "# -------------------------------------------------------- #\n";

print "# #\n";

print "# #\n";

print "# ====== ============ == == #\n";

print "# == == == ==== ==== #\n";

print "# == == == == == == == #\n";

print "# == ============ == == == #\n";

print "# == == == == == #\n";

print "# == == == == == #\n";

print "# ====== ============ == == #\n";

print "# #\n";

print "# (c) 2016 #\n";

print "##################################################################\n";

print "\n\n";

print "$HOSTLINE \n";

print "$LINE \n";

print " overwrite 1M"; printf "%7s", $RL_1M_OW ; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $LOG_OVER_1M{"$_"} } print "\n";

print " ratio trig 1M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $LOG_OVER_1M_rtt{"$_"} } print "\n";

print " L read 1M"; printf "%7s", $RL_1M_RR ; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $LOG_READ_1M{"$_"} } print "\n";

print " ratio trig 1M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $LOG_READ_1M_rtt{"$_"} } print "\n";

print "$BLINE \n";

print " overwrite 4K"; printf "%7s", $RL_4K_OW ; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $LOG_OVER_4K{"$_"} } print "\n";

print " O ratio trig 4K"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $LOG_OVER_4K_rtt{"$_"} } print "\n";

print " latency 4K"; printf "%7s", $RL_4K_LL ; print " us "; foreach

(@HOSTS) { printf " %15s", $LOG_LAT_4K{"$_"} } print "\n";

print "$BLINE \n" ;

Page 27: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

27

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

print " overwrite 16K"; printf "%7s", $RL_16K_OW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $LOG_OVER_16K{"$_"} } print "\n";

print " G ratio trig 16K"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $LOG_OVER_16K_rtt{"$_"} } print "\n";

print " latency 16K"; printf "%7s", $RL_16K_LL; print " us "; foreach

(@HOSTS) { printf " %15s", $LOG_LAT_16K{"$_"} } print "\n";

print "$LINE \n";

print " init write 16M"; printf "%7s", $RD_16M_IW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_16M{"$_"} } print "\n";

print " ratio trig 16M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_16M_rtt{"$_"} } print "\n";

print " overwrite 16M"; printf "%7s", $RD_16M_OW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_16M{"$_"} } print "\n";

print " D ratio trig 16M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_16M_rtt{"$_"} } print "\n";

print " read 16M"; printf "%7s", $RD_16M_RR; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_READ_16M{"$_"} } print "\n";

print " ratio trig 16M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_READ_16M_rtt{"$_"} } print "\n";

print "$BLINE \n";

print " init write 16K"; printf "%7s", $RD_16K_IW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_16K{"$_"} } print "\n";

print " ratio trig 16K"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_16K_rtt{"$_"} } print "\n";

print " A overwrite 16K"; printf "%7s", $RD_16K_OW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_16K{"$_"} } print "\n";

print " ratio trig 16K"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_16K_rtt{"$_"} } print "\n";

print "$BLINE \n";

print " init write 64K"; printf "%7s", $RD_64K_IW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_64K{"$_"} } print "\n";

print " ratio trig 64K"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_64K_rtt{"$_"} } print "\n";

print " T overwrite 64K"; printf "%7s", $RD_64K_OW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_64K{"$_"} } print "\n";

print " ratio trig 64K"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_64K_rtt{"$_"} } print "\n";

print " read 64K"; printf "%7s", $RD_64K_RR; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_READ_64K{"$_"} } print "\n";

print " ratio trig 64K"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_READ_64K_rtt{"$_"} } print "\n";

print "$BLINE \n";

print " init write 64M"; printf "%7s", $RD_64M_IW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_64M{"$_"} } print "\n";

print " ratio trig 64M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_64M_rtt{"$_"} } print "\n";

print " A overwrite 64M"; printf "%7s", $RD_64M_OW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_64M{"$_"} } print "\n";

print " ratio trig 64M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_64M_rtt{"$_"} } print "\n";

print " read 64M"; printf "%7s", $RD_64M_RR; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_READ_64M{"$_"} } print "\n";

print " ratio trig 64M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_READ_64M_rtt{"$_"} } print "\n";

print "$BLINE \n";

print " init write 1M"; printf "%7s", $RD_1M_IW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_1M{"$_"} } print "\n";

print " ratio trig 1M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_INIW_1M_rtt{"$_"} } print "\n";

print " overwrite 1M"; printf "%7s", $RD_1M_OW; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_1M{"$_"} } print "\n";

print " ratio trig 1M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_OVER_1M_rtt{"$_"} } print "\n";

print " read 1M"; printf "%7s", $RD_1M_RR; print " MB/s"; foreach

(@HOSTS) { printf " %15s", $DAT_READ_1M{"$_"} } print "\n";

print " ratio trig 1M"; printf "%7s", $RTT_LIM ; print " s "; foreach

(@HOSTS) { printf " %15s", $DAT_READ_1M_rtt{"$_"} } print "\n";

Page 28: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

28

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

sub USAGE {

print "\n\n";

print "IBM STG LAB support (c) 2016 \n";

print " System settings verification - HWCCT workload results \n";

print "\n \n";

print " siegerehrung.pl [-h] [-d Directory] \n";

print " \n";

print " -h .... print this help \n";

print " -d .... specify directory, where the HWCCT DISK log files are

located \n";

print " if DIR is not specified, the script will use the directory,\n";

print " from where you initiate the command\n\n";

exit 0;

}

Appendix C: eval_sgrhg.py #!/usr/bin/python

##############################################################

#

# ====== ============ == ==

# == == == ==== ====

# == == == == == == ==

# == ============ == == ==

# == == == == ==

# == == == == ==

# ====== ============ == ==

#

##############################################################

# Licensed Materials - Property of IBM

#

# (C) COPYRIGHT International Business Machines Corp. 2000

# All Rights Reserved

#

# US Government Users Restricted Rights - Use, duplication or

# disclosure restricted by GSA ADP Schedule Contract with IBM

# Corp.

#

# This script is provided as-is. No support is given. Any

# damage resulting from the use or misuse of this script are

# not the responsibility of IBM.

#

# Program : eval_sgrhg.py

# Author : Ronald Kukuck

# Changes: 1.00 initial version 2018-06-28

#

#

# This script will add the factor to the KPI and the

# deviations in percent to the output of the siegerehrung

# script, if this contains measurement from more than one

# lpar. It will take the first lpar as baseline for all other

# lpars.

##############################################################

import os

import sys

prnt_kpi = False

prnt_dev = False

def print_kpi(line, kpi, value, kpi_op):

if (kpi_op==">"):

kpi_fac = value / kpi

Page 29: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

29

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

elif (kpi_op=="<"):

kpi_fac = kpi / value

if (kpi_fac<1.0):

line += "\033[1;31m" # print values that miss the KPI in red

elif (kpi_fac<2.0):

line += "\033[1;33m" # print values that are close to miss the KPI in

yellow

line += "{0:5.0f}".format(kpi_fac)

if (kpi_fac<2.0):

line += "\033[0m" # reset the color settings

return line

i = 1

j = 1

while (i < len(sys.argv)):

if ("-" == sys.argv[i][0:1]):

if ("d" in sys.argv[i]):

prnt_dev = True

if ("k" in sys.argv[i]):

prnt_kpi = True

if ("h" in sys.argv[i]):

print "\nThis script will add the factor to the KPI and the deviations

in percent to the output of "

print "the siegerehrung script, if this contains measurement from more

than one lpar."

print "It will take the first lpar as baseline for all other lpars.\n"

print " Use -k to add the KPI output and -d to add the deviations\n"

sys.exit()

j = i+1

i += 1

if (len(sys.argv) == 1 or os.path.isfile(sys.argv[j]) == False):

print "Please give a filename of a siegerehrung output as first argument\n"

else:

f = open(sys.argv[j],"r")

line = f.readline()

while line:

line = line.strip("\n")

if ("s " in line):

valstr = map(str.strip, line.split("s "))

splt_res = map(str.strip, valstr[1].split())

if (prnt_kpi):

kpi_str = map(str.strip, valstr[0].split())

i = 1

while (i < len(kpi_str)):

if (">" == kpi_str[i][0:1]):

kpi_op = ">"

kpi = kpi_str[i][1:]

elif ("<" == kpi_str[i][0:1]):

kpi_op = "<"

kpi = kpi_str[i][1:]

i += 1

line = print_kpi(line,float(kpi),float(splt_res[0]),kpi_op)

i = 1

while (i < len(splt_res)):

if (prnt_dev):

deviation = (float(splt_res[i])-float(splt_res[0]))*100 /

float(splt_res[0])

line += "{0:+9.1f}%".format(deviation)

if (prnt_kpi):

line = print_kpi(line,float(kpi),float(splt_res[i]),

kpi_op)

i += 1

print line

line = f.readline()

Page 30: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

30

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Copyrights and Trademarks © Copyright 2019 IBM Corporation. All Rights Reserved. IBM Corporation Systems and Technology Group Route 100 Somers, NY 10589 Neither this documentation nor any part of it may be copied or reproduced in any form or by any means or translated into another language, without the prior consent of the IBM Corporation. IBM makes no warranties or representations with respect to the content hereof and specifically disclaim any implied warranties of merchantability or fitness for any particular purpose. IBM assumes no responsibility for any errors that may appear in this document. The information contained in this document is subject to change without any notice. IBM reserves the right to make any such changes without obligation to notify any person of such revision or changes. IBM makes no commitment to keep the information contained herein up to date. Edition Notice: 2019 This is version 1.1 of this document. IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. A current list of IBM trademarks is available on the web at: Copyright and trademark information. Adobe and PostScript are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries. Intel, Intel Xeon, Itanium, and Pentium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc., in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States and other countries. Linux is the registered trademark of Linus Torvalds in the United States, and other countries. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. SAP HANA, SAP NetWeaver are trademarks or registered trademarks of SAP Corporation in the United States, other countries, or both. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other company, product or service names may be trademarks or service marks of others. Information is provided "AS IS" without warranty of any kind. Information concerning non-IBM products was obtained from a supplier of these products, published announcement material, or other publicly available sources and does not constitute an endorsement of such products by IBM. Sources for non-IBM list prices and performance numbers are taken from publicly available information, including vendor announcements and vendor worldwide home pages. IBM has not tested these products and cannot confirm the accuracy of performance, capability, or any other claims related to non-IBM products. Questions on the capability of non-IBM products should be addressed to the supplier of those products.

Page 31: SAP HANA on IBM Power Systems and IBM System Storage · The setup consists of two separate IBM Power Systems controlled by the same HMC and the following three LPAR’s: LPAR 1: SAP

31

IBM Systems Solution for SAP HANA on POWER and IBM System Storage © Copyright IBM Corporation, 2019

Disclaimer and Special Notices 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 Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk. Any performance data contained herein was determined in a controlled environment. Therefore, the results obtained in other operating environments may vary significantly. Some measurements may have been made on development-level systems and there is no guarantee that these measurements will be the same on generally available systems. Furthermore, some measurement may have been estimated through extrapolation. Actual results may vary. Users of this document should verify the applicable data for their specific environment. 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 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 the names and addresses used by an actual business enterprise 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 ANY INFORMATION HEREIN IS PROVIDED “AS IS” WITHOUT WARRANTY OR INDEMNIFICATION OF ANY KIND BY IBM AND DO NOT ANY EXPRESS OR IMPLIED, WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS OR USAGE FOR PARTICULAR PURPOSE AND ANY WARRANTY OR CONDITION OF NON-INFRINGEMENT.