Abstract:
A business method associates provisioning costs with a usage history indicative of user computing demand, and coalesces the cost data to identify an appropriate provisioning level balancing the provisioning cost and the usage demand cost. Conventional computing environments suffer from the shortcoming of being prone to overprovisioning or underprovisioning a user. Such misprovisioning is inefficient because it denotes underutilized computing resources or ineffective and/or disgruntled users. Costs increase either due to the excessive hardware bestowed on the overprovisioned user, or in support costs addressing the underprovisioned user. Configurations herein substantially overcome such shortcomings by defining a policy indicative of overprovisioning and underprovisioning indicators (misprovisioning flags), and defining rules to specify a triggering event indicating the need to reassess the provisioning of a user.

Description:
CLAIM TO BENEFIT OF EARLIER FILED PATENT APPLICATIONS 
     This invention claims the benefit under 35 U.S.C. 119(e) of the filing date and disclosure contained in Provisional Patent Application No. 60/853,052, filed Oct. 20, 2006, entitled “Method and Apparatus for Network-Based, Multiple User, Virtual Personal Computers,” incorporated herein by reference. 
    
    
     BACKGROUND 
     There is a nearly universal mandate in corporations, governments and academic institutions to better control the escalating costs and complexity of managing desktops in large numbers and across widely disparate geographies. In addition, most companies continue to deploy traditional physical desktop computers running at less than 10% capacity, resulting in enormous waste of time, money and energy. Modern enterprises expend substantial capital to maintain an IT infrastructure. In the computer realm, there is a continuing shift from initial deployment costs to ongoing maintenance costs. Traditionally, a computing infrastructure was marked with substantial up-front costs due to the high cost of computing hardware and memory resources. However, with the ongoing trend of reduced costs for computing hardware, and the converse trend of increased compensation for skilled personnel to support and maintain computer systems, a typical enterprise spends more to maintain a user then the cost to initially outfit the user. Consistent with a trend known in the industry as “Moore&#39;s law,” computing power per dollar continues to double roughly every 18 months, while support costs, such as help desk staffing, software upgrades, and hardware enhancements, continue to burden the cost of provisioning a user. 
     This shift in cost from acquisition to maintenance has provided a motivation for “overprovisioning” a user. The classic overprovisioned user is the high ranking, non-technical executive who requisitions a PC that is more powerful than any subordinates, yet is employed only for reading an occasional email. Nonetheless, the above stated trend brings the reality that it may be less expensive to initially overprovision a user than to later remedy an underprovisioned user. However, it is impractical if not impossible with physical desktops to optimally provision a user such that the user is neither overprovisioned or underprovisioned, and continue to bear the burden in the form of responding to and upgrading an underprovisioned user or absorbing the inefficiency of an overprovisioned user. For a substantial sized enterprise with many users, such as corporations, universities, and other enterprises, the aggregate capital and energy costs can be substantial 
     SUMMARY 
     Information technology (IT) infrastructure costs are substantial and continue to rise for most modern enterprises. Further, the modern trend of increasingly inexpensive hardware and increased support services cost has shifted the cost burden from initial deployment to ongoing maintenance and operations. The overall result suggests that while the cost of acquiring a personal computer has fallen for decades, the total/run-rate cost of ownership continues to rise. Additive to this phenomenon is an ever-increasing security risk to the client-based software for acquiring, maintaining and deploying current applications. 
     In a virtual computing environment as disclosed and claimed herein, a virtual computing services deployment assigns a user to a provisioning virtual desktop class (class) based on the expected resources that user will consume. Rather than deploy a user with a conventional PC, the user rendering device is a so-called “thin client” device as a graphical user interface (i.e. GUI) a cost efficient hardware assemblage of a keyboard/pointing device, visual output display, and sufficient CPU and memory to transact with the virtualized desktop computing instance at a remote computing services deployment. The “thin client” device does not require any mass storage and requires only a modest CPU and memory resulting in reduced cost and significantly lower power consumption. 
     A “best fit” provisioning metric associates provisioning costs with a usage history indicative of user computing demand, and coalesces the cost data to identify an appropriate provisioning-level balancing the provisioning cost and the usage demand cost. 
     The assigned computing classes include a shared OS environment (often referred to as terminal server, Microsoft® TS or Citrix® CPS) environment, for multiple users of moderate usage, a hypervisor environment providing the individual user with their own OS, memory, CPU and storage with better isolation from other users, and grid services, for high demand users and those who “spike” substantial demands and/or require resources well above the typical demand—providing computing resources on demand—minimizing capital costs and maximizing capital utilization. 
     Further detail on class provisioning is available in copending U.S. patent application Ser. No. 11/875,297, filed on Oct. 19, 2007, entitled “PROVISIONED VIRTUAL COMPUTING”, incorporated herein by reference. The virtual environment allows unutilized resources that would otherwise take the form of an unused desktop PC to be instead used by other users in the virtual computing environment. This virtualization allows an optimal, or “best fit” provisioning of users such that each user is neither overprovisioned or underprovisioned. 
     Configurations defined herein are based, in part, on the observation that many enterprises typically err on the side of overprovisioning a user to offset the impact of manually reconfiguring, servicing, or outright replacing computing resources allocated to an underprovisioned user. Further, in a conventional PC based enterprise environment, each user has a dedicated set of resources (i.e. desktop PC) which is not reallocatable for other uses when idle or when the user logs out/powers down the system. Thus, each idle PC represents a source of wasted computing resources and capital expense when the user is overprovisioned. In contrast, a user who consistently utilizes available CPU and memory on their PC is an underprovisioned user who would benefit from additional computing resources. A management perspective favoring lean IT budgets may result in a preponderance of underprovisioned users. Such underprovisioned users tend to generate increased requests for resource adjustments, in the way of help desk calls and requisitions for increased resources (memory/CPU) and/or new equipment. 
     Conventional computing environments suffer from the shortcoming of increased IT costs due to inefficiently overprovisioning or underprovisioning a user. Such misprovisioning is inefficient because it denotes underutilized computing resources or ineffective and/or disgruntled users. Costs increase either due to the excessive hardware bestowed on the overprovisioned user, or in support costs addressing the underprovisioned user. 
     Configurations herein substantially overcome such shortcomings by defining a best-fit metric indicative of costs of overprovisioning and underprovisioning, computing an appropriate provisioning level by coalescing the cost information, and periodically reassessing the provisioning of a user to maintain an appropriate provisioning level. Such reprovisioning occurs automatically upon occurrences of predetermined events, and may even be undetectable to the user. Since the reprovisioning can either expand or contract the resources available to a particular user, users are matched to an optimal, or “best fit” computational resource set to correspond to the demands of the particular user. For example, when a user logs on, their desktop is “created” at that moment from the ingredients that compose their individual configuration (software, files, preferences, etc.). When a desktop session is ended, there is no physical PC remaining, but rather the resource allocated is now returned for availability to the collective pool at the virtual computing services deployment (typically a virtual environment rack, or cluster). When a desktop is left running and the user disconnects from the thin client device, the work in progress continues such that when the user logs on again, they are reconnected to their desktop which is in the same “state” it was in when they disconnected, which need not be at the same thin client device. 
     In further detail, configurations herein disclose a method of managing computing infrastructure costs by defining a set of computing classes, such that each computing class is associated with a per user cost, and accumulating a usage history corresponding to each user in a set of users, in which the usage history is indicative of the computing demands of each user. A provisioner in the virtual computing services deployment analyzes the computing demands to define a user profile for each user, such that the computing demands are indicative of a provisioning cost of the user. An instance server provisions each user in a particular computing class based on the user profile, the per user cost and the provisioning cost, and an instance manager periodically invokes the provisioner to reanalyze the computing demands to selectively reprovision the user. 
     Alternate configurations of the invention include a multiprogramming or multiprocessing computerized device such as a workstation, handheld or laptop computer or dedicated computing device or the like configured with software and/or circuitry (e.g., a processor as summarized above) to process any or all of the method operations disclosed herein as embodiments of the invention. Still other embodiments of the invention include software programs such as a Java Virtual Machine and/or an operating system that can operate alone or in conjunction with each other with a multiprocessing computerized device to perform the method embodiment steps and operations summarized above and disclosed in detail below. One such embodiment comprises a computer program product that has a computer-readable medium including computer program logic encoded thereon that, when performed in a multiprocessing computerized device having a coupling of a memory and a processor and a storage, programs the processor to perform the operations disclosed herein as embodiments of the invention to carry out data access requests. Such arrangements of the invention are typically provided as software, code and/or other data (e.g., data structures) arranged or encoded on a computer readable medium such as an optical medium (e.g., CD-ROM), floppy or hard disk or other medium such as firmware or microcode in one or more ROM or RAM or PROM chips, field programmable gate arrays (FPGAs) or as an Application Specific Integrated Circuit (ASIC). The software or firmware or other such configurations can be installed onto the computerized device (e.g., during operating system or execution environment installation) to cause the computerized device to perform the techniques explained herein as embodiments of the invention. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The foregoing and other objects, features and advantages of the invention will be apparent from the following description of particular embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. 
         FIG. 1  is a context diagram of an exemplary computing environment employing a network of virtual computing services deployments for use with the present invention; 
         FIG. 2  is a flowchart of provisioning in the computing environment of  FIG. 1 ; 
         FIG. 3  is a block diagram of multiple computing services deployments in the environment of  FIG. 1 ; and 
         FIGS. 4-7  are a flowchart of provisioned deployment in the diagram of  FIG. 3 . 
     
    
    
     DETAILED DESCRIPTION 
     Conventional computing environments require manual reprovisioning, which is typically in response to an explicit complaint or negative occurrence on behalf of the acting user. Even more elusive are overprovisioned users, as overprovisioning rarely generates negative feedback, however is typically indicative of underutilized computing resources. Configurations herein coalesce provisioning with individual user demands to avoid underprovisioning and overprovisioning (misprovisioning). Provisioning reassessment is performed periodically, such as on logout of a user, or in response to detrimental events (typically an indicator of underprovisioning). 
     The disclosed virtual computing environment differs from conventional centralized server arrangements because conventional centralized computing environments do not coalesce cost and user demand to determine an appropriate provisioning level, or maintain a correlation of user activity to misprovisioning events, and do not automatically assess and reassign user provisioning as a result of a misprovisioning determination. In contrast, configurations herein compute a provisioning class based on expected usage demands weighed with the cost of provisioning a user in a particular class, and continually monitor and reevaluate the class to assure an appropriate provisioning level for the user. Conventional arrangements require manual reconfiguration, typically through burdensome manipulation of configuration files, and reprovisioning generally only occurs after interaction with a system manager or operation staff member. Further, many operations staff personnel may be predisposed to either underprovisioning or overprovisioning, since overprovisioning generally reduces successive complaints, while underprovisioning tends to keep information services costs lower. Varying management goals and principles may drive this result. 
     Provisioning modifications are performed in response to an indication of misprovisioning to realign the user with a cost appropriate provisioning level. For example, a user initially receives a provisioned environment with 1 cpu w 512 meg. The user invokes a large drafting program, and the XP operating system (OS) will help with large swap file. However, the user then experiences on the order of 1000-1 performance degradation from page faults(thrashing), a trigger indicative of underprovisioning. If the user had a half GB more memory, the page swapping would be substantially reduced. A best-fit rule indicates that is a threshold number of page faults occurs, memory should be increased from 512 MB to 1024 MB, thus adjusting the user provisioning to suit demands. 
       FIG. 1  is a context diagram of an exemplary virtual computing environment  100  employing a network of virtual computing services deployments  112 - 1  . . .  112 - 3  ( 112  generally) for use with the present invention. Each of the deployments  112  is operable to support a provisioned environment  122  on a user device  120  via a corresponding instantiation of a virtual computing environment ( 145   FIG. 3 , discussed further below) on a corresponding deployment  112 . Each of the deployments  112  may be a virtual computing services rack, or cluster, as disclosed in the copending application cited above, or may be another computing resource, such as a specialized grid processing device, discussed below. A provisioner  134 , which may execute on one of the deployments  112 , receives an environment  142  including a parameter set based on each user&#39;s profile and a desktop  162  from a profile repository  140 , coupled via a network  500  which also couples the deployments  112  as a grid of computing resources. The environment  142  is stored in an environment repository  141  including usage history, and the desktop  162  is stored in a desktop repository  164 , also specific to each user. The environment  142  and desktop  162  are independent, to avoid constraining users with similar desktops (i.e. same department) with similar provisioning A policy repository  180  also defines rules  188  employed by best-fit logic  136  in the provisioner  134  for selecting the provisioned environment  132  applicable to a given user  120 . Best fit logic  136 , discussed further below, computes a provisioning instance  132  corresponding to a computing class  144  ( FIG. 3 ) most appropriate to the user  120 , for execution as a computing environment  145  on one of the deployments  112  and coupled to a corresponding provisioned environment  122  at the user device  120 , typically a thin client operating the GUI  121 . The appropriate computing environment  145  includes, but is not limited to, selection of a virtual computing services deployment  112 , typically a cluster proximate to the user  120 , a general class  144  of computing services (terminal service, hypervisor or grid, discussed further below), and within the class, user parameters. The provisioning environment  100  is periodically reevaluated based on triggering events to reprovision the user as necessary to maintain the best-fit matching. 
     Example rules applied by the best-fit logic  136 , and the policy considerations underlying them, may include, for example:
         If user has &gt;x page faults in y hours, then allocate 512 m more memory   If user has less than 5% cpu utilization over y days, then reduce cpu speed 50%   If user has hit &gt;90% CPU utilization for at least a minute (i.e. affecting other users) then move from TS class to hypervisor class   If user has hit &gt;90% cpu for 20% of the time, then invoke grid service These rules are exemplary; other rules having different parameters and thresholds will be applicable to different scenarios depending on the management philosophy behind the policy.       

     The provisioned environment  122  enabled on the user device  120  appears as a standard personal computer desktop, only without the physical PC present and via a thin client network box instead. However, the applications and CPU computations are performed at the computing environment  145 , operating as a virtual workstation inside the deployment  112 . The display rendering is then transmitted over the network to the thin client device as an environment instance  132 , appearing as the provisioned environment  122 . This significantly reduces the network traffic over the WAN or LAN, and consolidates network communication across tiers in to the data center housing the selected virtual services deployment supporting the users&#39;s provisioned environment  122  with computing environments  145  ( FIG. 3  below) running on a respective deployment  112 . 
     Any number of third-party thin client devices are employable for use as a user device  120  responsive to the provisioned environment  120 , including Wyse terminals, PDA devices, and even PC&#39;s themselves. The thin client devices  120  initiate a connection to the deployment  112  via a Remote Desktop Connection (RDC) client application, as is known in the art, or other suitable connection medium, to the deployment  110  via a URL or other mechanism, generally by a public access network such as the Internet. Alternate continuations may include an enterprise or corporate LAN, WAN, VPN, WiFi, or other specialized network as circumstances dictate. In the example arrangement, the service is registered in UDDI and the service that implements that URI receives the initial request. It then hands off to a connection broker component ( 124 ,  FIG. 3 ) that is responsible for either locating and/or starting the environment and returning the address for subsequent exchanges supporting the provisioned environment  122 . 
     The virtual services deployment  112 , in one sense, operates similarly to the national power grid. The various services deployments  112 -N are disposed in various locations in the network  500  based on the notion of making computation available in the network. This represents an interconnection of resources akin to the North American electrical power grid. Conceptually, the architecture consists of a global catalog and a set of sites where computation is produced. Rather than batch-oriented, these computations are demand-driven in support of interactive end-users via thin client devices  120 . This means specifically that demand is somewhat unpredictable, i.e. it can be characterized as being stochastic. 
     The analogy to the power grid is particularly applicable because it represents a geographically disperse set of unpredictable resource consumers that each require a concurrent minimum level of service. The Power Grid within the US/North America thus may serve as a demand model for the environment  100 . For example, ERCOT is one of several, regional “Independent System Operators (ISO)” in the North America system. These manage the scheduling of power on the electric grid in their respective region. Within its region, ERCOT&#39;s mission is to direct and ensure reliable and cost-effective operation of the electric grid and to enable fair and efficient market-driven solutions to meet customers electric service needs. Of course, power distribution provided by the north American power grid is distinctly different from the virtual computing resources disclosed herein as the power grid distributes raw electrical energy in an analog form with no control over this analog signal after generating the sinusoidal impulse at a predetermined rate (60 Hz). 
     There is, of course, uncertainty inherent in any shared, distributed system that supports a diverse set of workloads. A viable operation should be resilient in the face of failure as well as deal with unexpected and time-varying demand. Ultimately, the physical infrastructure provided by the set of deployments  112 - 1  . . .  112 -N may be viewed as manufacturing plant that is shared amongst several workloads, each gaining access to sufficient capacity to meet their respective demand forecasts and the supporting scheduled delivery of plant capacity. In configurations herein, capacity is repurposed as demand varies. The implication of this dynamic repurposing of physical computers is that (a) there is some form of scheduling and (b) all of the prerequisite inputs are available in advance of a particular schedule being enacted. 
     A particular “service” hosted in on the virtual services environment  100  is primarily a set of policies (i.e. Service Level Agreements) governing how a specialized set of computations, collectively referred to as a  3 Service, 2  will be delivered to a target constituency or “market.” Using the provisioned environment  120  as an example service, there are two tasks that must be addressed: demand forecast and capacity scheduling. This service is concerned with providing a user access to a desktop session via the network. The end user&#39;s request for a desktop instance  132  is brokered via a mediation layer referred to as the connection broker  124  ( FIG. 3 ). This is a core service that can be thought of as an application-oriented, IP load balancer. 
     In the desktop  164  example, the connection broker  124  first determines the requesting user&#39;s identity and class of desktop specified in their subscription. Once this is determined, the second step in this process is to find a properly configured desktop  164  system sitting in inventory. If successful the system is assigned to the user for the duration of their session and specialized/personalized for their specific use. Finally, the connection broker  124  returns instructions to the requesting user  120  on how to connect to their desktop. 
     The physical deployment topology is designed to minimize latency and maximize fault tolerance and disaster recovery capabilities. Similar to an Akamai-like edge network, the disclosed environment  100  relies on a set of distributed locations where the deployments  112 , typically implemented as equipment racks, stand ready to become the primary service provider for an end user  120 . The racks are stateless wholly integrated clusters (e.g. deployments  112 ) that can automatically provision desktops and requested applications from bare-metal at a moment&#39;s notice, assembling personalized functionality on the basis of security policies and individual preferences associated with an end user&#39;s identity. 
     For example, if a call center employee is relocated from the New Jersey office to an office in Tokyo, the precise configuration and capabilities are instantly available upon login at the new location, with no loss of quality or performance. Similarly, if a developer is working on a certain program on a set of procured servers in one location, he can log-in anywhere in the world and continue his work with no apparent differences. While each location around the world in the distributed network has self-contained storage, the data is regularly backed up to the master data center, providing robust archiving and data integrity and an usually efficient “roll-back” mechanism to previous-state configurations. 
       FIG. 2  is a flowchart of provisioning in the computing environment of  FIG. 1 . 
     Referring to  FIGS. 1 and 2 , the virtual computing environment  100  provides, at step  200 , a method of managing computing infrastructure costs by defining a set of computing classes  144 , such that each computing class is associated with a per user cost, and accumulating a usage history corresponding to each user  120  in a set of users  120 -N, in which the usage history defines a user profile  142  indicative of computing demands of each user  120 , as disclosed at step  201 . The environment  100  regularly analyzes the computing demands to define and/or refine the user profile  142  for each user  120 , in which the computing demands are indicative of a provisioning cost of the user  120 , as depicted at step  202 . A virtual computing services deployment  112  (deployment), typically a cluster of computing servers and peripherals at various deployment locations in the environment  100 , provisions each user in a particular computing class  144  based on the user profile  142 , the per user cost and the provisioning cost of the class  144 , as shown at step  203 . Ongoing best-fit provisioning occurs by periodically reanalyzing the computing demands to selectively reprovision the user, as depicted at step  204 . 
       FIG. 3  is a block diagram of virtual computing provisioning in the environment of  FIG. 1 . Referring to  FIGS. 1 and 3 , each of the virtual computing services deployments  112  is operable to provision one or more of the service classes  152 ,  154 ,  156  ( 144 , collectively) as shown in  FIG. 3 , and is operable to provision a user  120  on any of the other deployments  112 -N via the network  500 . The connection broker  124  receives an indication of the instance server  130  selected by the provisioner  134  using the best fit logic  136 , and informs the selected instance server  130  to instantiate a computing environment  145  supporting a provisioned environment  122  at the corresponding user device  120 . Often this may be the most local instance server, however network location is only one of many factors weighed by the best fit logic  136 . 
     The virtual computing services deployment  112  takes the form of one or more virtual computing services racks  110 , equipped and implemented as follows. The instance server  130  further includes an instance manager  150  for maintaining computing environments  152 ,  154  and  156  (collectively shown as  145 ) for each class  144 . The computing environments  152 ,  154  and  156  support the provisioned environments  122  by defining the respective memory, CPU and I/O operations in each environment  122 . The user device  120  is typically a low cost telecommunication device having sufficient capabilities to exchange keystrokes and mouse operations, as well as a display screen, but typically retains no nonvolatile storage (i.e. disk drives) and operates as a rendering device for the provisioned environment  122  for the user with respect to the computing environments  152 ,  154  and  156  at the instance server  130 . 
     Upon provisioning, which occurs at initial login as well as according to predetermined intervals as defined herein, the provisioner  134  employs a user profile  142  from a profile repository  140  to assign a provisioning class (class)  144  to the user device  120 , and also assigns a separate desktop  162  from a desktop repository. The class  144  indicates the level of computing resources provided to the user  120  by the instance server  130  via the environment instance  132 , which in the example configuration corresponds to a terminal server  152  class, a hypervisor class  154 , and a grid class  156 , discussed in further detail below. A connection broker  124  establishes communication between the instance server  130  and the provisioned environment  122  via the environment instance  132 . 
     The provisioner  134  employs the best-fit logic  136  including a history of previous computing activity in the profile database  140  by the user  120  in the profile database  140  to determine the class  144 . The profile includes, for each user  120 , an entry  142  having the identity of the user, and environment parameters applicable to the user  120 , including memory allocation, cpu speed, and I/O (disk) capacity. These parameters represent the current provisioning of the level and are recomputed and/or verified by the best fit logic  136  at each provisioning evaluation to maintain the user at an appropriate provisioning level. 
     The instance server  130  instantiates a portion of available resources as an environment instance  132  for each provisioned environment  122  deployed on a user device  120 . Each environment instance  132  is based on a particular class  144 , and corresponds to a computing environment  145 . In the example configuration, the classes  140  include a terminal server (TS) class  152 , intended for low usage demand users, and supporting a plurality of users in a common memory with a shared operating system. A hypervisor class  154  provides OS and memory isolation for users with more specific usage demands, generally greater than the TS class  152 , and preallocates a portion of available memory and CPU resources for exclusive use for a user  120 . Extreme usage demands invoke the grid class  156 , which delegates computing to an external computing grid  158  where computing “horsepower” is provided on a fee-for-services basis, particularly for short term intense needs. The grid  158  operates as another deployment  112  accessible via the network  500 , and may be a more robustly equipped cluster providing multiple service classes  144 , or may be a highly specialized computing engine reserved for high performance (typically with commensurate cost) computing. 
     The instance manager  150  also retrieves a desktop  162  from an environment repository  141 , which may be the same as the profile DB  140  or a distinct physical repository. The environment repository stores desktops  164  for each user  120  including the application suite  166  and operating system  168  for each user. The desktop  164  is independent from the provisioning class  144 , thus allowing users from the same group (i.e. serving a particular business function such as legal, accounting, HR, etc.) to have common application arrangements without necessarily being bound to similar provisioning classes  144 . Such an arrangement also avoids the need to place similar users (i.e. from the same group) in the same provisioning “bucket”, for example having highly mathematical intensive applications of the accounting group served by the same terminal services instance  152 . 
     The application virtualization engine  170  operates in conjunction with the desktop  164  to provide each user with needed applications. As shown by dotted line  172 , the application virtualization engine  170  retrieves applications from an application repository  174  for invocation by the computing environments  145 . The application virtualization engine  170  makes desktop  166  enabled applications available, and also coordinates user/license provisions to maintain appropriate application/user invocation. 
     An instance storage volume  180  provides mass storage services to each of the environment instances  132 , in effect acting as the local disk drive for each user device  120 . The instance storage provides efficient storage, with high availability, and tight integration (emulating the appearance of local drives) by using a clustered file system combined with local RAID storage implemented and infiniband access for high throughput, as is known in the art. 
       FIGS. 4-7  are a flowchart of provisioned deployment in the diagram of  FIG. 3 . Referring to FIGS.  1  and  3 - 7 , the deployments  112  in the virtual computing (grid) environment  100  provide virtual computing services by defining a set of computing classes, such that each computing class is associated with a per user cost, as depicted at step  300 . The environment  100  further includes a plurality of computing service deployments  112 , in which each deployment has a network  500  location and is operable to provision at least one class  144  of computing services, as shown at step  301 . Each deployment  112  thus defines a plurality of computing classes  152 ,  154 ,  156  such that each computing class is further associated with a resource cost and a performance factor, as shown at step  302 . In the example arrangement, the computing classes  144  include, but are not limited to, a terminal server class operable to support a plurality of users on a common operating system in a shared memory pool, as depicted at step  303 , a hypervisor class providing a dedicated OS and memory allocation to each user, disclosed at step  304 , and a grid class providing high performance computing resources substantially greater than the hypervisor class, as shown at step  305 . 
     Upon a request from a user device  120 , the invoked deployment  112  identifies a computing service level corresponding to each particular class  144 , such that the computing service is provided by one of the plurality of computing services deployments  112 -N via the network  500 , as depicted at step  306 . The environment  100  associates a fee with each of the computing services, according to class  144 , in each of the computing services deployments  112 , as shown at step  307 . 
     The ongoing environment  500  accumulates a usage history corresponding to each user  120  in a set of users, in which the usage history is indicative of the computing demands of each user  120 , as shown at step  308 . The provisioner  134  analyzes the computing demands to define a user profile  142  for each user  120 , in which the computing demands are indicative of a provisioning cost of the user  120 , as depicted at step  309 . 
     The policy  186  defines a set of rules  188 , such that the rules specify overprovisioning and underprovisioning thresholds, in which the rules  186  balance enterprise cost with user satisfaction to balance overprovisioning and underprovisioning, and further that the computed provisioning level (class  144 ) is independent of the provisioning level of other users  120 , as disclosed at step  310 . The policy  186  reflects the management philosophy of the enterprise towards user provisioning. While the best fit metric  136  strives for optimal efficiency, this management philosophy may augment the best-fit rules to err on the side of cost control or high performance. 
     Accordingly, the environment  100  defines the best fit metric  136  in the policy  186 , the policy  186  having a set of rules  188 , in which each of the rules identifies a computing performance concern and a resource cost concern, such that the rule further specifies a tradeoff threshold between the performance concern and the resource cost concern, as disclosed at step  311 . In the example configuration, the computing performance concerns include allocated processor speed, allocated memory, and allocated disk space, generally indicative of parameters which proportionally increase the level of provisioning to the user  120 , as depicted at step  312 . The resource cost concerns include help desk calls, equipment requisitions, and external grid computing requests, as depicted at step  313 , and generally denote factors that increase cost. The rules  188 , denoted in an example form above, strike the tradeoff between these concerns as codified in the best-fit logic  136 . 
     Upon a request to provision a user, responsive to a user  120  request for an environment instance  132 , provisioning further includes, therefore, comparing the user profile to a provisioning policy  186 , such that the provisioning policy defining a best fit of computing resources to user demands, as shown at step  314 . The best-fit logic  136  implements the provisioning policy by defining a balance between overprovisioned and underprovisioned users  120 , in which an overprovisioned user is associated with a higher operational cost than an underprovisioned user  120 , while an underprovisioned user may be associated with a higher support cost than an overprovisioned user, as denoted at step  315 . 
     In provisioning the user, the operational cost encompasses costs of providing the user with computer processing capability, while the support cost encompasses the cost of responding to user inquiries of computer processing capability, as shown at step  316 . Thus, an overprovisioned user receives a greater share of computing resources than an underprovisioned user, in which each user associated with a provisioning tradeoff threshold, the tradeoff threshold indicating the lowest operation cost supportable without increasing the support cost, as depicted at step  317 . 
     The provisioner  134  resolves these competing ends by evaluating the feasibility using a best-fit metric (logic)  136 , such that the best-fit metric  136  defines a cost effective provisioning level for the user, as shown at step  318 . This includes, at step  319 , evaluating the feasibility of the computing service (class  144 ) identified for each user  120 , such that evaluating includes the network location of the computing service location (i.e. where the deployment  112  is located) relative to the particular user, as depicted at step  319 . Each of the deployments  112  is operable to invoke the connection broker  124  to provision the user  120  on another deployment  112 , if costs and/or network distance deem it more effective according to the best-fit logic  136 . 
     The classes include a grid class  156 , as shown at step  320 , which may denote an external invocation of computing resources, effectively contracting out the need for computing ability, usually because of extreme demand and/or a temporary nature of the resource need. Such a circumstance requires identifying internal and external provisioning sources and costs thereof, as depicted at step  321 , and computing a feasibility of external provisioning, such that external provisioning includes provisioning in the grid computing class  156 , as disclosed at step  322 . The grid may be considered separately from “on board” classes provided directly by the deployments because of the relatively higher cost than obtaining the same processing resources from the hypervisor  154  or terminal server  152  classes, usually due to consideration of the impact on other users  120 . Accordingly, the provisioner  134  selectively provisions the user  120  in the grid class  156  based on the computed feasibility, as depicted at step  323 . Following the comparison at steps  314  and  320 , the provisioner determines if the user is misprovisioned based on the comparison, in which misprovisioning is indicative of a user having resources inconsistent with the user demands indicated by the user profile, as shown at step  324 . Accordingly, a check is performed at step  325  and the provisioner  134  selects a different computing class  144  for the user  120  if the provisioning policy  186  as implemented by the best-fit logic  136  is indicative of a misprovisioned user, as shown at step  325 . If the user  120  is misprovisioned, control reverts to step  308  to reanalyze the user  120  demands. Otherwise, the instance manager  150  provisions the user in the particular computing class based on the user profile, the per user cost and the provisioning cost, as resolved by the best-fit logic applied to the current usage indicated by the user profile, depicted at step  326 . 
     The user  120  continues via the provisioned environment  122 , while the provisioner periodically reanalyzes the computing demands to selectively reprovision the user  120 , as depicted at step  327 . Thus, the provisioner  134  selectively modifies the computing service (class  144 ) of the user  120  based on the evaluating, as shown at step  328 . Such periodically reanalyzing occurs upon triggering events including threshold specifying at least one of page faults, response time, and CPU utilization, all of which are typically associated with an underprovisioned user, as depicted at step  329 , as well as other events which may denote an overprovisioned user, such as upon logout or periodic time intervals. Control then reverts to step  308  pending the next reevaluation. 
     Those skilled in the art should readily appreciate that the programs and methods for provisioned virtual grid computing as defined herein are deliverable to a user processing and rendering device in many forms, including but not limited to a) information permanently stored on non-writeable storage media such as ROM devices, b) information alterably stored on writeable storage media such as floppy disks, magnetic tapes, CDs, RAM devices, and other magnetic and optical media, or c) information conveyed to a computer through communication media, for example using baseband signaling or broadband signaling techniques, as in an electronic network such as the Internet or telephone modem lines. The operations and methods may be implemented in a software executable object or as a set of encoded instructions for execution by a processor responsive to the instructions. Alternatively, the operations and methods disclosed herein may be embodied in whole or in part using hardware components, such as Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), state machines, controllers or other hardware components or devices, or a combination of hardware, software, and firmware components. 
     While the system and method for provisioned virtual grid computing has been particularly shown and described with references to embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.