Demand-Driven Locale Management

The demand-driven locale management system addresses the challenge of manual locale installation in cloud computing by automatically adding locales to the installation list when demand is met, ensuring seamless and efficient service delivery.

JP7721239B2Active Publication Date: 2025-08-12INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023526082
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-11-16
Filing Date
2021-10-13
Publication Date
2025-08-12
Estimated Expiration
2041-10-13

AI Technical Summary

Technical Problem

Users in cloud computing environments often face difficulties in manually installing required locales, which can be inconvenient and inefficient, especially when their preferred or required locale is not pre-installed, leading to potential errors and language barriers.

Method used

A demand-driven locale management system that monitors user input to detect locale installation requests and automatically adds locales to an installation list when a demand threshold is met, ensuring seamless and automatic locale installation upon application launch.

Benefits of technology

Facilitates convenient and accessible cloud computing services by automatically installing required locales based on user demand, enhancing user experience and reducing manual intervention.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007721239000001
    Figure 0007721239000001
  • Figure 0007721239000002
    Figure 0007721239000002
  • Figure 0007721239000003
    Figure 0007721239000003
Patent Text Reader

Abstract

The method includes establishing a demand threshold for adding a locale to an installation list based at least in part on selection data indicative of input from a user. This embodiment also includes monitoring user input to the cloud computing environment to detect user input including a request to install the locale. It also includes dynamically updating a demand score associated with the locale based on ongoing detection of a locale installation request during monitoring of the user input. It also includes automatically adding the locale to the installation list upon detecting that the demand score meets the demand threshold.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates generally to methods, systems, and computer program products for managing the allocation of computing resources in a server cluster. More particularly, the present invention relates to methods, systems, and computer program products for demand-driven locale management. [Background technology]

[0002] Data processing environments consist of a variety of hardware, software, and firmware network components. The physical network, also known as the data plane or underlay, is the network of physical components where the actual networking operations are performed and where the computational workloads are executed.

[0003] Technologies are now available for constructing logical networks from these network components, also known as software-defined networking (SDN) overlays (hereinafter interchangeably referred to as "SDN" or "overlays"). Essentially, network components are abstracted into corresponding logical or virtual representations, and the SDN is defined using these abstractions. In other words, an SDN is a logical network that is formed and operated using virtual representations of the underlying physical components.

[0004] Physical computing machines are sometimes represented and used in SDN as virtual devices, virtual machines (VMs), sometimes called network virtualization edge (NVE). Applications configured to run at the edge essentially run the same way they would on a physical computing machine.

[0005] In SDN, the actual physical network components that perform network functions are abstracted into logical entities that represent the network functions provided by those components, rather than the actual implementation of those functions, and so something is needed to direct those network functions into a functioning logical network. An SDN controller is a component that manages and operates the logical network components in an SDN.

[0006] A VM is a virtual representation of the actual hardware, software, and firmware components available to a data processing system. A data processing system can have any number of VMs configured on it and can utilize any number of virtualized components within it. A data processing system is also called a computing node, compute node, node, or host. Summary of the Invention

[0007] An exemplary embodiment provides demand-driven locale management. The embodiment includes establishing a demand threshold for adding a locale to an installation list based at least in part on selection data indicative of input from a user. The embodiment also includes monitoring user input to a cloud computing environment to detect user input including a request to install the locale. The embodiment also includes dynamically updating a demand score associated with the locale based on ongoing detection of a locale installation request while monitoring the user input. The embodiment also includes automatically adding the locale to the installation list upon detecting that the demand score meets the demand threshold. Other embodiments of this aspect include corresponding computer systems, devices, and computer programs stored on one or more computer storage devices, each configured to perform the operations of the embodiment.

[0008] Embodiments include a computer-usable program product that includes a computer-readable storage medium and program instructions stored on the storage medium.

[0009] An embodiment includes a computer system including a processor, a computer-readable memory, and program instructions stored on a storage medium for execution by the processor via the memory.

[0010] The novel features believed characteristic of the invention are set forth in the appended claims. However, the invention itself, together with its preferred modes of use, further objects and advantages, will best be understood by reference to the following detailed description of illustrative embodiments when read in connection with the accompanying drawings. [Brief explanation of the drawings]

[0011] [Figure 1] FIG. 1 illustrates a cloud computing environment in accordance with an embodiment of the present invention. [Figure 2] FIG. 2 illustrates abstraction model layers according to an embodiment of the present invention. [Figure 3] FIG. 1 is a block diagram of an exemplary cloud computing environment including a container demand locale management (CDLM) system in accordance with an exemplary embodiment. [Figure 4] FIG. 2 is a block diagram of an exemplary CDLM in accordance with an exemplary embodiment. [Figure 5] FIG. 10 illustrates a table of historical container node usage data in accordance with an example embodiment. [Figure 6] 10 is a flowchart illustrating an example process for demand-driven locale management. DETAILED DESCRIPTION OF THE INVENTION

[0012] Virtualized data processing environments, often referred to as "clouds," provide computing resources and services to multiple clients on an as-needed basis. Cloud computing services are available in a variety of models, typically within virtualized data processing environments, including Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and Function as a Service (FaaS). These services are delivered to an ever-expanding international customer base as global network capabilities and infrastructure improve.

[0013] A popular method of virtualization is containerized virtualization. Containerized virtualization, also known as operating system virtualization, is a virtualization technique in which virtualization layers run as applications within an operating system. A layer is a software package that participates in an image. An image is a binary package that can be installed on hardware to instantiate a VM on that hardware. An image can contain any number of software packages, with the layers assembled together in the image as a monolithic binary. An image can represent a single application, but does not have to.

[0014] In container-based virtualization, an operating system kernel runs on a hardware node, on which multiple isolated application environments are installed. These isolated application environments are called containers. A container is essentially a running instance of a VM image with distinct layers. Container-based virtualization is a method of running multiple VMs on the same host, sharing the same kernel and memory space with each other and the host. Isolation between containers is achieved through multiple resources, including but not limited to the file system, the network stack subsystem, and one or more namespaces. By sharing the same running kernel and memory space, there is virtually no difference in performance between the "host" operating system and the containers.

[0015] In general, a container is an image formed using a set of one or more layers. The layers typically include layers for specific operating system versions and layers for specific customizations, such as operating system localization. Localization allows an operating system (and other aspects of a computing service) to be customized for customers in different parts of the world. For example, an operating system can be adapted for different languages and regions without engineering changes. Localization is used to translate content such as user interface elements and documentation based on locale. Localization may also include other related changes to content, such as the display of numbers, dates, currency, etc., based on locale.

[0016] In common computing platforms, a "locale" is a part of the user environment that summarizes information about how to process data specific to a user's region, language, or territory. Many operating systems and applications can adapt to different regional settings by using "locales" that specify how data is handled for both input and output. These regional settings are more than just a convenience for users; without localization, regional settings can be misconfigured and errors can occur. For example, users may experience errors if date formats or currency settings are different from what is expected. Localization also eliminates language barriers, preventing some users from using such systems or services.

[0017] A locale is typically part of an operating system. A locale used by an operating system is typically represented as an object file used to identify a set of cultural conventions. Examples of cultural conventions include information about collation order, character classification, date / time formatting, monetary symbols, and numeric representation. Applications running on a computing platform use the locale to determine various default values related to location or language. The locale is significant to both the application and the platform on which the application is running. For example, the platform may use the locale to determine the default language, time zone, and date format.

[0018] It is common for a user's language or region to not match any of the locales installed in the operating system. Operating systems typically include a pre-installed default locale. However, the default locale may contain only a small subset of all available locales. For example, an operating system may include ten or fewer pre-installed default locales, but may have hundreds of other locales available that are not pre-installed.

[0019] If the required locale is not installed, the user must manually install the locale. Depending on the user's experience level, the process of manually installing a locale can be difficult or inconvenient for several reasons. For example, an inexperienced user may not know that they can install additional locales, may be unfamiliar with the locale installation procedure, or may not know where to find additional locales. Even experienced users may encounter issues such as not having the system permissions to install a locale. These issues can be difficult for users to overcome, especially because while attempting to resolve these issues, the user may be working with an operating system configured for an unfamiliar language.

[0020] One proposed solution is to pre-install all available locales. However, an operating system may have hundreds of locales available, consuming more memory than desired. This is especially true for cloud computing services, where it is desirable to minimize the operating system's installation footprint for performance purposes.

[0021] Therefore, with current technology, if a user's preferred or required locale is not available in the operating system installed on a cloud service, the user has no choice but to manually search for and install the locale. This manual process lacks convenience and accessibility in providing cloud computing services to an international customer base that continues to expand as global network capabilities and infrastructure continue to improve.

[0022] The illustrated embodiments solve these problems by detecting locale demand in a computing environment and automatically adding the locale to an installation list. In some embodiments, once a locale is registered in the installation list, it is automatically installed every time a user or user group launches an application in the computing environment, eliminating the need for the user or user group to manually install the locale.

[0023] Embodiments may be implemented as a combination of specific hardware components and software applications. Implementations of embodiments, or one or more components thereof, may be configured as modifications to an existing controller (e.g., an existing SDN controller), modifications to an existing container manager, and companion software applications may run on some combination of: (i) the controller or manager itself, (ii) a data processing system in short-range wireless or local area network (LAN) communication with the controller or manager, or (iii) a data processing system in wide area network (WAN) communication with the controller or manager.

[0024] In general, embodiments can be configured to establish a demand threshold for adding a locale to the installation list according to selection data associated with user input. In some embodiments, a graphical user interface (GUI) provides a user with form elements that the user can enter or manipulate to enter criteria for adding a locale to the installation list. Some such embodiments can be configured to generate the selection data based on user-selected criteria. Non-limiting examples of criteria include a minimum number of locale installation requests (e.g., a locale installation must be requested at least five times), a specific time period during which a minimum number of requests must be received (e.g., a locale installation must be requested at least three times in a six-hour period), or requests to install the locale must come from a specific group of users (e.g., a locale installation must be requested at least five times from a specific group of users).

[0025] Embodiments monitor user input to a cloud computing environment to detect user input including a request to install a locale. In some embodiments, monitoring for user input is performed during a time period specified by selection data. Embodiments can be configured to monitor user input in a variety of different ways. As a non-limiting example, in a cloud computing environment, monitoring is performed by a node that provides monitoring results to a backend server. As another non-limiting example, in a cloud computing environment, monitoring is performed by a backend server that monitors user input by monitoring an application programming interface (API). In some embodiments, the backend server monitors user input in real time or near real time.

[0026] Embodiments can be configured to dynamically update a demand score associated with a locale based on ongoing detection of locale installation requests while monitoring user input. In some embodiments, detecting that no locale installation requests have been detected for a specified period of time reduces the demand score. For example, a criterion may require n requests to install the locale within m hours, and such an embodiment may employ a sliding time window of m hours that reduces the demand score if a detected request is older than m hours. In some embodiments, the selection data specifies a group of users, so that the demand score is updated only if a detected locale installation request is from a user in the specified group.

[0027] Some embodiments are configured such that updating the demand score includes weighting installation requests from some users or groups more than others. For example, some embodiments increase the demand score by a greater amount if the request is from a root or VIP user. Some such embodiments include detecting user characteristics, such as whether the user is root or has a VIP account or status, and weighting requests from such users more than other users for purposes of calculating the demand score.

[0028] In some embodiments, a locale is automatically added to an install list when it is detected that the demand score meets a demand threshold. In some embodiments, the install list is a list of locales that are automatically installed when an application, for example, in the form of a container instance, is launched. In some embodiments, before a locale is added to the install list, the embodiment detects that the demand score meets a demand threshold and verifies that the locale is not already in the install list and the default locale list.

[0029] For clarity of explanation, and without implying any limitations thereto, the exemplary embodiments are described using several exemplary configurations. From this disclosure, one skilled in the art may conceive of many changes, adaptations, and modifications of the described configurations to achieve the described objectives, and the same are contemplated within the scope of the exemplary embodiments.

[0030] Furthermore, the figures and exemplary embodiments use simplified illustrations of data processing environments. An actual computing environment may contain additional structures or components not shown or described herein, or structures or components that differ from those shown but have similar functionality to those described herein, without departing from the scope of the exemplary embodiments.

[0031] Furthermore, the exemplary embodiments are described with reference to specific real or virtual components, by way of example only, and the steps described by various exemplary embodiments may be adapted to provide explanations for decisions made by, for example, a machine learning classifier model.

[0032] Any particular manifestations of these and other similar artifacts are not intended to limit the present invention, and any suitable manifestations of these and other similar artifacts may be selected within the scope of exemplary embodiments.

[0033] The examples in this disclosure are used for clarity of explanation only and are not intended to limit the exemplary embodiments. Any advantages described herein are merely examples and are not intended to limit the exemplary embodiments. Additional or different advantages may be realized by certain exemplary embodiments. Furthermore, certain exemplary embodiments may have some, all, or any of the advantages listed above.

[0034] Furthermore, exemplary embodiments may be implemented with respect to any type of data, data source, or access to a data source via a data network. Any type of data storage device may provide data to embodiments of the present invention, either locally at a data processing system or via a data network, within the scope of the present invention. Where embodiments are described using a mobile device, any type of data storage device suitable for use with a mobile device may provide data to such embodiments, either locally at the mobile device or via a data network, within the scope of exemplary embodiments.

[0035] The exemplary embodiments are described using specific code, comparative descriptions, computer-readable storage media, high-level features, historical data, designs, architectures, protocols, layouts, circuit diagrams, and tools as examples only and not as limitations of the exemplary embodiments. Furthermore, the exemplary embodiments may be described using specific software, tools, and data processing environments as examples only for clarity of explanation. The exemplary embodiments may be used in combination with other structures, systems, applications, or architectures of equivalent or similar purpose. For example, other comparable mobile devices, structures, systems, applications, or architectures therefor may be used in combination with such embodiments of the present invention within the scope of the present invention. The exemplary embodiments may be implemented in hardware, software, or a combination thereof.

[0036] The examples in this disclosure are used for clarity of explanation only and are not intended to limit the exemplary embodiments. Additional data, operations, actions, tasks, activities, and operations are contemplated by this disclosure, and the same are contemplated within the scope of the exemplary embodiments.

[0037] Any advantages described herein are exemplary only and are not intended to limit the exemplary embodiments. Additional or different advantages may be realized by certain exemplary embodiments. Furthermore, certain exemplary embodiments may have some, all, or any of the advantages listed above.

[0038] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the present invention may be practiced in conjunction with any other type of computing environment now known or later developed.

[0039] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a service provider. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[0040] The characteristics are as follows:

[0041] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time or network storage, automatically as needed, without the need for human interaction with the service provider.

[0042] Broad network access: Computing power is available over the network and can be accessed through standard mechanisms, facilitating use by heterogeneous thin or thick client platforms (e.g., cell phones, laptops, PDAs).

[0043] Resource Pooling: Computing resources from a provider are pooled and offered to multiple consumers using a multi-tenant model. Various physical and virtual resources are dynamically allocated and reallocated based on demand. Consumers generally have no control or knowledge of the exact location of the resources they are provided with, resulting in a sense of location independence. However, consumers may be able to determine location at a higher level of abstraction (e.g., country, state, data center).

[0044] Rapid Elasticity: Computing capacity can be provisioned quickly and elastically, sometimes automatically, to instantly scale out and quickly release to instantly scale in. To the consumer, the computing power available for provisioning often appears unlimited, and can be purchased at any time and in any quantity.

[0045] Metered Services: Cloud systems leverage measurement capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, active user accounts) to automatically control and optimize resource usage. Resource usage can be monitored, controlled, and reported to provide transparency to both providers and consumers of utilized services.

[0046] The service model is as follows:

[0047] Software as a Service (SaaS): The functionality offered to the consumer is the availability of a provider's applications running on a cloud infrastructure that can be accessed from a variety of client devices through a thin client interface such as a web browser (e.g., webmail). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functionality, except for limited user-specific application configuration settings.

[0048] Platform as a Service (PaaS): The capability offered to consumers is to deploy applications they create or acquire using programming languages and tools supported by the provider onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the configuration of their hosting environment.

[0049] Infrastructure as a Service (IaaS): The functionality offered to consumers is the provisioning of processors, storage, networking, and other basic computing resources on which they can deploy and run any software, including operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating system, storage, and deployed applications, and in some cases partial control over some network components (e.g., host firewalls).

[0050] The deployment model is as follows:

[0051] Private Cloud: This cloud infrastructure is dedicated to a specific organization and can be managed by that organization or a third party, and can exist on-premise or off-premise.

[0052] Community Cloud: This cloud infrastructure is shared by multiple organizations to support a specific community with common concerns (e.g., mission, security requirements, policies, and compliance). This cloud infrastructure can be managed by those organizations or a third party and can exist on-premises or off-premises.

[0053] Public cloud: This cloud infrastructure is available to the general public or large industry organizations and is owned by an organization that sells cloud services.

[0054] Hybrid cloud: This cloud infrastructure combines two or more cloud models (private, community, or public), each of which retains its inherent nuances but is bound by standards or specific technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0055] A cloud computing environment is a service-oriented environment that emphasizes statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0056] FIG. 1 illustrates an exemplary cloud computing environment 50. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10, with which local computing devices used by cloud consumers (e.g., PDAs or cell phones 54A, desktop computers 54B, laptop computers 54C, or automobile computer systems 54N, or combinations thereof) can communicate. The nodes 10 can communicate with each other. The nodes 10 can be physically or virtually grouped (not shown) in one or more networks, such as the private, community, public, or hybrid clouds described above, or combinations thereof. This enables the cloud computing environment 50 to provide infrastructure, platform, or software as a service, or combinations thereof, for which cloud consumers are not required to maintain resources on their local computing devices. It should be understood that the types of computing devices 54A-N illustrated in FIG. 1 are exemplary only, and that the computing nodes 10 and the cloud computing environment 50 can communicate with any type of electronic device via any type of network or network-addressable connection (e.g., using a web browser), or both.

[0057] A set of functional abstraction layers provided by cloud computing environment 50 (FIG. 1) is now shown in FIG. 2. It should be understood in advance that the components, layers, and functions shown in FIG. 2 are merely exemplary, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0058] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, reduced instruction set computer (RISC) architecture-based server 62, server 63, blade server 64, storage device 65, and network and network components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0059] The virtualization layer 70 provides an abstraction layer from which the following virtual entities can be provided, for example: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.

[0060] By way of example, the management layer 80 may provide the following functionality: Resource provisioning 81 enables dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 enables cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. By way of example, these resources may include application software licenses. Security enables identification and verification of cloud consumers and tasks, as well as protection for data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 enables allocation and management of cloud computing resources so that requested service levels are met. Service level agreement (SLA) planning and fulfillment 85 enables advance arrangement and procurement of anticipated future cloud computing resources required in accordance with SLAs.

[0061] The workload layer 90 provides examples of functionality available to a cloud computing environment. Examples of workloads and functionality that can be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and demand-driven locale management 96.

[0062] Referring to Figure 3, this figure shows a block diagram of an exemplary cloud computing environment 300 including a container demand locale management (CDLM) system 302 according to an exemplary embodiment. In some embodiments, the CDLM is deployed in the workload layer 90 of Figure 2. By way of example, in some embodiments, the CDLM 302 is implemented as the demand-driven locale management 96 of Figure 2.

[0063] In some embodiments, environment 300 is a virtualized data processing environment supporting one or more different service models, such as IaaS, PaaS, SaaS, and FaaS. In some embodiments, at least a subset of the components of environment 300 may be implemented by one or more container nodes 304A-304D, collectively referred to herein as container nodes 304, and a master node 306. An embodiment of environment 300 may include hundreds or thousands of container nodes 304 and multiple master nodes 306. Master node 306 hosts applications that support container nodes 304, including application programming interface (API) server 308 and CDLM 302. In some embodiments, container node 304 and master node 306 communicate over a network connection as part of cloud computing environment 300. In some embodiments, container node 304 communicates with CDLM 302 via API server 308. In some embodiments, user device 310 communicates with CDLM 302 via API server 308.

[0064] In the illustrated embodiment, CDLM 302 allows a user or administrator to set and modify on-demand criteria. The on-demand criteria includes a rule or set of rules for adding a locale to the installation list. In some embodiments, the on-demand criteria includes a demand threshold. A non-limiting example of an on-demand criteria for adding a locale to the installation list is requiring three or more regular user requests for the locale within an hour. In some embodiments, the criteria may be for a single user, a group of users, or other user designations. In some embodiments, once the criteria are met, the locale is later automatically added to the installation list and will then be automatically installed when the specified user or group launches a container or application in cloud computing environment 300. In some embodiments, CDLM 302 provides a graphical user interface (GUI) that allows a user to set and manage on-demand criteria.

[0065] In some embodiments, the CDLM 302 tracks on-demand criteria, such as demand thresholds, specified by a user via the user device 310. For example, in some embodiments, the CDLM 302 stores the on-demand criteria in a service profile. In some embodiments, the service profile includes cloud service settings related to language and locale capabilities. In some such embodiments, the locale fileset repository database also stores and provides access to the CDLM 302 locales that are not installed by default on the container instance. In some embodiments, the CDLM 302 also stores a user profile that includes user locale preferences. In some embodiments, the CDLM 302 also stores a list of locales already installed on the container instance.

[0066] In some embodiments, CDLM 302 tracks locale request information by monitoring user input to node 304, for example, to detect user input including a request to install a locale. In some embodiments, CDLM 302 tracks locale request information, for example, in real time or near real time, using a backend monitoring application on CDLM 302. For example, if CDLM 302 detects user input such as "LANG=ja_JP" and runs the application, that information indicates that the user requires a specified language locale, and is tracked by CDLM 302.

[0067] In some embodiments, CDLM 302 calculates the demand score by dynamically updating the demand score associated with a locale based on ongoing detection of locale installation requests, for example, while monitoring user input. In some embodiments, CDLM 302 allows a user to define and modify the algorithm for calculating the locale demand score for each of containers 304. In some such embodiments, CDLM 302 may weight requests by certain designated users or user groups (e.g., root users or VIP groups) higher than requests by other users for purposes of calculating demand.

[0068] In some embodiments, CDLM 302 adds locales to the install list, for example, by adding top-demand locales according to predefined on-demand criteria. In such embodiments, CDLM 302 automatically installs locales on the install list when an application is launched in the cloud computing environment.

[0069] In the illustrated embodiment, the master node 306 performs cluster control functions such as, but not limited to, scheduling workloads on the container nodes 304 and managing the cluster configuration. In accordance with one or more embodiments of the present invention, the master node 306 implements the CDLM 302 described herein.

[0070] In the illustrated embodiment, worker nodes 304A-304D include respective node monitors 312A-312D. In some embodiments, node monitors 312A-312D monitor user input to their respective nodes 304A-304D to detect user input including a request to install a locale. In some such embodiments, node monitor 312 reports the detected user input to CDLM 302 in master node 306 via API server 308 if the user input includes a request to install a locale.

[0071] 4, a block diagram of an exemplary CDLM 400 according to an exemplary embodiment is shown. In a particular embodiment, the CDLM 400 is an example of the CDLM 302 of FIG.

[0072] In the illustrated embodiment, CDLM 400 includes a CDLM manager 402, a CDLM tracker 404, a CDLM calculator 406, and a CDLM agent 408. CDLM manager 402 includes a fileset repository 414 that stores all language-locale packages available for installation. CDLM manager 402 also includes a service profile updater 410 and a user profile updater 412. Service profile updater 410 includes a CDLM algorithm updater 416 and a CDLM data structure updater 418. CDLM tracker 404 includes an installed locale list 420. In alternative embodiments, CDLM 400 may include some or all of the functionality described herein but grouped differently into one or more modules. In some embodiments, the functionality described herein is distributed among multiple systems, which may include a combination of software- or hardware-based systems, such as, for example, application-specific integrated circuits (ASICs), computer programs, or smartphone applications.

[0073] In the illustrated embodiment, the CDLM 400 communicates with the container node 422 and the management device 430 via an API server 428. In the illustrated embodiment, the user device 432 communicates with the container node 422 via a network connection.

[0074] In the illustrated embodiment, CDLM manager 402 allows a user or administrator to set and change on-demand criteria, for example, via management device 430. In the illustrated embodiment, service profile updater 410 of CDLM manager 402 updates and saves the criteria in service profile 410. The on-demand criteria include a rule or set of rules for adding a locale to the installation list. In some embodiments, the on-demand criteria include a demand threshold. A non-limiting example of an on-demand criteria for adding a locale to the installation list is requiring three or more regular user requests for the locale within an hour. In some embodiments, the criteria may be for a single user, a group of users, or other user designations. In some embodiments, once the criteria are met, CDLM data structure updater 418 of CDLM manager 402 updates the CDLM data structure stored in service profile 410 to track the locale on the installation list so that CDLM agent 408 automatically installs the locale when a specified user or group launches a container or application on container 422. In some embodiments, when the criteria are met, the CDLM manager 402 updates the installed locales list 424 on the container 422 to include the locale on the install list so that the CDLM agent 408 automatically installs the locale when the specified user or group launches a container or application on the container 422.

[0075] In some embodiments, CDLM manager 402 tracks on-demand criteria, such as demand thresholds, specified by a user via management device 430. For example, in some embodiments, service profile updater 410 saves the on-demand criteria in a service profile. In some such embodiments, fileset repository 414 stores and makes accessible to CDLM 400 locales not installed by default on the container instance (i.e., all language locale packages that can be installed on the cloud node but are not currently installed), user profiles containing user locale preferences, and a list of locales already installed on the container instance.

[0076] In some embodiments, CDLM tracker 404 tracks locale request information by monitoring user input to container node 422, for example, to detect user input including a request to install a locale. In some embodiments, CDLM tracker 404 tracks locale request information in real time or near real time. For example, if CDLM tracker 404 detects user input such as "LANG=ja_JP" (or a similar language locale request command) and then runs the application, the information indicates that the user requires a specified language locale, which is tracked by CDLM tracker 404.

[0077] In some embodiments, the CDLM calculator 406 calculates the demand score by dynamically updating the demand score associated with a locale based on ongoing detection by the CDLM tracker 404 of locale installation requests, for example, while monitoring user input. In some embodiments, the CDLM 400 allows a user to define and modify the algorithm that calculates the locale demand score for each of the containers 422. In some such embodiments, the CDLM calculator 406 may weight requests by certain designated users or user groups (e.g., root users or VIP groups) higher than requests by other users for purposes of calculating demand.

[0078] In some embodiments, CDLM data structure updater 418 of CDLM manager 402 updates the CDLM data structure stored in fileset repository 414 to include the locale on the install list so that CDLM agent 408 automatically installs the locale. In some embodiments, CDLM agent 408 automatically installs the locale on the install list when the application is launched in the cloud computing environment.

[0079] In the illustrated embodiment, container 422 includes a node monitor 426. In some embodiments, node monitor 426 monitors user input to container 422 to detect user input that includes a request to install a locale. In some such embodiments, node monitor 426 reports the detected user input to CDLM 400 via API server 428 if the user input includes a request to install a locale.

[0080] 5, a diagram illustrating a table 500 of historical container node usage data, according to an example embodiment, is shown. In some embodiments, the data in table 500 is generated by a CDLM, such as CDLM 400 of FIG.

[0081] The illustrated embodiment shows historical data for a single container (container ID C00001) over four time periods corresponding to four rows Time-1 through Time-4, with each row representing, for example, three hours. Actual historical data may include information for many more time periods and may include historical data for many more containers, but for illustrative purposes, this example shows 12 hours of information for a single container. As a non-limiting example, a requirement for container C00001 to add a locale to the install list is that its demand score must be 2.0 or greater.

[0082] In the illustrated embodiment, in addition to a container ID column listing unique identifiers for containers associated with other data in the corresponding row, each row includes a time column 502 for indicating the time period associated with the row, an installed locale list column 504 for indicating locales automatically installed in the associated container, a preferred access geographic location column 506 for indicating the geographic region from which the user accessed the associated container, an uninstalled locale column 508 for indicating the total number of uninstalled locales requested by locale for each time zone, a primary locale column 510 for indicating the user's primary language, and a CDLM score column 512 for listing the CDLM score for each time zone for the container ID, which is a unique identifier for the container associated with the other data. Actual historical data may include many more columns of different types of data. In some embodiments, a CDLM tracker (e.g., CDLM tracker 404 in FIG. 4 ) collects the data in columns 504-510, and a CDLM calculator (e.g., CDLM calculator 406 in FIG. 4 ) calculates the CDLM score in column 512.

[0083] In the illustrated embodiment, during time period Time-1, the data indicates that the already installed USA locale is being used, but the Japan locale is not being requested, so CDLM tracker 404 continues tracking. During time periods Time-2 and Time-3, the number of users requesting the uninstalled Japan locale increases, but the CDLM score does not reach the CDLM score threshold of 2.0. During time period Time-4, the number of users requesting the uninstalled Japan locale continues to increase, and the CDLM score reaches 2.2, exceeding the score threshold of 2.0. As a result, the Ja_JP.IBM-943 locale, which corresponds to the Japan locale that exceeds the CDLM threshold, is automatically added to the installation list.

[0084] 6, a flowchart of an example process 600 for demand-driven locale management is shown, in accordance with an example embodiment. In some embodiments, process 600 is performed by a CDLM deployed in a cloud computing environment, such as CDLM 302 of cloud computing environment 300 of FIG. 3 or CDLM 400 of FIG. 4.

[0085] In an embodiment, at block 602, the process establishes a demand threshold for adding a locale to the installation list based at least in part on selection data indicating input from a user.

[0086] In an embodiment, at block 604, the process monitors user input to the cloud computing environment to detect user input including a request to install a locale, and detects user input including a request to install a locale.

[0087] In an embodiment, the process determines whether a locale request has been made at block 606. If not, the process continues monitoring at block 604.

[0088] In an embodiment, if the process detects a locale request at block 606, the process proceeds to block 608, where the process updates the demand score associated with the locale based on the ongoing detection of a locale installation request while monitoring user input.

[0089] In an embodiment, the process determines whether the demand threshold (or CDLM threshold) value has been met at block 610. If not, the process continues monitoring at block 604.

[0090] In an embodiment, if the process determines in block 610 that the demand threshold (or CDLM threshold) value has been reached, the process proceeds to block 612, where the process automatically adds the locale to the installation list upon detecting that the demand score has been met.

[0091] In an embodiment, at block 614, the process automatically installs the locales on the installation list when the application is launched in the cloud computing environment.

[0092] The following definitions and abbreviations shall be used for interpreting the claims and the specification. As used herein, the terms "comprises," "comprising," "includes," "including," "has," "having," "contains," or "containing," or other variations thereof, are intended to cover non-exclusive inclusions. For example, a composition, mixture, process, method, product, or device consisting of a list of elements is not necessarily limited to only those elements, but may include other elements not expressly listed or inherent in such composition, mixture, process, method, product, or device.

[0093] Moreover, the word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" are understood to include any integer number greater than or equal to one, i.e., 1, 2, 3, 4, etc. The term "plurality" is understood to include any integer number greater than or equal to two, i.e., 2, 3, 4, 5, etc. The term "connected" can include an indirect "connected" and a direct "connected."

[0094] References herein to "one embodiment," "embodiment," "exemplary embodiment," etc., are intended to indicate that the described embodiment may include a particular feature, structure, or characteristic, but that all embodiments may or may not include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is believed to be within the knowledge of one of ordinary skill in the art to affect such feature, structure, or characteristic in connection with other embodiments, whether or not explicitly stated.

[0095] The terms "about," "substantially," and "approximately," as well as variations thereof, are intended to include the degree of error associated with measurement of a particular quantity based on equipment available at the time of filing. For example, "about" can include a range of ±8%, 5%, or 2% of a given value.

[0096] The description of various embodiments of the present invention has been presented for purposes of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used herein have been selected to best explain the principles of the embodiments, practical applications or technical improvements over technology found in the market, or to enable those skilled in the art to understand the embodiments described herein.

[0097] The description of various embodiments of the present invention has been presented for purposes of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used herein have been selected to best explain the principles of the embodiments, practical applications or technical improvements over technology found in the market, or to enable those skilled in the art to understand the embodiments described herein.

[0098] Thus, computer-implemented methods, systems or apparatus, and computer program products for managing participation in online communities and other related features, functions, or operations are provided in exemplary embodiments. Where an embodiment or portion thereof is described in terms of a type of apparatus, the computer-implemented method, system or apparatus, computer program product, or portion thereof, is adapted or configured for use with appropriate and equivalent manifestations of that type of apparatus.

[0099] When embodiments are described as being implemented in an application, delivery of the application in a software-as-a-service (SaaS) model is contemplated within the scope of exemplary embodiments. In the SaaS model, the functionality of an application implementing an embodiment is provided to users by running the application on a cloud infrastructure. Users can access the application using a variety of client devices through a thin-client interface, such as a web browser (e.g., web-based email) or other lightweight client application. Users do not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage of the cloud infrastructure. In some cases, users do not manage or control the functionality of the SaaS application. In some other cases, a SaaS implementation of an application may allow for possible exceptions to limited user-specific application configuration settings.

[0100] The present invention may be a system, method, or computer program product, or combination thereof, integrated at any possible level of technical detail. The computer program product may include a computer-readable storage medium having stored thereon computer-readable program instructions for causing a processor to carry out aspects of the present invention.

[0101] A computer-readable storage medium may be a tangible device capable of retaining and storing instructions for use by an instruction execution device. The computer-readable storage medium may be, by way of example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or a suitable combination thereof. More specific examples of computer-readable storage media include portable computer diskettes, hard disks, RAM, ROM, EPROM (or flash memory), SRAM, CD-ROMs, DVDs, memory sticks, floppy disks, mechanically encoded devices having instructions recorded on punch cards or ridge-in-groove structures, or the like, and suitable combinations thereof. Computer-readable storage devices, as used herein, should not be construed as ephemeral signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted over wires.

[0102] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computer / processing device. Alternatively, they can be downloaded to an external computer or external storage device via a network (e.g., the Internet, a LAN, a WAN, or a wireless network, or a combination thereof). The network can include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface within each computer / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions to a computer-readable storage medium in the respective computer / processing device for storage.

[0103] The computer-readable program instructions for carrying out the operations of the present invention can be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk and C++, and procedural programming languages such as the "C" programming language and similar programming languages. The computer-readable program instructions can execute entirely on the user's computer as a stand-alone software package, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a LAN or WAN, or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry, including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), programmable logic arrays (PLAs), can execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to customize the electronic circuitry for carrying out aspects of the present invention.

[0104] Embodiments of the present invention are described herein with reference to flowchart and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present invention. Each block of the flowchart and / or block diagrams, and combinations of blocks in the flowchart and / or block diagrams, can be implemented by computer-readable program instructions.

[0105] The computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, whereby the instructions, executed by the processor of such computer or other programmable data processing apparatus, create means for performing the functions / acts identified in one or more blocks of the flowcharts and / or block diagrams. The computer-readable program instructions may also be stored on a computer-readable storage medium capable of instructing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner. The computer-readable storage medium having instructions stored thereon thereby constitutes an article of manufacture including instructions for performing aspects of the functions / acts identified in one or more blocks of the flowcharts and / or block diagrams.

[0106] Computer-readable program instructions may also be loaded into a computer, other programmable device, or other device and a series of operational steps executed on the computer, other programmable device, or other device to create a computer-implemented process, whereby the instructions executing on the computer, other programmable device, or other device perform the functions / operations identified in one or more blocks in the flowcharts and / or block diagrams.

[0107] The flowcharts and block diagrams in the figures of this disclosure illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for performing specific logical functions. In some implementations, the functions shown in the blocks may be executed in a different order than shown in the figures. For example, two blocks shown in succession may actually be executed concurrently or nearly concurrently, or may even be executed in reverse order, depending on the functionality involved. Note that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented by a dedicated hardware-based system that performs specific functions or operations or executes a combination of dedicated hardware and computer instructions.

[0108] Embodiments of the present invention may also be provided as part of a service engagement with a client company, a non-profit organization, a government agency, an internal organizational structure, or the like. Aspects of these embodiments may include configuring a computer system to perform some or all of the methods described herein and deploying implementing software, hardware, and web services. Aspects of these embodiments may also include analyzing a client's operations, generating recommendations responsive to the analysis, building a system that implements some of the recommendations, integrating the system into existing processes and infrastructure, metering system usage, allocating costs to users of the system, and charging for system usage. Although embodiments of the present invention have been described above, each describing its individual advantages, the present invention is not limited to any particular combination thereof. Rather, such embodiments may be combined in any manner and number, depending on the intended deployment of the present invention, without losing their beneficial effects.

Claims

1. A method comprising: a computer setting a demand threshold for adding locales to an installation list based at least in part on selection data indicating input from a user; a computer monitoring user input to a cloud computing environment to detect user input including a request to install the locale; the computer dynamically updating a demand score associated with the locale based on ongoing detection of a locale installation request during said monitoring of user input; and automatically adding the locale to the installation list when the computer detects that the demand score meets the demand threshold.

2. The method of claim 1, further comprising automatically installing locales in the installation list when the computer launches an application in the cloud computing environment.

3. The method of claim 1, further comprising: when the computer detects that there has been no request to install the locale for a certain period of time, decreasing the demand score.

4. The method of claim 1 , wherein the selection data specifies a group of users, and the updating of the demand score is based on ongoing detection of locale installation requests from the group of users.

5. The method of claim 4, further comprising: a computer automatically installing the locale while it is in the installation list when any user in the user's group launches the application in the cloud computing environment.

6. The updating of the demand score includes: Detecting a user characteristic associated with the detected request to install the locale; and increasing the demand score based on the detected user characteristics.

7. The method of claim 6 , wherein the detecting the user characteristics includes detecting a root user.

8. The method of claim 7 , wherein the increasing the demand score based on the detected user characteristics comprises increasing the demand score by a greater amount than an increase for a non-root user.

9. The method of claim 1 , wherein the monitoring of the user input occurs during a time period specified by the selection data.

10. A computer detecting that the demand score meets the demand threshold; 10. The method of claim 1, further comprising: in response to a computer detecting that the demand score meets the demand threshold, verifying that the locale is not already included in the install list and that the locale is not included in a default locale list.

11. A computer program comprising program instructions executable by a processor to cause the processor to perform an operation, the operation being: setting a demand threshold for adding locales to the installation list based at least in part on selection data indicative of input from a user; monitoring user input to a cloud computing environment to detect user input including a request to install the locale; dynamically updating a demand score associated with the locale based on ongoing detection of a locale installation request during said monitoring of user input; automatically adding the locale to the installation list upon detecting that the demand score meets the demand threshold.

12. The computer program comprising program instructions collectively stored on one or more computer-readable storage media; 12. The computer program product of claim 11, wherein the stored program instructions are stored in a computer-readable storage device within a data processing system, and wherein the stored program instructions are transferred over a network from a remote data processing system.

13. The computer program comprising program instructions collectively stored on one or more computer-readable storage media; the stored program instructions are stored in a computer readable storage device within a server data processing system, and the stored program instructions are downloaded in response to a request over a network to a remote data processing system for use in a computer readable storage device associated with the remote data processing system; program instructions for measuring usage of said program instructions associated with said request; The computer program of claim 11 , further comprising program instructions for generating a bill based on the measured usage.

14. The computer program product of claim 11 , further comprising automatically installing the locales in the installation list when launching an application in the cloud computing environment.

15. The computer program of claim 11 , further comprising decreasing the demand score upon detecting no requests to install the locale for a period of time.

16. 12. The computer program product of claim 11, wherein the selection data specifies a group of users, and the updating of the demand score is based on ongoing detection of locale installation requests from the group of users.

17. 1. A computer system including a processor, one or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media, the program instructions executable by the processor to cause the processor to perform operations, the operations including: setting a demand threshold for adding locales to the installation list based at least in part on selection data indicative of input from a user; monitoring user input to a cloud computing environment and detecting user input including a request to install the locale; dynamically updating a demand score associated with the locale based on ongoing detection of a locale installation request during said monitoring of user input; automatically adding the locale to the installation list upon detecting that the demand score meets the demand threshold.

18. The computer system of claim 17 , further comprising automatically installing the locales in the installation list when launching an application in the cloud computing environment.

19. 18. The computer system of claim 17, further comprising decreasing the demand score upon detecting no requests to install the locale for a period of time.

20. 20. The computer system of claim 17, wherein the selection data specifies a group of users, and the updating of the demand score is based on ongoing detection of locale installation requests from the group of users.

Citation Information

Patent Citations

  • Method for consistent configuration of language support between operating system and application program, and computer-readable medium

    JP2006099766A

  • Rules-based language detection

    US20150161114A1

  • Cognitive collation configuration for enhancing multilingual data governance and management

    US20200125634A1

  • Creating a virtual appliance using existing installation manifest

    US8990809B1