******************************************************************************
* Description: Knowledge of CPU time, elapse time, and associated subdivision
* Compatiablity: RDBMS 11g, 12c
* Date: 09:39 PM EST, 04/16/2017
******************************************************************************


<1> CPU Time:
     |
     |__ CPU Time(or process time) is the amount of time for which a central processing unit (CPU) was used for processing instructions of a computer program or operating system, 
     |   as opposed to, for example, waiting for input/output (I/O) operations or entering low-power (idle) mode. The CPU time is measured in clock ticks or seconds. 
     |   Often, it is useful to measure CPU time as a percentage of the CPU's capacity, which is called the CPU usage.
     |
     |
     |__ CPU time and CPU usage have two main uses:
         |
         |__ 1) The first use is to quantify the overall busyness of the system. 
         |      When the CPU usage is above 70%, the user may experience lag. Such high CPU usage indicates insufficient processing power. 
         |      Either the CPU needs to be upgraded, or the user experience reduced, for example, by switching to lower resolution graphics or reducing animations.
         |
         |__ 2) The second use, with the advent of multi-tasking, is to quantify how the processor is shared between computer programs. 
                High CPU usage by a single program may indicate that it is highly demanding of processing power or that it may malfunction; 
                for example, it has entered an infinite loop. CPU time allows to measure how much processing power a single program requires, eliminating interference, 
                such as time executed waiting for input or being suspended to allow other programs to run. 
                In contrast, elapsed real time (or simply real time, or wall clock time) is the time taken from the start of a computer program until the end as measured 
                by an ordinary clock. Elapsed real time includes I/O time and all other types of waits incurred by the program.
	
	
2) User time ........... is the amount of time the CPU was busy executing code in user space.

3) System time ......... is the amount of time the CPU was busy executing code in kernel space. 
                         If this value is reported for a thread or process, then it represents the amount of time the kernel was doing work on behalf of the executing context, 
                         for example, after a thread issued a system call.
						 
4) Idle time ........... (for the whole system only) is the amount of time the CPU was not busy, or, otherwise, the amount of time it executed the System Idle process. 
                         Idle time actually measures unused CPU capacity.

5) Steal time .......... (for the whole system only), on virtualized hardware, is the amount of time the operating system wanted to execute, 
                         but was not allowed to by the hypervisor.[1] 
                         This can happen if the physical hardware runs multiple guest operating system and the hypervisor chose to allocate a CPU time slot to another one.