COST ESTIMATION IN IBM POWERVS PUBLIC CLOUD
Introduction:
In cloud environment whenever we deploy any resources, at basic level it leverages virtualisation concept to create a virtual machine on the hardware platform. Though IBM POWER serves different ranges of hardware platform (POWER9 and POWER10) depending on their hardware configuration and computing capability. IBM has its own flash systems as storage solutions which provisions storage volumes across various IO throughput rate (tiers) depending on the requirement of running workload.
With each instance deployment, there is cost associated with it. The cost depends on selected hardware platform, configuration (CPU cores, Memory), Size of storage volumes and their tier type, network interfaces and attached and lastly the OS and their specific licensed versions.
How it works?
It is important to understand for customer that how they are getting charged for their PV instance deployment. Let’s take an example that when customer deploys a PVM instance on e1080 POWER platform with specific virtual cores, memory with boot volume in TIER 0 and a virtual ethernet adapter with AIX OS. Then depending on type of CPU core (shared capped, shared uncapped and dedicated) they opt for their instance, billing will be done. The unit price of each above mentioned CPU core type will be different for each hardware platform.
From billing perspective, to identify any type of billable component on deployed instance, we use term part numbers.
A part number can be considered as pricing metric for any billable component. It can be hosting machine platform, type of CPU core, memory, OS flavor and data volumes as per their tiers. Each part number come with its own individual unit cost. Time by time new part numbers are added and unit cost gets revised as well if any change/upgrade is done in hardware platform.
These are some of the part numbers for e1080:
PTEN_ECC_VIRTUAL_PROCESSOR_CORE_HRS : Implies for CAPPED processor core on e1080
PTEN_EDD_VIRTUAL_PROCESSOR_CORE_HRS : Implies for DEDICATED processor core on e1080
PTEN_ESS_VIRTUAL_PROCESSOR_CORE_HRS : Implies for SHARED processor core on e1080
Explanation: Here, capped/dedicated and shared implies that in which manner the deployed instance will be utilising the CPU core of the host e1080 platform. The unit price for all above three part numbers on e1080 will be different and may also vary across different data centres worldwide.
Along with its proprietary AIX Operating System, IBM cloud also supports Linux with SAP HANA OS. Though, AIX, IBM i and RHEL OS is not charged. Customers are still charged if they deploy Linux with SAP-HANA or SAP-NetWeaver with BYOL image profiles.
As for example, these part numbers indicate OS license part numbers
REDHAT_SAP_SCALE_OUT_LICENSE_PER_CORE_HOUR : Implies for Red Hat SAP license on Power10 s1022.
REDHAT_SAP_SCALE_UP_LICENSE_PER_CORE_HOUR : Implies for Red Hat SAP license on Power10 e1080.
For storage volumes across different tiers we have different part numbers and they have different rates as well. The billing is initially calculated per hour basis and then it gets estimated for month.
Examples of Part numbers of deployed instance:
Example 1: SLES OS instance with capped shared processor deployed on Power10 s1022 system in MAD02 DC.
Here is a sample part number of a SLES instance deployed on s1022. This instance does not have any additional data volume attached. The only boot volume is of 100GB on tier1 and has one subnet.
The instance has 0.25 capped shared processor core and 2GB memory.
Instance detail:

For the above deployed PVM instance, we can see it’s individual billable part numbers by running below command:
ibmcloud billing resource-instances-usage -g Default –json
This command gives detailed output having part number details of all the deployed instances and volumes across entire DC. Here we will look for PVM instance id “a0937a11-db15-4e9d-a391-ae6e86a97013” which is tagged to our deployed instance “AVSLESs1022”. It is to note here that for any created PVM instance and boot/data volumes, system generates these unique identifiers such as pvmInstanceID and volumeIDs respectively.
Command and it’s truncated output:
root@amrit ~ % ibmcloud billing resource-instances-usage -g Default --json > resource-instances-usage.json
{
"resource_instance_name": "MAD02",
"resource_name": "Workspace for Power Virtual Server",
"region": "mad02",
"resource_group_name": "Default",
"consumer_id": "pvm-instance:a0937a11-db15-4e9d-a391-ae6e86a97013",
"pricing_country": "USA",
"currency_code": "USD",
"billable": true,
"usage": [
{
"metric": "PTEN_MS_GIGABYTE_HOURS",
"unit": "PTEN_MS_GIGABYTE_HOURS",
"quantity": 1404,
"cost": 9.54018,
"rateable_quantity": 1404,
"non_chargeable": false
},
{
"metric": "PTEN_SOC_VIRTUAL_PROC_CORE_HRS",
"unit": "PTEN_SOC_VIRTUAL_PROC_CORE_HRS",
"quantity": 175.5,
"cost": 18.938205,
"rateable_quantity": 175.5,
"non_chargeable": false
},
{
"metric": "SUSE_OS_GP_TIER_ONE_INSTANCE_HOURS",
"unit": "SUSE GP Tier1 Instance Hours",
"quantity": 702,
"cost": 31.59,
"rateable_quantity": 702,
"non_chargeable": false
}
],
"month": "2024-07",
"tags": []
},
Illustration:
In above command output, the PVM instance id can be seen by referring "consumer_id" field. It also provides additional information such as in which datacenter the instance is deployed. In our case, the instance “AVSLESs1022” is in "mad02” DC. The pricing country is USA, and the currency is USD.
The interesting part comes at bottom where under the usage dictionary all the associated part numbers, their individual unit cost and quantity are displayed.
For our instance “AVSLESs1022”, the part numbers associated with it are listed below. They are indicated by “metric” keyword here.
Same part numbers can be seen in billing page also for this deployed instance. We can also see it’s total usage quantity and total cost till date at right side. As long as instance is deployed in DC, the quantity increases per hour basis and cost also increases accordingly.

PTEN_MS_GIGABYTE_HOURS implies Standard memory on POWER10
PTEN_SOC_VIRTUAL_PROC_CORE_HRS implies POWER10 scale out capped processor (esp. s1022)
SUSE_OS_GP_TIER_ONE_INSTANCE_HOURS implies OS license for General Purpose SUSE machine without SAP
Example 2: RHEL OS instance with uncapped shared processor deployed on POWER10 s1022 system in MAD02 DC.

Below are the part numbers associated with the instance and their total quantity and the usage cost till date.

PTEN_MS_GIGABYTE_HOURS implies for standard memory on POWER10 s1022.
REDHAT_GP_ON_SCALE_OUT_APP_INSTANCE_HOURS implies for OS license for General Purpose RHEL OS on POWER10 s1022.
PTEN_SOS_VIRTUAL_PROC_CORE_HRS implies shared processor core on POWER10 s1022.
Example 3: AIX instance with uncapped shared processor deployed on POWER10 s1022 system in MAD02 DC.
Below are the part numbers associated with the instance and their total quantity and the usage cost till date.

AIX_SMALL_APPLICATION_INSTANCE_HOURS implies OS license for AIX installed on lower end POWER9 or POWER10.
PTEN_MS_GIGABYTE_HOURS implies standard memory on POWER10 s1022.
PTEN_SOS_VIRTUAL_PROC_CORE_HOURS implies shared processor core on POWER10 s1022.
Example 4: SLES instance with uncapped shared processor deployed on POWER9 e980 system in DAL12 DC.

Below are the part numbers associated with the instance and their total quantity and the usage cost till date.

MS_GIGABYTE_HOURS implies Standard RAM memory.
ESS_VIRTUAL_PROCESSOR_CORE_HOURS implies Uncapped shared processor core on Enterprise POWER9 e980.
SUSE_OS_GP_TIER_ONE_INSTANCE_HOURS implies OS license for General Purpose SUSE machine without SAP.
Example 5: RHEL instance with uncapped shared processor deployed on POWER9 s922 system in CHENNAI DC.

Below are the part numbers associated with the instance and their total quantity and the usage cost till date.

MS_GIGABYTE_HOURS implies Standard RAM memory.
SOS_VIRTUAL_PROCESSOR_CORE_HOURS implies Scale out shared virtual processor core.
REDHAT_GP_ON_SCALE_OUT_APP_INSTANCE_HOURS implies for OS license for RHEL OS on POWER10 s1022.
We can notice that the part numbers corresponding to Operating System changes depending on the deployed instance.
Demo on cost estimation while deploying instance:
In this blog we will deploy one instance for demo and then will try to get the estimated monthly cost as seen from IBM Cloud GUI. Then will get the same detail from IBM Cloud CLI.

Here, we are deploying one Linux RHEL 9 instance on POWER10 s1022 platform with boot volume in Tier3 and two data volumes of 100GB each in Tier1. The deployed instance has 0.5 CPU cores and 4GB memory. The license of this OS is provided by IBM only.
root@amrit ~ % ibmcloud pi ins get AMRIT-RHEL9-DEMO
Getting instance AMRIT-RHEL9-DEMO under account <Account_Name> as user <user_name>...
ID 3d299e16-3b00-47da-a1fd-0f94def96c04
Name AMRIT-RHEL9-DEMO
CPU Cores 0.5
Memory 4
Processor Type shared
System Type s1022
Boot Disk Size 100
Volumes 0063cc47-ccf4-4312-af77-0edbb9de2722, bf294e54-9626-438e-a1a3-08469b30e790, 038a7c3b-59a8-4b99-9c0e-d5257bae4e9c
Storage Tier tier3
Created 2024-07-26T04:55:28.000Z
Status ACTIVE
Health Status OK
root@amrit ~ %
Below is the boot volume and attached data volume details:
Boot-volume details:
root@amrit ~ % ibmcloud pi vol get 0063cc47-ccf4-4312-af77-0edbb9de2722
Getting Volume 0063cc47-ccf4-4312-af77-0edbb9de2722 under account < Account_Name > as user <user_name>...
ID 0063cc47-ccf4-4312-af77-0edbb9de2722
Name AMRIT-RHEL9-D-3d299e16-0000851f-boot-0
Profile tier3
Size 100
Bootable true
Storage Pool General-Flash-53
IO Throttle Rate 300 iops
PVMInstanceIDs 3d299e16-3b00-47da-a1fd-0f94def96c04
WWN 60050768138102603800000000002855
root@amrit ~ %
Below is the part number associated with above boot volume. The boot volume is of 100GB in TIER3.
ibmcloud billing resource-instances-usage -g Default --json > resource-instances-usage_qty.json
The command output has been truncated.
[
{
"resource_instance_name": "MAD02",
"resource_name": "Workspace for Power Virtual Server",
"plan_name": "Power Systems Virtual Server Group",
"region": "mad02",
"space_name": "",
"consumer_id": "volume:0063cc47-ccf4-4312-af77-0edbb9de2722",
"pricing_json": "",
"pricing_country": "USA",
"currency_code": "USD",
"billable": true,
"usage": [
{
"metric": "TIER_THREE_STORAGE_GIGABYTE_HOURS",
"unit": "TIER_THREE_STORAGE_GIGABYTE_HOURS",
"quantity": 1000,
"cost": 0.0708669,
"rateable_quantity": 1000,
"non_chargeable": false
}
],
"month": "2024-07",
"tags": []
},
root@amrit ~ %
Attached data volume details:
root@amrit ~ % ibmcloud pi vol get bf294e54-9626-438e-a1a3-08469b30e790
Getting Volume bf294e54-9626-438e-a1a3-08469b30e790 under account < Account_Name > as user <user_name>...
ID bf294e54-9626-438e-a1a3-08469b30e790
Name AMRIT-DEMO-VOL-74043-1
Profile tier1
Size 100
Bootable false
Storage Pool General-Flash-53
IO Throttle Rate 1000 iops
PVMInstanceIDs 3d299e16-3b00-47da-a1fd-0f94def96c04
WWN 60050768138102603800000000002853
root@amrit ~ %
Below is the part number associated with above data volume of 100GB in Tier 1.
ibmcloud billing resource-instances-usage -g Default --json > resource-instances-usage_qty.json
The command output has been truncated.
{
"resource_instance_name": "MAD02",
"resource_name": "Workspace for Power Virtual Server",
"plan_name": "Power Systems Virtual Server Group",
"region": "mad02",
"resource_group_name": "Default",
"consumer_id": "volume:bf294e54-9626-438e-a1a3-08469b30e790"
"pricing_country": "USA",
"currency_code": "USD",
"billable": true,
"usage": [
{
"metric": "TIER_ONE_STORAGE_GIGABYTE_HOURS",
"unit": "TIER_ONE_STORAGE_GIGABYTE_HOURS",
"quantity": 1000,
"cost": 0.13545,
"rateable_quantity": 1000,
"non_chargeable": false
}
Similarly for another data volume of 100GB in Tier 1, It will have same part number but different volume ID/consumer ID.
ibmcloud billing resource-instances-usage -g Default --json > resource-instances-usage_qty.json
The command output has been truncated.
{
"resource_instance_name": "MAD02",
"resource_name": "Workspace for Power Virtual Server",
"plan_name": "Power Systems Virtual Server Group",
"region": "mad02",
"consumer_id": "volume:038a7c3b-59a8-4b99-9c0e-d5257bae4e9c",
"pricing_country": "USA",
"currency_code": "USD",
"billable": true,
"usage": [
{
"metric": "TIER_ONE_STORAGE_GIGABYTE_HOURS",
"unit": "TIER_ONE_STORAGE_GIGABYTE_HOURS",
"quantity": 1000,
"cost": 0.13545,
"rateable_quantity": 1000,
"non_chargeable": false
}
We can notice the difference in cost for boot volume of TIER3 and data volume in TIER1.
TIER_ONE_STORAGE_GIGABYTE_HOURS implies SSD Storage Gigabyte-Hours
TIER_THREE_STORAGE_GIGABYTE_HOURS implies HDD Storage Gigabyte-Hours
Estimation change while editing the virtual instance configuration:
Below is the actual monthly cost estimate of deployed PVM instance with RHEL9 OS.

While editing virtual instance, changed CPU cores from 0.5 to 2 and memory from 4GB to 12GB. The total estimated cost also increases accordingly per monthly basis. From $124.33/month it increases to $453.21/month. This estimation as seen in IBM Cloud GUI page does not include the calculation for attached data volumes.

Demo on cost estimation while creating volumes:
Storage volumes in IBM cloud come in four tiers based on throughput rates. Customers choose volumes based on workload needs, and each tier has a different unit cost. All these different tiers volume have their specific part numbers.
STORAGE TIER
|
IOPS
|
PART NUMBER
|
Tier 0
|
25
|
TIER_ZERO_STORAGE_GIGABYTE_HOURS
|
Tier1
|
10
|
TIER_ONE_STORAGE_GIGABYTE_HOURS (SSD)
|
Tier 3
|
3
|
TIER_THREE_STORAGE_GIGABYTE_HOURS (HDD)
|
Tier 5K (Fixed IOPS)
|
5000
|
FIXED_5K_OPS_GIGABYTE_HOURS
|
Summary:
This table illustrates the estimated monthly cost of volume in each tiers as per their size. This is with reference to MAD02 DC.
Estimated price in $/month
|
Number of volumes
|
Sizes/Tiers
|
Tier 0
|
Tier 1
|
Tier 3
|
Tier 5K
|
1
|
1 GB
|
0.26
|
0.22
|
0.11
|
0.32
|
2
|
1 GB
|
0.53
|
0.44
|
0.23
|
0.63
|
1
|
100 GB
|
26.4
|
21.97
|
11.5
|
31.68
|
2
|
100 GB
|
52.8
|
43.95
|
23.01
|
63.36
|
From above table we can interpret how the estimated cost of volume is changing as per their size and the numbers when they are created. The estimated calculations are in line with the capacity for each tiers.
Guide to see all part numbers in a DC from IBM Cloud billing UI
When we deploy instances, IBM Cloud GUI billing usage page provides a single panel look for all the part numbers for any DC with data history up to last one year.
The access to below URL depends on the IAM access permissions.
Sample url : https://cloud.ibm.com/billing/usage/<power virtual server workspace>/plan/<pricing_region_with_data-center>/<month=yyyy-mm>
In following page we can see the pricing region for all DC’s and their total monthly cost. Let’s take example of Madrid 02 DC for July 2024 and get the details.

Below page shows all the billable part numbers of the deployed instances and their total quantity in the MAD02 DC. It also shows the total cost as per customer’s usage for July 2024.

Below is the cumulative cost for all part numbers associated with deployed instances in MAD02 DC.

References:
Power Virtual Server overview : https://www.ibm.com/products/power-virtual-server
Power Virtual Server API Doc : https://cloud.ibm.com/apidocs/power-cloud