Chargeback for z/VM and Linux
When one department runs on one server or one application runs on one server, chargeback is not difficult. Charge the department for the server plus overhead. However, most companies have 100+ servers running on one z/VM system that are running multiple applications. How does a company then charge for those resources?
This is not a new problem. Charging for the resources consumed by a server meets the requirements of most installations. These resources are usually CPU, storage and I/O (disk).
Requirements
There are many requirements that must be met for a chargeback system, all of which are satisfied by zVPS:
-
Technical:
- Both z/VM and Linux data are required. From the virtual machine perspective, there are resources used that Linux can not measure - such as real storage requirements or I/O used.
- Accurate data is required. This is not as trivial as it may sound. All Linux process data coming from the Linux system in a virtual environment is very inaccurate. In 2001, Velocity Software documented this issue (*see note below).
- Complete data is required. For data to be used for chargeback, there must be complete data. Velocity software has been providing a 100% capture ratio for z/VM since 1990 to acquire the complete data necessary for acurate reports. Getting Linux process data is a bit more difficult. The zVPS product provides this data with a very high capture ratio. As the Linux data does not have the fully architected instrumentation provided by z/VM, the capture ratio provided by zVPS is usually in the high 90's, typically 99%.
- Low cost for data acquisition is required. Instrumentation was added to Linux by other vendors that will not work in the zLinux world. If the data collection for each server requires 5-10% of a real CPU, it becomes the most chargeable application. The zVPS product agent typically requires about .1% of one CPU to collect all the accounting data necessary for accurate reporting.
- History of data is required. History can provide internal customers with the 'proof' that their particular process caused a spike last month - when/where/how.
- Operational processes are required. Operations, in whatever form, needs to have the ability to quickly determine a performance issue that can lead to overcharging a customer for something they did not mean to do (or may not have even known happened).
Reporting details
There are multiple methods of performing chargeback. For each one, the data needs to be easily accessible. All data is in a performance database that can be extracted into files (CSV format or others). zVPS provides reports for the following:
- Virtual Machine chargeback - The ESAACCT report shows charging for CPU, I/O and storage in a service unit format.
Example: ESAACCT Report - Server chargeback - For server chargeback, it is recommended to utilize the zVPS database extract functions.
Example: Simple Linux Accounting Report - Websphere application chargeback - The ESALNXA report provides CPU consumption numbers at the Linux
Linux Websphere application level.
Example: Linux Application Accounting Report - Application chargeback - For application chargeback, it is recommended to utilize the zVPS database extract
functions.
Example: Linux Process Accounting Report - Linux Userid chargeback - The ESALNXU report shows charging for CPU consumption at the Linux user/group level.
use the ESALNXU report.
Example: ESALNXU Report
Sample Data
Any of the data used in any of the zVPS reports can easily be extracted directly from the performance database in a format that may be more suitable to your particular requirements.
On the ZMAP service machine there is a MAPGOOD EXEC. This is a routine that has been provided to demonstrate a data extraction and export via FTP. This routine will provide daily and/or monthly data. The sample extract used and provided is ACCTUSR ESAEXTR. This file can be modified. The sample collects both virtual machine data and Linux application data, creates a file then sends it via FTP to your data server.
Sample Virtual Machine Report - ESAACCT
The ESAACCT report provided by zVPS shows the resources consumed by each Linux server and the charges applied to that
server. Each resource consumed is converted to a service unit, accumulated, then a charge per service unit is applied.
Each server then has a charge for a period of time.
All service unit factors and charges are tailorable by the installation to meet its accounting requirements.
Report: ESAACCT User Accounting Report Veloc Monitor initialized: on 2084 serial 3667F First ------------------------------------------------------------------------ Service Unit Virtual CPU Factor: 17777 Service Unit Overhead CPU Factor: 17777 Service Unit I/O Factor: 0.800 Service Unit Storage Factor: 0.500 Charge per Service Units: 0.00010 ------------------------------------------------------------------------ UserID <--Users--> <Service Units> Charges <---Resources Used----> /Class Logged Actv /Sec Total Total CPU DASD I/O Pages -------- ------ ---- ------ ------ ------- ------ -------- ----- 00:15:57 47 35.3 13574 12217K 1221.69 622.15 405496 1665K System: . . 268.74 241867 24.19 13.61 ***Key User Analysis *** LINUX1 1 1.0 44.04 39638 3.96 1.79 88 15523 LINUX13 1 1.0 74.71 67236 6.72 3.31 396 15993 LINUX14 1 1.0 466.10 419492 41.95 21.04 446 90292 LINUX15 1 1.0 696.94 627249 62.72 30.94 2162 151K LINUX16 1 1.0 1220.3 1098K 109.83 56.98 2588 167K LINUX17 1 1.0 106.75 96078 9.61 4.96 331 15242 LINUX18 1 1.0 247.34 222602 22.26 10.65 459 65851 LINUX20 1 1.0 465.36 418826 41.88 22.59 1079 32666 LINUX22 1 1.0 2455.5 2210K 221.00 121.61 14908 72492 LINUX24 1 1.0 44.60 40143 4.01 1.74 182 18025 LINUX25 1 1.0 94.10 84689 8.47 3.94 742 28008 LINUX27 1 1.0 54.45 49001 4.90 2.30 263 15920 LINUX29 1 1.0 259.51 233562 23.36 10.34 5811 90185 LINUX30 1 1.0 165.24 148720 14.87 6.86 310 53141 LINUX31 1 1.0 886.54 797882 79.79 42.29 13347 70722 LINUX32 1 1.0 254.24 228817 22.88 10.10 4421 91315 LINUX33 1 1.0 279.96 251969 25.20 11.44 6923 86157 LINUX34 1 1.0 31.11 27995 2.80 1.06 55 18298 LINUX35 1 1.0 495.47 445928 44.59 21.78 1312 116K LINUX37 1 1.0 269.65 242689 24.27 11.31 5515 74437 LINUX38 1 1.0 207.58 186820 18.68 9.44 3062 32946 LINUX39 1 1.0 353.44 318096 31.81 15.55 4766 75796 LINUX40 1 1.0 224.58 202122 20.21 9.76 3183 52256 LINUX41 1 1.0 203.57 183210 18.32 9.31 3089 30337Back to Reporting Details
Sample Linux Userid Report - ESALNXU
The ESALNXU report provided by zVPS shows the resources consumed by each Linux server with more information that includes processor utilization and parent/child process utilization. It will show servers grouped in nodes or individual servers.
Report: ESALNXU LINUX Process by User Analysis Report Velocity Software Corporat Monitor initialized: on 8562 serial 040F78 First record analyzed: 01/ ---------------------------------------------------------------------------------------------- Node/ <---Processor Percent---> <---CPU Seconds---> Date <---------User and Group Identity------>Time Userid GroupID usrpid grppid Total sys user syst usrt sys user syst usrt -------- ------------ ------------ ------ ------ ----- ---- ---- ---- ---- ---- ---- ---- ---- 00:15:00 ***Node Groups*** REDHAT pcp pcp 0 0 0.0 0.0 0.0 0 0 0.0 0.2 0 0 root root 0 0 5.6 2.3 2.1 0.2 1.0 20.9 18.9 2.0 9.0 SUSE db2inst1 db2iadm1 0 0 0.7 0.0 0.7 0 0 0.0 6.1 0 0 gdm gdm 0 0 6.1 0.0 6.1 0 0 0.0 54.7 0 0 root root 0 0 0.9 0.3 0.4 0.1 0.1 2.7 3.2 0.5 1.3 ORACLE oracle oinstall 0 0 0.6 0.0 0.6 0.0 0.0 0.0 5.3 0.0 0.0 root root 0 0 0.3 0.0 0.0 0.0 0.2 0.2 0.2 0.3 1.7 OpenShft nobody nobody 0 0 7.8 1.1 6.7 0 0 9.6 60.3 0 0 root root 0 0 40.8 6.3 29.5 1.8 3.3 56.7 265 15.8 29.5 unknown root 0 0 15.7 2.4 13.1 0.0 0.0 22.0 118 0.2 0.4 unknown unknown 0 0 1.4 0.4 1.0 0 0 3.7 9.0 0 0 UBUNTU root root 0 0 0.2 0.1 0.1 0 0 0.9 1.2 0 0 GPFS root root 0 0 5.8 0.2 0.2 1.9 3.5 1.4 2.0 17.3 31.5 TheUsrs db2inst1 db2iadm1 0 0 0.0 0 0.0 0 0 0 0.1 0 0 nobody nobody 0 0 0.5 0.1 0.2 0.1 0.1 0.8 2.1 1.1 0.7 oracle oinstall 0 0 0.3 0.1 0.2 0.0 0 0.8 1.7 0.0 0 qemu qemu 0 0 0.1 0.0 0.1 0 0 0.0 0.8 0 0 root root 0 0 94.4 0.7 11.6 0.4 81.6 6.5 105 4.0 735 *** Nodes ******* 1002 2811 0.7 0.0 0.7 0 0 0.0 6.6 0 0 lxdb2001 db2inst1 db2iadm1 1002 2811 0.7 0.0 0.7 0 0 0.0 6.1 0 0 root root 0 0 0.2 0.0 0.0 0.0 0.1 0.2 0.2 0.4 1.1 lxdb2002 db2inst1 db2iadm1 1002 110 0.0 0 0.0 0 0 0 0.1 0 0
Back to Reporting Details