BR112015005588B1 - Sistema e método implementado por computador para perfilamento de utilização de recursos de computação. - Google Patents

Sistema e método implementado por computador para perfilamento de utilização de recursos de computação. Download PDF

Info

Publication number
BR112015005588B1
BR112015005588B1 BR112015005588-5A BR112015005588A BR112015005588B1 BR 112015005588 B1 BR112015005588 B1 BR 112015005588B1 BR 112015005588 A BR112015005588 A BR 112015005588A BR 112015005588 B1 BR112015005588 B1 BR 112015005588B1
Authority
BR
Brazil
Prior art keywords
virtual machine
computing device
computer
profile
instance
Prior art date
Application number
BR112015005588-5A
Other languages
English (en)
Other versions
BR112015005588A2 (pt
Inventor
Michael David Marr
Matthew D. Klein
Original Assignee
Amazon Technologies , Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/623,847 external-priority patent/US9135048B2/en
Priority claimed from US13/623,845 external-priority patent/US9323577B2/en
Application filed by Amazon Technologies , Inc filed Critical Amazon Technologies , Inc
Publication of BR112015005588A2 publication Critical patent/BR112015005588A2/pt
Publication of BR112015005588B1 publication Critical patent/BR112015005588B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

sistema e método implementado por computador para perfilamento de utilização de recursos de computação perfis de operação para consumidores de recursos de computação podem ser automaticamente determinados com base em análise de medições de utilização de recurso real e outras métricas operaci-onais. as medições podem ser tomadas enquanto um consumidor, como uma instância de máquina virtual, usa recursos de computa-ção, como aqueles fornecidos por um hospedeiro. um perfil pode ser dinamicamente determinado com base nestas medições. os perfis podem ser generalizados de tal modo que os grupos de consumidores com perfis de usos semelhantes são associados com um perfil único. decisões de designação podem ser feitas com base nos perfis, e recursos de computação podem ser realocados ou sobre subscritos se o perfil indica que os consumidores provavel-mente usam totalmente os recursos reservados para estes. recursos de sobre subscritos podem ser monitorados, e os consumidores podem ser transferidos para diferentes fornecedores de recursos se a contenção para os recursos é muito alta.

Description

FUNDAMENTOS
[0001] Geralmente descrito, dispositivos de computação utilizam uma rede de comunicação, ou uma série de redes de comunicação, para troca de dados. As empresas e as organizações operam redes de computadores que interligam uma série de dispositivos de computação para apoiar as operações ou prestar serviços a terceiros. Os sistemas de computação podem ser localizados em uma única localização geográfica ou localizados em vários locais geográficos distintos (por exemplo, interligados através de redes de comunicação públicas ou privadas). Especificamente, os centros de dados ou centros de processamento de dados, aqui geralmente referidos como "centros de dados," podem incluir uma série de sistemas de computação interligados para fornecer recursos de computação para os usuários do centro de dados. Os centros de dados podem ser centros de dados privados operados em nome de uma organização ou centros de dados públicos geridos em nome de, ou para o beneficio de, público em geral.
[0002] Para facilitar o aumento da utilização dos recursos do centro de dados, tecnologias de virtualização podem permitir que um único dispositivo de computação hospedeiro fisico hospede uma ou mais configurações de instância de instâncias de máquina virtual que aparecem e operam dispositivos de computação como independentes para os usuários de um centro de dados. Com a virtualização, o dispositivo de computação único hospedeiro fisico pode criar, manter, eliminar ou gerir de outra forma instâncias de máquina virtual de forma dinâmica. Por sua vez, os usuários podem solicitar dispositivos de computação únicos ou uma configuração de dispositivos de computação em rede, e estar equipados com números variados de recursos de máquinas virtuais.
[0003] Os recursos de computação fornecidos pelos dispositivos de computação hospedeiros podem incluir a capacidade de computação, memória e outros de armazenamento, largura de banda, e outros semelhantes. Em um ambiente de centro de dados com milhares de dispositivos de computação hospedeiros, umainstância de uma máquina virtual pode ser instanciada em um dispositivo de computação hospedeiro aleatório, desde que o dispositivo de computação hospedeiro atinja critérios como recursos de computação de dispositivos suficientes e disponíveis (por exemplo, unidades de processamento, memória, e semelhantes) . Uma vez que um exemplo de uma máquina virtual é instanciado em um dispositivo de computação hospedeiro fisico, uma quantidade predeterminada de um ou mais recursos de computação pode ser reservada para uso, por exemplo, a máquina virtual. Um provedor de recursos de computação ou outro operador do ambiente de centro de dados pode garantir a disponibilidade, para a instância da máquina virtual, os valores reservados de recursos de computação no dispositivo de computação alvo.
BREVE DESCRIÇÃO DOS DESENHOS
[0004] Ao longo dos desenhos, números de referência podem ser reutilizados para indicar a correspondência entre os elementos referenciados. Os desenhos são proporcionados para ilustrar modalidades exemplificativas aqui descritas e não se destinam a limitar o escopo da revelação.
[0005] A FIG. 1 é um diagrama de blocos de um ambiente de computação de rede ilustrativa incluindo um componente de gestão, múltiplos dispositivos de computação hospedeiros, e múltiplos clientes.
[0006] A FIG. 2 é um diagrama de blocos de um componente de gestão ilustrativo incluindo vários módulos de componentes e de armazenagem.
[0007] A FIG. 3 é um diagrama de fluxo de um processo ilustrativo para perfilar automaticamente a utilização de recursos de computação.
[0008] A FIG. 4 é um diagrama de blocos de um dispositivo de computação hospedeiro ilustrativos hospedando máquinas virtuais que utilizam recursos de computação disponibilizados pelo dispositivo de computação.
[0009] A FIG. 5 é um diagrama de fluxo de um processo ilustrativo para o lançamento de máquinas virtuais em dispositivos de computação hospedeiros, recursos de computação de alocação e excesso de subscrições, e migrando atualmente em execução de máquinas virtuais, a fim de otimizar ainda mais a utilização de recursos de computação.
[0010] A FIG. 6 é um diagrama de blocos de um dispositivo de computação hospedeiros ilustrativo no qual vários recursos de computação são sobre subscritos e excesso de capacidade permanece disponível.
[0011] A FIG. 7 é um diagrama de blocos de um dispositivo de computação hospedeiro ilustrativos em que os vários recursos de computação são substancialmente sobre subscritos devido à utilização de recursos minimos de cada máquina virtual em execução sobre o dispositivo de computação hospedeiro.
[0012] A FIG. 8 é um diagrama de blocos de uma migração ilustrativa de uma máquina virtual de um dispositivo de computação hospedeiro para outro dispositivo de computação hospedeiro devido a sobre subscrições e uma falta de capacidade de recursos de computação disponíveis.
DESCRIÇÃO DETALHADA
[0013] De um modo geral descrita, a presente invenção se refere à utilização de recursos de computação. Especificamente, a divulgação se refere a determinar automaticamente a utilização de recursos e perfis de métricas de operação para os consumidores de recursos de computação com base em uma análise de medições de utilização de recursos reais e outras métricas operacionais. Em algumas modalidades, um consumidor de recursos de computação, como uma instância de uma máquina virtual instanciada de acordo com as especificações do cliente (por exemplo: uma instância de máquina virtual instanciada uma imagem de máquina virtual configurada com um sistema operacional e aplicativos de software de acordo com as especificações do cliente), pode ser instanciada em um dispositivo de computação hospedeiro fisico. A instância de máquina virtual pode consumir vários recursos de computação com base na execução de programas de software de computadores ou uma mais ou outras cargas de trabalho pela instância de máquina virtual. A instância de máquina virtual pode, em seguida, terminar a execução ou não ser configurado para uma finalidade diferente.
[0014] Para as entidades especificas, como um cliente ou grupo de clientes, o processo de instanciar instâncias de máquinas virtuais pode ser repetido. Como parte do processamento do ciclo de vida da instância de máquina virtual, um prestador de serviços associado ao fornecimento das instâncias de máquinas virtuais pode observar e registrar consumo de recursos. O prestador de serviços pode, então, determinar a utilização de recursos de instância da máquina virtual e perfil métrico em operação com base em medições de consumo de recursos de processamento e outras informações métricas operacionais.
[0015] Outros aspectos da divulgação se referem a generalização do uso de recursos e perfis métricos em operação, geralmente referidos como perfis operacionais. Por exemplo, milhares ou mais das instâncias de máquinas virtuais podem ser instanciadas e podem utilizar os recursos em um único ambiente de computação de rede, como um centro de dados. Ao invés de determinar e manter perfis operacionais personalizados separados para cada instância de máquina virtual, instâncias de máquinas virtuais podem ser atribuídas a perfis operacionais generalizados ou padrão. Deste modo, grupos de instâncias de máquinas virtuais podem ser classificados de acordo com uma variedade de critérios de organização e atribuídos ao mesmo perfil de operação. Em alguns casos, os perfis de operação podem ser hierárquicos, de tal modo que um exemplo de configuração da máquina virtual em particular está associado com um perfil de operação em particular, e também com um perfil de operação mais geral que está associado às configurações de instância de máquina virtual múltiplas. Pode haver vários niveis na hierarquia, com potencialmente milhares de configurações de instâncias de máquinas virtuais associadas a um único perfil geral operacional ou um pequeno número de operações de perfis de nivel superior, e um maior número de operações de perfis mais específicos em cada nivel dentro da hierarquia. No nivel inferior da hierarquia pode ser um perfil de operação particular associado com uma configuração de instância de máquina virtual única como utilizada por um cliente particular.
[0016] Outros aspectos da divulgação se referem à identificação de um dispositivo de computação hospedeiro alvo para fornecer recursos de computação para instâncias de máquinas virtuais com base em um perfil de operação determinado automaticamente. Em algumas formas de realização, aos dispositivos de computação hospedeiros fisicos podem ser configurados para fornecer recursos de computação alvo para múltiplas instâncias de máquinas virtuais simultaneamente. Uma quantidade predeterminada de um recurso de computação pode ser reservada para uso por uma única instância de máquina virtual. Quando o perfil de operação para uma instância de máquina virtual indica que a instância da máquina virtual provavelmente não vai consumir recursos de dispositivo de computação que foram reservados para a instância, o dispositivo de computação hospedeiro pode instanciar instâncias adicionais de máquina virtual. As instâncias adicionais da máquina virtual podem ser associadas com, ou têm acesso a, recursos de dispositivos de computação hospedeiros simultaneamente com as instâncias de máquinas virtuais previamente instanciadas. Além disso, se qualquer uma das instâncias de máquinas virtuais ou de outro modo restringe o consumo ao acesso a um recurso de tal modo que o consumo atende ou excede um ou mais limites especificados em um perfil de operação para a instância de máquina virtual, uma ou mais das instâncias de máquinas virtuais podem ser transferidas para outro dispositivo de computação hospedeiro. Por exemplo, o exemplo de máquina virtual associada com o consumo que excede um limiar pode ser transferido, ou outras instâncias de máquinas virtuais podem ser transferidas.
[0017] Alguns recursos de computação não são necessariamente fornecidos pelos dispositivos de computação hospedeiros, mas sim são recursos fora do hospedeiro. Por exemplo, a topologia da rede pode exigir comunicações de um dispositivo de computação hospedeiro para um segundo dispositivo de computação hospedeiro para atravessar uma ou mais ligações (por exemplo, conexões de rede entre switches e outros componentes de rede). 0 número de ligações pode ser diferente para comunicações com um terceiro dispositivo de computação hospedeiro. Os dados referentes à ligação de tráfego e o número de ligações que as comunicações percorrerão entre os hospedeiros podem ser contabilizados como uma medição do consumo de recursos ou métrica em operação. Os dados podem ser utilizados no futuro para determinar em que dispositivo de computação hospedeiro instanciar uma instância de máquina virtual que pode se comunicar com um outro dispositivo de computação hospedeiro. Além disso, o consumo de alguns recursos de computação não necessariamente reduz a quantidade do recurso que está disponível para outras instâncias de máquinas virtuais ou consumidores em geral. Por exemplo, uma característica é fornecida por um dispositivo de computação hospedeiro, como um conjunto de instruções em particular, pode ser geralmente referido como um recurso de computação. Uso do conjunto de instruções, no entanto, não reduz necessariamente a disponibilidade do conjunto de instruções para outra instância de máquina virtual, aplicativo ou outro consumidor.
[0018] Embora os aspectos das modalidades descritas na descrição incidirão, para o propósito de ilustração, em relações e as interações entre um componente de gestão, os dispositivos de computação de servidor e máquinas virtuais instanciadas sobre os dispositivos de computação de servidor em nome dos clientes, um especialista na técnica irá apreciar que as técnicas aqui descritas podem ser aplicadas a qualquer número de processos ou aplicações de hardware ou de software. Por exemplo, enquanto instâncias de máquinas virtuais serão geralmente usadas como o consumidor ilustrativo de recursos de computação, outrosprogramas ou cargas de trabalho podem ser substituídos software de aplicação, os sistemas operacionais, nós de rede de área de armazenamento (SAN), e semelhantes. Além disso, enquanto os recursos de computação, como a memória, a capacidade da CPU, e a largura de banda da rede serão usados como os recursos de computação ilustrativos, outros recursos de computação podem ser substituídos, como o tráfego de ligação de rede, a latência, conjuntos de instruções de processador, e outros semelhantes. Além disso, embora os vários aspectos da presente descrição sejam descritos em relação a exemplos ilustrativos e modalidades, um especialista na técnica irá apreciar que as modalidades descritas e os exemplos não devem ser interpretados como limitativos. Vários aspectos da descrição serão agora descritos em relação a certas modalidades e exemplos, que são destinados a ilustrar, mas não limitar a revelação.
[0019] A FIG. 1 ilustra um ambiente de computação de rede de exemplo 100 em que perfilamento automatizado de utilização de recursos e alocação de recursos com base nesses perfis pode ser aplicado. Perfilamento operacional e alocação de recursos podem ser baseados em medições anteriores de utilização real de recursos e outras métricas operacionais, e também sobre a utilização futuro esperado de recursos. Um ambiente de computação de rede 100 pode incluir um componente de gestão 102 e qualquer número de dispositivos de computação hospedeiros fisicos 104a - 104n em comunicação através de uma rede 110. Um ou mais clientes 122 podem se comunicar com os componentes do ambiente de computação da rede 100 através de uma rede 120.
[0020] Os ambientes de computação de rede 100, como o ilustrado na FIG. 1 podem ser implementados em centros de dados e outros ambientes nos quais os vários dispositivos de de computação a clientes internos ou externos 122. Como descrito em mais detalhe abaixo, cada cliente 122 pode conectar-se ao componente de gestão 102 ou algum outro componente dentro do ambiente de computação de rede 100 para iniciar processos de computação. 0 inicio dos processos de computação pode incluir instanciação de uma instância de máquina virtual em um dispositivo de computação hospedeiro 104 ou a configuração de um ambiente operacional e um ou mais aplicativos de software. A instância de máquina virtual pode executar, em nome do usuário, consumir recursos de computação do dispositivo de computação hospedeiro 104, a rede 110, e semelhantes. Enquanto a presente descrição focará, para fins de ilustração apenas, sobre a operação de um ambiente de computação de rede 100 que fornece serviços de computação a clientes externos ou internos 122 através da utilização de máquinas virtuais, os sistemas e processos aqui descritos podem aplicar-se a qualquer aplicação de um ambiente de computação de rede de 100, incluindo um sem nenhuma entidade cliente 122 separada ou sem a utilização da máquina virtual.
[0021] Cada dispositivo hospedeiro de computação 104 pode ser um computador servidor, como um servidor blade. Opcionalmente, dispositivo de computação hospedeiro 104 pode ser um dispositivo de computação de médio porte, um computador de grande porte, um computador desktop, ou qualquer outro dispositivo de computação configurado para fornecer serviços e recursos de computação para vários consumidores, como instâncias de máquinas virtuais, simultaneamente. Em uma implementação tipica, um dispositivo de computação hospedeiro 104 pode ser configurado para se comunicar componente de gestão 102, ou algum outro componente do ambiente de computação de rede 100 através de uma rede 110.
[0022] A rede 110 pode ser uma rede de área local (LAN), uma rede de área ampla (WAN) , outra rede, ou uma combinação das mesmas. Além disso, a rede de ambiente de computação 100 pode se conectar a outra rede 120, como uma rede corporativa ou de universidade, ou uma coleção de redes operadas por entidades independentes, como a Internet. Clientes 122 do ambiente de computação de rede 100 podem se comunicar com dispositivos de computação hospedeiro 104 através da combinação das redes 120, 110. Em algumas modalidades, os clientes 122 podem fazer um dispositivo de computação 102 iniciar uma instância de máquina virtual para executar várias operações de computação para ou em nome do cliente 122. Qualquer número de instâncias de máquinas virtuais pode estar em execução em um único dispositivo de computação hospedeiro 104 em um determinado momento. Além disso, as várias instâncias de máquinas virtuais executando em um dispositivo de computação hospedeiro 104 podem ser associadas a um único cliente 122 ou com um número de diferentes clientes 122.
[0023] O componente de gestão 102 pode ser implementado comohardware ou como uma combinação de hardware e software. Por exemplo, o componente de gestão 102 pode ser um sistema de computação de um ou mais dispositivos de computação configurados para executar um ou mais programas de software para executar as funções aqui descritas. Em algumas modalidades, o componente de gestão pode incluir um ou mais dos dispositivos de computação hospedeiro 104a -104n.
[0024] A FIG. 2 ilustra um componente de gestão da amostra 102 em maior detalhe. O componente de gestão 102 podem incluir um módulo de determinação de perfil 202, um módulo de posicionamento 204, um módulo de migração 206, um armazenamento de dados de métrica em operação 208, e um armazenamento de dados de perfil 210. Em algumas modalidades, o componente de gestão 102 pode incluir mais ou menos módulos e armazenamentos de dados do que os ilustrados na FIG. 2. Por exemplo, pode não haver módulo de migração separado 206, quando o recurso de migração não é implementado, ou implementado pelo módulo de posicionamento 204. Em outras modalidades exemplares, pode haver armazenamentos de dados adicionais para os perfis de clientes generalizados.
[0025] Em operação, o módulo de determinação de perfil 202 pode obter dados operacionais sobre métricas operacionais e utilização de recursos por instâncias de uma configuração de instância de máquina virtual especifica em um determinado momento, de todas as instâncias de máquinas virtuais associadas a um determinado cliente 122, etc. O perfil de módulo de determinação 202 pode analisar os dados operacionais e desenvolver um perfil de operação dos recursos de computação utilizados pela instância de máquina virtual ou grupo de instâncias de máquinas virtuais sendo perfilado. Por exemplo, os dados de operação podem incluir medições históricas relativas à quantidade de memória utilizada, a utilização da unidade de processamento central (CPU), a quantidade de tráfego de rede recebido ou transmitido, a quantidade de espaço de disco rigido utilizado, o número operações em de disco, a quantidade de eletricidade utilizada (por exemplo: a quantidade utilizada pelo dispositivo de computação hospedeiro 104 que pode ser atribuível à instância de máquina virtual), a quantidade de tráfego de ligação de rede iniciada, e semelhantes. O módulo de determinação de perfil 202 pode, então, determinar uma média para cada uma das medições associadas com as instâncias de uma configuração de instância de máquina virtual especifica ou grupo de configurações de instância de máquina virtual, e armazenar as médias no perfil de operação. O perfil de operação não necessita ser limitado a valores médios. Por exemplo, o perfil de operação pode incluir outras análises estatísticas, como a média, o desvio padrão, o histograma de utilização ou quaisquer outros dados necessários ou úteis. Em algumas modalidades, o perfil de operação pode, ainda, ser caracterizado de acordo com as características temporais do uso, como a hora do dia, dia do ano, etc.
[0026] O perfil de operação também pode ser caracterizado de acordo com as medições esperadas e métricas operacionais. Por exemplo, uma variação de um parâmetro de desempenho esperado, geralmente referida como instabilidade, pode ser observada e incluída no perfil de operação. Tais dados podem ser usados para determinar se os objetivos do projeto, acordos de nivel de serviço e outras promessas ou obrigações para o consumidor estão sendo atendidas ou para determinar quantas vezes eles deixam de ser cumpridos. O módulo de posicionamento 204 pode ser responsável por instabilidade na tomada de decisões de posicionamentos futuros, procurando assegurar que a mesma métrica operacional não vai cair fora da faixa esperada ou não garantir que as obrigações dos consumidores estão satisfeitas. Em algumas modalidades, o perfil de operação pode conter outros dados, como preferências ou requisitos de latência, preferências de conjuntos de instruções ou requisitos, e outros semelhantes. Tais dados podem ser fornecidos pelos consumidores ou determinados através da análise de operação de instância de máquina virtual pelo módulo de determinação do perfil 202.
[0027] Ilustrativamente, um prestador de serviços pode fornecer três classes de máquinas virtuais: pequena, média e grande porte. Cada classe pode ser associada com uma quantidade pré-determinada de cada um dos recursos de computação que será reservado para uso por instâncias da máquina virtual (por exemplo: VMs pequenas podem ter 2 GB RAM, VMs médias podem ter 8 GB RAM, VMs grandes podem ter 32 GB RAM) . Os clientes podem instanciar instâncias de uma máquina virtual configurada com um sistema operacional e aplicativo de software, como uma grande máquina virtual configurada com software de servidor de web. As medições podem ser registradas em relação ao uso de recursos de computação por uma instância da grande máquina virtual configurada com software de servidor web. O módulo de determinação de perfil 202 pode, então, calcular as quantidades de utilização de recursos previstos para as futuras instâncias da configuração da instância da máquina virtual quando, por exemplo, usado como um servidor web. As quantidades de utilização de recursos esperadas podem formar a base do perfil de operação determinada pelo módulo de determinação de perfil 202. O módulo de determinação de perfil 202 pode, em seguida, modificar o perfil de operação como um conjunto de dados, incluindo medições de utilização de recursos real que é construído ao longo do tempo.
[0028] Os dados de perfil que são usados pelo módulo de determinação de perfil 202 podem ser obtidos a partir de uma variedade de fontes. Como descrito acima, os dados podem ser obtidos a partir de uma entidade associada com a máquina virtual. Os dados também podem ser obtidos diretamente de um componente de análise de carga de trabalho do dispositivo de computação hospedeiro 104 no qual a instância da máquina virtual está em execução. Em algumas modalidades, os dados podem ser obtidos a partir de um armazenamento de dados de métrica operacional 208. O armazenamento de dados de métrica operacional 208 pode ser integrado com a componente de gestão 102, como ilustrado na FIG. 2, ou pode ser fisicamente localizado em um dispositivo de computação separado, como um servidor de sistema de gestão de banco de dados relacional dedicado (RDBMS). Os perfis de funcionamento que são determinados pelo módulo de determinação de perfil 202 podem ser armazenados em um arquivo de dados de perfil 210. Semelhante ao armazenamento de dados de métrica operacional 208, o perfil de armazenamento de dados 210 pode ser integrado com a componente de administração 102 ou localizado no dispositivo de computação separado, como um servidor RDBMS dedicado.
[0029] Em alguns ambientes de computação de rede 100, pode haver milhares ou mais das instâncias de máquinas virtuais ao perfil, e cada perfil de operação pode, por exemplo, basear-se na análise de dados de utilização exclusivo para determinadas configurações de instância de máquina virtual ou a utilização de um cliente em particular. De modo a utilizar eficientemente os perfis de funcionamento para tomar decisões de posicionamento em relação à instanciação de instâncias de máquinas virtuais em dispositivos de computação hospedeiros 104a - 104n, os perfis de funcionamento podem ser generalizados. Assim, um número de diferentes configurações de instância de máquina virtual pode ser associado com os mesmos perfis, ou substancialmente semelhante, em operação, embora possa haver variações na utilização de recursos real associado com cada configuração de instância de máquina virtual. Por exemplo, o módulo de determinação de perfil 202 pode associar uma configuração de instância de máquina virtual com quantidades esperadas de utilização previamente definidas, em vez de armazenar um perfil de operação personalizado para cada configuração de instância de máquina virtual. O perfil de operação predefinido pode incluir intervalos de utilização de cada um dos recursos de computação que é medido. Além disso, os perfis de funcionamento podem ser hierárquicos, de tal modo que uma configuração de instância da máquina virtual em particular está associada com um perfil de operação em particular, e também com um perfil de operação mais geral que é próprio associado com várias configurações de instância de máquina virtual.
[0030] Em algumas modalidades, os perfis de operação podem ainda ser generalizados em categorias. Por exemplo, um número de configurações de instância da máquina virtual, cada uma associada a uma quantidade diferente de utilização da rede, pode ser classificada como "aplicativos de rede leves" ou "aplicativos de rede pesados", dependendo se a medição de utilização está acima ou abaixo de um limiar. Em tal esquema de categorização, a configuração da instância máquina virtual que, quando instanciada, realiza principalmente operações de computação local e raramente utiliza uma conexão de rede pode ser categorizada na mesma categoria de "aplicativos de rede leves" como uma configuração de instância de máquina virtual que muitas vezes utiliza uma conexão de rede, mas apenas para pequenas transmissões que podem ser triviais em comparação com a quantidade de largura de banda disponível para os dispositivos de computação hospedeiros 104a - 104n no qual a instância da máquina virtual executa. Tais perfis operacionais generalizados também podem ser baseados em uma combinação de duas ou mais categorias, como "aplicativo de rede leve/aplicativo CPU pesado" e "aplicativo de rede leve/aplicativo de CPU leve." Voltando ao exemplo anterior, as duas configurações de instância de máquina virtual podem estar associadas a diferentes categorias. A configuração da instância da máquina virtual que, quando instanciada, realiza principalmente operações de computação local e raramente utiliza uma conexão de rede que pode ser classificada como um "aplicativo de rede leve/aplicativo de CPU pesado", enquanto a configuração da instância de máquina virtual que, quando instanciada, muitas vezes, inicia pequenas transmissões de rede que podem ser classificadas como um "aplicativo rede leve/aplicativo CPU leve" se a utilização da CPU das instâncias de máquinas virtuais cai abaixo de um limiar.
[0031] Como descrito acima, os perfis de funcionamento, seja especifico para uma configuração de instância de máquina virtual ou generalizado para um número de configurações de instância de máquina virtual podem ser utilizados para identificar um dispositivo de computação hospedeiro 104a - 104n nos quais posicionar instâncias de máquinas virtuais. O módulo de posicionamento 204 pode ser invocado quando um cliente 122 inicia uma sessão de computação ou quando uma máquina virtual é o de outro modo instanciado. O módulo de posicionamento 204 pode determinar qual perfil de operação está associado com a instância da máquina virtual, no momento atual. Por exemplo, o perfil de operação pode ser um perfil personalizado, incluindo medições de utilização do recurso real associado com a instância da máquina virtual, no momento atual do dia, durante o mês em curso do ano, etc. Em alguns casos, as medidas podem ser especificas para um cliente em particular, de tal modo que um perfil de operação para um cliente particular pode ser criado e acessado. 0 perfil de operação especifico do cliente pode aplicar-se a uma configuração especifica de instância de máquina virtual ou pode geralmente se aplicar a várias configurações de instância da máquina virtual distintas. Opcionalmente, o perfil de operação pode ser um perfil generalizado com base no caráter geral do uso de recursos associado com a instância de máquina virtual, que também pode basear-se na hora real do dia, etc. 0 módulo de posicionamento da máquina virtual 204 pode, em seguida, selecionar um dispositivo de computação hospedeiro 104 no qual lançar a instância de máquina virtual baseada na disponibilidade de recursos dos dispositivos de computação hospedeiro 104a - 104n e a utilização de recursos esperada da instância de máquina virtual determinada a partir do perfil de operação.
[0032] A utilização de recursos pode ser dinâmica ao longo do tempo de vida em uma única instância de uma configuração especifica de instância de máquina virtual, e ao longo de várias instâncias da configuração especifica da instância da máquina virtual. O módulo de migração 206 do componente de gestão 102 pode monitorar a utilização de recursos de cada instância de máquina virtual e executar o dispositivo de computação hospedeiro 104 no qual a instância da máquina virtual está em execução. Quando as mudanças de utilização de recursos, o módulo de migração 206, semelhante ao módulo de posicionamento da máquina virtual 204 descrito acima, pode selecionar um dispositivo de computação hospedeiro 104 apropriado no qual posicionar a instância da máquina virtual. Uma nova instância da máquina virtual pode ser lançada no dispositivo de computação hospedeiro 104 selecionado, e o estado de execução da instância da máquina virtual (memória, entradas, etc.) podem ser copiados para a nova instância da máquina virtual. Quando a nova instância da máquina virtual está pronta para iniciar a execução, a instância de máquina virtual anterior pode ser encerrada sem a perda de dados e sem uma perda substancial de desempenho. A nova instância da máquina virtual pode executar de forma mais eficiente, devido aos recursos disponíveis.
[0033] Em algumas modalidades, em vez de instanciar uma nova instância da máquina virtual em um dispositivo de computação hospedeiro diferente e que encerra a instância anterior, os recursos podem ser realocados. Quando a utilização de recursos ou a mudança de métricas de desempenho, recursos adicionais (por exemplo, memória) podem ser alocados para a máquina virtual particular. Por exemplo, um recurso pode ser realocado de outras máquinas virtuais de que não se espera utilizarem totalmente o recurso.
[0034] Passando agora para a FIG. 3, um processo ilustrativo 300 para determinar um perfil de operação para uma configuração de instância de máquina virtual será descrito. O processo 300 pode ser executado por um componente de gestão de 102. O componente de gestão 102 pode receber um pedido de um cliente 122 ou de outra forma ser notificado para instanciar uma máquina virtual. Após instanciar a instância da máquina virtual, identificando uma instância de máquina virtual instanciada ou fazendo com que a máquina virtual seja instanciada, o componente de gestão 102 pode monitorar ou de outro modo receber os dados operacionais sobre a utilização de recursos de computação associados à instância de máquina virtual. Com base na utilização de recursos e dados métricos em operação, o componente de gestão 102 pode determinar ou atualizar um perfil de operação para a configuração instância da máquina virtual, ou atualizar um perfil de operação existente. De um modo vantajoso, o perfil de operação pode ser comparado com outros perfis de funcionamento e generalizado e a configuração da instância de máquina virtual pode ser associada com uma categoria de utilização de recursos.
[0035] O processo 300 começa no bloco 302. O processo 300 pode começar automaticamente, como em resposta à recepção de um pedido para instanciar uma instância de uma máquina virtual. Por exemplo, o processo 300 pode ser realizado em um conjunto de instruções de programas executáveis e armazenado em uma unidade de meio legivel por computador do sistema de computação com os quais o componente de gestão 102 está associado. Quando o processo 300 é iniciado, as instruções de programa executáveis podem ser carregadas para a memória, como a RAM, e executadas por um ou mais processadores do sistema de computação. Em algumas modalidades, o sistema de computação podem incluir vários dispositivos de computação, como servidores, e o processo 300 pode ser executado por vários servidores, em série ou em paralelo.
[0036] No bloco 304, o componente de gestão de 102 ou algum outro componente lança uma instância de máquina virtual. Como descrito em detalhe abaixo com respeito à FIG. 5, o componente de gestão pode selecionar um dispositivo de computação hospedeiro 104 no qual o lançamento da instância da máquina virtual com base nos recursos que se espera que sejam consumidos pela instância de máquina virtual e os recursos que os dispositivos de computação hospedeiros 104a - 104n estãoatualmente disponíveis. Os recursos previstos para serem consumidos pela instância de máquina virtual ou a serem disponibilizados para a instância da máquina virtual pode ser determinada a partir de um perfil de operação pré-existente, a partir de informações recebidas do cliente 122 ou outra entidade solicitando que a instância da máquina virtual será lançada, etc.
[0037] O processo 300 pode passar para o bloco 306 para a instância da máquina virtual recém-lançada, a fim de obter métricas operacionais e para criar ou modificar um perfil de operação. Enquanto o processo 300 procede, qualquer número de instâncias adicionais de máquinas virtuais pode ser lançado e /ou colocado no bloco 304 com base no mesmo perfil de operação, quer como existia originalmente, ou como modificado durante a execução do processo anteriormente lançada para 300 instâncias de máquinas virtuais. Desta forma, o processo 300 pode ser realizado em qualquer número de instâncias simultâneas, que corresponde geralmente ao número de instâncias de máquinas virtuais associadas com o perfil de operação (ou, em uma hierarquia de perfis, um perfil a partir de um nivel mais elevado na hierarquia) que pode estar em execução em um determinado momento.
[0038] No bloco 306, os recursos utilizados pela instância de máquina virtual podem ser monitorados, e as medidas de utilização de recursos e outras métricas operacionais podem ser obtidas. No bloco 308, as métricas operacionais poderão ser registradas. O monitoramento pode ser realizado pelo componente de gestão 102, ou por algum outro componente, como um componente de análise de carga de trabalho 421 do dispositivo de computação hospedeiro 104 no qual a ocorrência de máquina virtual está em execução. As métricas operacionais podem ser armazenadas no armazenamento de dados de métricas operacionais 208. Em modalidades usando um componente de análise de carga de trabalho 421, o componente de análise de carga de trabalho 421 pode armazenar métricas operacionais temporariamente ou a longo prazo. 0 componente de análise de carga de trabalho pode transmitir dados a respeito das métricas operacionais para o componente de gestão 102 para armazenamento em tempo real, substancialmente, em intervalos regulares, ao término da máquina virtual, em algum outro momento, ou não em todos.
[0039] A FIG. 4 ilustra a medição da utilização de vários meios, desde múltiplas instâncias de máquina virtual por um dispositivo de computação hospedeiro 104. Como ilustrado na FIG. 4, um dispositivo hospedeiro 104 pode fornecer recursos de computação, como a memória 402, um CPU 404, e uma largura de banda de rede 406. Em algumas modalidades, recursos de computação adicionais ou menos podem ser fornecidos para instâncias de máquinas virtuais. Por exemplo, uma instância de máquina virtual pode não ser permitida para se comunicar com outros dispositivos, e, por conseguinte, a utilização da interface de rede 406 não necessita ser medida. Em outroexemplo, um dispositivo de computação hospedeiro 104 podefornecer e controlar a utilização de espaço em disco, asoperações de disco rigido, a energia elétrica, e assim pordiante.
[0040] Em algumas modalidades, um provedor de recursos de computação, como um operador de um ambiente de computação de rede 100, pode fornecer aos clientes com uma quantidade definida de recursos de computação no qual executar uma instância de máquina virtual. Por exemplo, um cliente 122 pode reservar para uma das suas configurações de instância de máquina virtual uma quantidade predeterminada de memória, como a memória de acesso aleatório (RAM), uma quantidade predeterminada de capacidade de computação, como núcleos de CPU, e uma quantidade predeterminada de largura de banda de rede, conforme previsto por uma interface de rede. Memória 402 de um dispositivo de computação hospedeiro 104 pode ser segregada em partições 410, 412, 414 que são reservadas para instâncias individuais de máquina virtual (por exemplo: partições 412, 414) ou para o funcionamento do dispositivo de computação hospedeiro 104 e outros procedimentos internos (por exemplo, partição 410) . A partição reservada para o funcionamento do dispositivo de computação hospedeiro 104 pode incluir um hypervisor para ajudar no lançamento, execução e término de instâncias de máquinas virtuais, um sistema operacional, drivers e afins. Além disso, o dispositivo de computação hospedeiro 104 pode incluir um componente de análise de carga de trabalho 421 que monitora a utilização dos recursos e, opcionalmente, se comunica com o componente de gestão 102. O componente de análise de carga de trabalho 421 também pode residir no espaço de memória 410, e pode ser integrado ao hypervisor 420 ou pode ser um componente independente, que partilha o espaço de memória 410. Em algumas modalidades, o componente de análise de carga 421 pode residir em um espaço de memória 412, 414 reservado para clientes instâncias de máquinas virtuais. Em tais casos, o componente de análise de carga de trabalho 421 podem ser integrado nas configurações de instância de máquina virtual ou incluido na instância da máquina virtual em cima de instanciação. Em outras modalidades, o componente de análise de carga de trabalho 421 pode residir em um espaço de memória reservado separado para que, ou pode ser implementado como um componente, um dito dispositivo de hardware independente, que não partilha a memória 402 do dispositivo de computação hospedeiro 104.
[0041] Em muitos casos, uma instância de máquina virtual pode não utilizar toda a partição de um recurso que está reservado para ele. Por exemplo, VM1 422, ilustrada na FIG. 4, pode ser uma instância de máquina virtual de um cliente 122, e pode ser enviada para o espaço de memória 412, cuja totalidade é reservada para uso por VM1 422. Em operação, VM1 422 pode não utilizar a totalidade do espaço de memória 412, e em alguns casos pode utilizar uma pequena fração do espaço de memória reservado 412. Por vezes, no entanto, a utilização do espaço de memória 412 pode mudar, e VM1 422 pode utilizar substancialmente todo o espaço de memória 412. O componente de análise de carga de trabalho 421 pode monitorar estas alterações e as medições de registro e outros dados, como a hora do dia, a configuração de instância de máquina virtual especifica, ou quais outras instâncias de máquinas virtuais, se houver, estavam em execução no dispositivo de computação hospedeiro 104. O componente de análise de carga de trabalho 421 pode transmitir os dados para o componente de gestão 102 ou para um armazenamento de dados. Em algumas modalidades, o componente de análise de carga de trabalho 421 pode armazenar temporariamente os dados e depois transferi-los para o componente de gestão 102, como em um horário, ou em resposta a um evento desencadeante, como a terminação de VM1 422. Semelhante à medição e o registro de dados sobre a utilização de memória 402, o componente de carga de trabalho de análise 421 ou algum outro componente pode monitorar a utilização do CPU 404, a interface de rede 406, ou qualquer outro recurso de computação utilizado por VM1 422.
[0042] Os dados podem ser obtidos e registrados com relação a quaisquer desvios de métricas operacionais esperados ou preferenciais. Por exemplo, medições de utilização de recursos e outras métricas operacionais podem ser registradas e comparadas com o perfil de operação, a fim de determinar se existe uma variância de uma métrica esperada ou preferida. Em alguns casos, as métricas operacionais podem ser registradas em uma base de cliente-a-cliente. Os dados referentes a uma variação podem ser registrados para futuras decisões de posicionamento ou de migração pode ser feita com base na variação. Além disso, os dados sobre de recursos fora do hospedeiro, como latência, o tráfego de ligação, e afins podem ser registrados. O componente de análise de carga de trabalho 421 pode registrar esses dados, ou algum componente externo ao hospedeiro (por exemplo, o componente de gestão de 102 ou um switch) pode observar as métricas operacionais. Em algumas modalidades, a utilização de recursos que não reduz necessariamente a disponibilidade de recurso pode ser determinada. Por exemplo, se uma instância de máquina ou aplicativo de software virtual rodando nele executa certas operações criptográficas ou é observado chamando determinadas funções ou instruções de criptografia, esses dados podem ser registrados. O módulo de posicionamento 204 ou migração 206 pode considerar esses dados ao lançar ou migrar uma instância da máquina virtual. Um dispositivo de computação hospedeiro pode ser selecionado que fornece instruções criptográficas mais eficientes ou mais poderosos, tal dispositivo de apoio Intel® Advanced Encryption Standard (AES) New Instructions (AES-NI) ou dispositivo similar.
[0043] No bloco 310, o módulo de determinação de perfil 202 ou algum outro módulo da componente de gestão 102 pode modificar um perfil de operação associado à instância de máquina virtual, ou criar um novo perfil de operação. Como descrito acima, perfis de funcionamento podem incluir informações sobre a utilização tipica ou esperada de recursos, as variações das métricas operacionais esperadas ou desejadas, e afins. Por exemplo, o perfil de operação pode consistir de medições médias para cada um de certo número de instâncias diferentes de uma única configuração de instância da máquina virtual. Cada recurso pode ser associado a várias medições que correspondem à operação com base em um cliente em particular, uma hora do dia, um dia do ano, ou outros fatores ambientais.
[0044] Em algumas modalidades, cada um dos recursos do perfil de operação pode ser associado com uma pontuação ou qualquer outra indicação de utilização em vez de uma avaliação estatística. Por exemplo, cada recurso pode ser atribuido uma pontuação de 1-10, onde os números mais elevados estão associados com usuários mais pesado e/ou mais frequentes de um recurso. Em algumas modalidades, os perfis de operação podem ainda ser generalizados. Um conjunto predefinido de perfis de operação generalizados pode cobrir faixas de medições ou pontuações para cada recurso. Por exemplo, a configuração da instância da máquina virtual a partir do qual VM1 422 foi instanciada pode ser atribuída a um perfil de operação generalizado se, durante o horário noturno, VM1 422 utiliza mais de 25% do seu espaço de memória 412, mas utiliza quase 100% de sua disponibilidade de CPU. Os perfis de funcionamento generalizados podem incluir vários intervalos de medições para cada recurso, dependendo da hora do dia ou de outros fatores. Voltando ao exemplo anterior, o exemplo de configuração de máquina virtual do qual VM1 422 é instanciada em vez disso pode ser atribuído a um perfil de operação diferente predefinido se as instâncias de máquinas virtuais utilizam tipicamente recursos da maneira descrita acima durante as horas noturnas, mas durante o dia utiliza 50% de seu segmento de memória 412 e disponibilidade de CPU. Vários perfis de operação generalizados podem ser associados a determinadas configurações de instância de máquina virtual com base no uso pelos clientes particulares. Por exemplo, cada cliente que usa a configuração de instância de máquina virtual pode ser associado a um perfil de funcionamento diferente.
[0045] Em algumas modalidades, cada cliente 122 pode ser associado a um perfil de operação generalizado mesmo que tenha um número de diferentes configurações de instância de máquina virtual e, apesar de cada exemplo de configuração de máquina virtual poder utilizar os recursos de forma diferente. Um cliente 122 pode ter uma configuração de instância de máquina virtual, como a partir do qual uma VM1 422 na FIG. 4 é instanciada, que podem ser perfilados de forma independente como um aplicativo de CPU leve, enquanto que outra configuração de instância de máquina virtual, como a partir do qual VM2 424 é instanciada, pode ser perfilada de forma independente como um aplicativo de CPU pesado. O cliente 122 pode ser perfilado como um usuário de CPU moderado, porque a sua utilização média de CPU é moderada. Opcionalmente, o cliente 122 pode ser perfilado como um usuário de CPU pesado, uma vez que tem, pelo menos, uma configuração de instância de máquina virtual que é um aplicativo da CPU pesado. Em outras modalidades, os clientes podem ter vários perfis de operação associados para cada configuração de imagem de máquina virtual. Diferentes clientes ou de usuários substancialmente a mesma imagem de máquina virtual, como VM1 422, podem utilizar diferentes quantidades de recursos, mesmo que a imagem da máquina virtual seja uma configuração comum. Um dado cliente partindo de um VM em particular pode ser mais propenso a usar aquela VM da mesma maneira como previamente registrado, e consome aproximadamente os mesmos recursos.
[0046] Os perfis de operação para cada exemplo de configuração de máquina virtual podem ser armazenados no armazenamento de dados 210. Os perfis de medições reais para cada perfil podem ser armazenados no perfil de operação, ou uma ID ou outra indicação da qual a categoria ou perfil de operação generalizado de configuração de instância da máquina virtual está associada com pode ser armazenada. Em modalidades que determinam e utilizam perfis de clientes em vez de ou em adição aos perfis de máquina virtual, dados do perfil do cliente podem ser armazenados no mesmo armazenamento de dados 210 ou em um arquivo de dados diferente.
[0047] No bloco 312, perfis de operação relacionados ou generalizados podem ser criados ou modificados. Por exemplo, perfis de nivel superior podem ser criados ou modificados se os perfis hierárquicos são usados. Métricas operacionais históricas podem ser acessadas a partir do armazenamento de dados de métricas operacionais 208 para cada configuração da instância de máquina virtual associada com o perfil de operação de nivel superior, em alguns casos, independentemente de quais perfis de nivel inferior as configurações de instância da máquina virtual estão associadas. Análises estatísticas podem ser realizadas e as variâncias de métricas de operação podem ser determinadas como descrito acima. Com vantagem, o perfil de operação de nivel superior modificado ou generalizado pode ser acessado e utilizado pelo módulo de posicionamento 204 ou módulo de migração 206 ao instanciar ou migrar instâncias de máquinas virtuais que são diferentes da instância da máquina virtual associada à execução atual do processo 300. Assim, as métricas operacionais registradas associadas a uma instância de máquina virtual podem ser usadas para afinar o posicionamento e execução de outras instâncias de máquinas virtuais, mesmo aquelas que não são instanciadas a partir da mesma configuração de instância da máquina virtual.
[0048] Passando agora para a FIG. 5, um processo ilustrativo 500 para determinar a posição de instâncias de máquina virtual baseada em perfis de operação será descrito. O processo 500 pode ser executado por um componente de gestão de 102. O componente de gestão 102 pode receber um pedido de um cliente 122 ou de outro modo ser notificado para lançar uma instância de uma máquina virtual a partir de uma configuração de instância de máquina virtual especifica ou imagem. O componente de gestão 102 pode identificar dispositivos de computação hospedeiros 104a - 104n, que são capazes de sediar a instância da máquina virtual e determinar o status atual dos dispositivos de computação hospedeiros 104a - 104n com relação a recursos de computação disponíveis. Com vantagem, o componente de gestão 102 também pode obter um perfil de operação para a configuração da instância de máquina virtual para ser instanciada, e determinar qual dos dispositivos de computação hospedeiros disponíveis 104a - 104n pode mais eficientemente sediar a máquina virtual do ponto de vista dos recursos disponíveis. Um dispositivo de computação hospedeiro 104 pode ser selecionado que já está executando as máquinas virtuais e que já comprometeu a maioria ou todos os seus recursos para alojar máquinas virtuais já executando. Com base em perfis de operação das atualmente instâncias de máquinas virtuais em execução e da instância de máquina virtual a ser lançada, o componente de gestão 102 pode iniciar a instância da máquina virtual no dispositivo de computação hospedeiro 104 se o componente de gestão 102 determina que o dispositivo de computação hospedeiro 104 possa fornecer os recursos de computação que as instâncias de máquinas virtuais provavelmente irão consumir. Em alguns casos, isso pode incluir recursos de sobre subscrição (por exemplo, alocando os mesmos recursos para múltiplas instâncias de máquinas virtuais). Além disso, o componente de gestão 102 pode monitorar a execução das instâncias de máquinas virtuais no dispositivo de computação hospedeiro 104, e execução de transferência de uma ou mais instâncias de máquinas virtuais para outro dispositivo de computação hospedeiro 104 se não houver recursos de computação suficientes para satisfazer cada instância da máquina virtual.
[0049] O processo 500 começa no bloco 502. O processo 500 pode ser iniciado automaticamente, como em resposta à recepção de um pedido para iniciar uma instância de máquina virtual. Por exemplo, o processo 500 pode ser realizado em um conjunto de instruções de programas executáveis e armazenado em um drive de meio não transitório legivel por computador do sistema de computação com o qual o componente de gestão 102 está associado. Quando o processo 500 é iniciado, as instruções de programa executáveis podem ser carregadas para a memória, como a RAM, e executadas por um ou mais processadores do sistema de computação. Em algumas modalidades, o sistema de computação pode incluir vários dispositivos de computação, como servidores, e o processo 500 pode ser executado por vários servidores, em série ou em paralelo.
[0050] No bloco 504, o componente de gestão 102 pode receber um pedido ou alguma outra notificação para inicializar uma instância de máquina virtual. A notificação pode ser recebida a partir de um cliente 122, um dispositivo de computação hospedeiro 104, ou algum outro componente ou entidade. Em algumas modalidades, uma instância de máquina virtual pode solicitar a inicialização de outra instância de máquina virtual, outra instância da mesma configuração de instância de máquina virtual ou imagem, etc.
[0051] No bloco 506, o módulo de posicionamento VM 204 ou algum outro módulo do componente de gestão 102 pode obter um perfil de operação para a instância de máquina virtual para ser lançada. O perfil de operação pode ser carregado a partir do armazenamento de dados do perfil 210 ou obtido a partir de alguma outra fonte. O módulo de posicionamento VM 204 pode inspecionar o perfil de operação para determinar quais os recursos a instância da máquina virtual são susceptíveis de utilizar e em que quantidade. Como descrito acima, o perfil de operação do exemplo de configuração de máquina virtual pode ser diferente, dependendo de fatores ambientais, como a hora do dia. Nesses casos, o módulo de posicionamento VM 204 da componente de gestão 102 pode considerar tais fatores ambientais ao inspecionar o perfil de operação.
[0052] No bloco 508, o módulo de posicionamento VM 204 ou algum outro módulo da componente de gestão 102 pode selecionar um dispositivo de computação hospedeiro 104 em que o lançamento da instância da máquina virtual com base nos recursos disponíveis e o perfil de operação. Por exemplo, um ambiente de computação 100 de rede pode incluir um número de dispositivos de computação hospedeiro 104a - 104n. Os dispositivos de computação hospedeiros 104a - 104n não precisam ser idênticos; alguns podem ter mais ou menos RAM do que outros, processadores mais ou menos poderosos ou um número diferente de processadores, etc. O módulo de posicionamento VM 204 pode selecionar um dispositivo de computação hospedeiro 104 no qual lançar a instância de máquina virtual baseada na utilização de recursos esperada conforme identificado pelo perfil de operação e pelos recursos que cada dispositivo de computação disponibiliza.
[0053] Em algumas modalidades, um dispositivo de computação hospedeiro 104 pode ser configurado para receber um determinado número de instâncias de uma máquina virtual especifica ou classe de máquinas virtuais. Como mostrado na FIG. 4, o dispositivo de computação hospedeiro 104 pode ter uma quantidade de memória 402 tal que ela pode reservar um espaço de memória predeterminado 410 para o hypervisor 420, e dois espaços de memória adicionais 412, 414 de um tamanho predeterminado para máquinas virtuais. Duas instâncias de máquinas virtuais 422, 424 podem ser lançadas no dispositivo de computação hospedeiro 104, com cada instância da máquina virtual 422, 424 atribuindo um espaço de memória separado 412, 414. Um cliente 122 pode reservar uma determinada quantidade de um recurso para estar disponível para suas instâncias de máquinas virtuais 422, 424, como por seleção de uma classe particular de máquina virtual (por exemplo: pequena, média ou grande, como descrito acima) para configurar. Os espaços de memória 412, 414 podem corresponder à quantidade máxima permitida de recursos disponíveis para as instâncias de máquinas virtuais 422, 424, como reservado pelo cliente 122. No entanto, na prática, as instâncias de máquinas virtuais 422, 424 não poderão utilizar a quantidade total da um recurso de computação que está reservado para eles. Por exemplo, como visto na FIG. 4, as instâncias de máquinas virtuais 422, 424 estão utilizando apenas uma fração dos espaços de memória 412, 414 que estão reservados para eles. Pode ser vantajoso utilizar dito espaço de memória em excesso e outros recursos de computação em excesso, de modo a reduzir o número de dispositivos de computação hospedeiro 104a - 104n necessários para servir todos os casos atualmente em execução de máquinas virtuais ou para utilizar mais eficientemente os recursos daqueles dispositivos de computação hospedeiros 104a - 104n, que estão operando.
[0054] A FIG. 6 ilustra um dispositivo de computação hospedeiro 104 com recursos de computação de sobre subscrição. Uma terceira instância de máquina virtual 426 foi lançada no dispositivo de computação hospedeiro 104, mesmo que o dispositivo de computação hospedeiro 104 contenha apenas dois espaços de memória 412, 414 disponíveis para instâncias demáquinas virtuais. Com base no perfil de operação associado a cada uma das instâncias de máquinas virtuais 422, 424, 426, o módulo de posicionamento VM 204 pode determinar que VM2 422 utiliza apenas uma fração do seu espaço de memória disponível 414, e VM3 426 também usa apenas uma fração do seu espaço de memória disponível quando é lançado. Portanto, o módulo de posicionamento VM 204 pode lançar VM3 426 no mesmo dispositivo de computação como VM2 424 e atribuir-lhes o mesmo espaço de memória 414.
[0055] Como pode ser visto na FIG. 6, VM1 422 utiliza substancialmente todo o seu espaço de memória 412, e, portanto, o módulo de posicionamento 204 VM não pode atribuir outra instância de máquina virtual para o mesmo espaço de memória 412, devido ao perfil de operação de VM1 422. No entanto, VM1 422 utiliza apenas uma pequena quantidade de capacidade de CPU 442, e, portanto, um dispositivo de computação hospedeiro 104 em que VM1 422 está executando pode ser um candidato para sobre subscrições se os perfis de operação das instâncias de máquinas virtuais são complementares. No exemplo ilustrado na FIG. 6, VM2 424 utiliza uma grande quantidade de capacidade de CPU 444. No entanto, se o perfil de operação de 426 VM3 indica que se trata de um usuário leve da capacidade da CPU, então os três instâncias de máquinas virtuais VM1 422, VM2 424, e VM3 426 podem ser candidatas para o sobre subscrições, devido às operações de perfis complementares, ao invés de sobrepostas das configurações de instância de máquina virtual a partir das quais são instanciadas. Recursos adicionais podem ser tidos em conta com uma determinação de sobre subscrições, a fim de garantir que cada instância de máquina virtual em execução em um dispositivo de computação hospedeiro 104 tenha prontamente disponivel a esta, a quantidade de cada um dos recursos de computação que este tipicamente requer. Por exemplo, a utilização da largura de banda da rede 406, como ilustrado na FIG. 6, também apoia a determinação de sobre subscrições no exemplo descrito acima, porque, apesar de o perfil de operação para VM3 426 poder indicar que ele é um aplicativo de largura de banda de rede pesado, VM1 422 e 424 VM2 utilizam apenas uma pequena quantidade de largura de banda de rede.
[0056] No bloco 510, o módulo de posicionamento VM 204 ou algum outro módulo de gestão do componente 102 pode posicionar a instância de máquina virtual no dispositivo de computação hospedeiro 104 que é identificado no bloco 508. Como descrito acima, a instância de máquina virtual pode ser colocada em um dispositivo de computação hospedeiro 104 com outras instâncias de máquinas virtuais que têm reservadas quantidades de recursos de computação totalizando ou excedendo a quantidade fornecida pelo dispositivo de computação hospedeiro 104. Em alguns casos, as sobre subscrições podem ser substanciais.
[0057] A FIG. 7 ilustra um dispositivo de computação hospedeiro substancialmente sobre subscrito 104. Como descrito acima, os clientes 122 podem reservar uma determinada quantidade de recursos de computação para uso por instâncias de máquinas virtuais do cliente. No entanto, em alguns casos, um cliente 122 pode ter superestimado substancialmente a quantidade de recursos de computação que as suas instâncias de máquina virtual podem realmente usar. Em casos extremos, o cliente 122 pode reservar uma grande quantidade de recursos de computação, iniciar instâncias de máquinas virtuais associadas a esses recursos, e, em seguida, deixar que as instâncias de máquinas virtuais fiquem ociosas ou não subutilizar substancialmente os recursos reservados. Ao longo do tempo, os perfis de operação podem ser desenvolvidos para as instâncias de máquinas virtuais ou para o cliente 122, que reflete a subutilização substancial dos recursos reservados. O componente de gestão 102 pode, em seguida, lançar um grande número de dita baixa utilização de instâncias de máquinas virtuais em um dispositivo de computação hospedeiro 104 único. O dispositivo de computação hospedeiro 104 da FIG. 7 inclui sete diferentes instâncias de máquina virtual 422, 424, 426, 722, 724, 726, 728 compartilhando recursos de computação que podem tipicamente ser reservados para apenas duas instâncias de máquinas virtuais, como descrito acima em relação às FIGS. 4 e 6. No entanto, ainda há excesso de capacidade de cada um dos três tipos de recursos de computação 402, 404, 406. Em alguns casos, centenas ou mais de instâncias de máquinas virtuais podem ser posicionadas em dispositivo de computação hospedeiro 104, como quando o dispositivo de computação hospedeiro 104 tem uma grande quantidade de recursos de computação disponíveis e as instâncias de máquinas virtuais são substancialmente ociosas.
[0058] No bloco 512, a utilização de recursos de cada instância da máquina virtual pode ser monitorada. Ao longo do tempo de vida das instâncias especificas de máquinas virtuais, o componente de análise de carga de trabalho 421 pode monitorar operacional e notificar o componente de gestão 102, se uma das instâncias de máquinas virtuais começa a utilizar os recursos em um nivel que não pode ser reparado por um sobre subscrito de dispositivo de computação hospedeiro 104, ou se a utilização de recursos ou uma métrica operacional de outra forma difere de uma quantidade esperada ou desejada. Em algumas modalidades, o componente de gestão 102 pode realizar o controle.
[0059] No bloco 514, o componente de gestão 102 pode determinar se a utilização de recursos ou uma métrica operacional difere de uma quantidade esperada ou desejada. Por exemplo, o componente de gestão pode determinar se uma mudança no uso de recursos excede um limite ou de outra forma prejudica o desempenho indesejável. Uma instância de máquina virtual que começa a utilizar mais de um recurso de computação do que o esperado, com base no seu perfil de operação e o posicionamento determinado pelo componente de gestão 102, pode ser transferido para um dispositivo de computação hospedeiro 104 que é sobre subscrito em menor extensão, ou a um dispositivo de computação hospedeiro 104 que não está de todo sobre subscrito. Em tais casos, a execução do processo 500 pode retornar ao bloco 508, onde o módulo de migração VM 206 ou algum outro componente de gestão 102 determina para qual o dispositivo de computação transferir a máquina virtual 842.
[0060] A FIG. 8 ilustra um dispositivo de computação hospedeiro 104a que tem sobre subscrito capacidade da CPU 404a. Uma instância de máquina virtual VM4 842 pode começar a consumir uma grande quantidade de capacidade disponivel de CPU 404a, em contradição com o seu perfil de operação. No entanto, o cliente 122 associado com a instância de máquina virtual VM4 842 pode ter reservada uma grande quantidade da capacidade da CPU para a configuração da instância de máquina virtual a partir da qual VM4 842 é instanciada, e, por conseguinte, pode ser desejável para fornecer a instância de máquina virtual VM4 842 com mais capacidade de CPU do que um sobre subscrição do dispositivo de computação hospedeiro 104a pode proporcionar. Como mostrado na FIG. 8, o dispositivo de computação hospedeiro 104b pode ser um candidato para tal transferência. A instância de máquina virtual VM8 844 está consumindo atualmente apenas uma pequena fração da capacidade da CPU 404b disponivel no dispositivo de computação hospedeiro 104b, e o componente de gestão 102 pode determinar que o perfil de operação associado a VM8 844 indica que não é provável que consuma mais. O módulo de migração VM 206 pode iniciar a transferência de VM4 842 do dispositivo de computação hospedeiro 104a para o dispositivo de computação hospedeiro 104b.
[0061] A transferência de uma instância de máquina virtual pode incluir primeiro lançamento de uma instância da mesma configuração de instância de máquina virtual ou imagem nodispositivo de computação hospedeiro 104b alvo enquanto ainstância da máquina virtual no dispositivo de computação hospedeiro 104a de origem continua a executar. O estado de execução da instância da máquina virtual no dispositivo hospedeiro de computação 104b origem, incluindo os dados no espaço de memória ou disco rigido associados à instância de máquina virtual, conexões de rede estabelecidas pela instância de máquina virtual, e assim por diante, pode, então, ser duplicado no dispositivo de computação hospedeiro 104b alvo. A instância de máquina virtual no dispositivo de computação hospedeiro 104a de origem pode ser terminado, e a instância de máquina virtual no dispositivo de computação 104b alvo pode continuar a execução a partir desse ponto.
[0062] Em algumas modalidades, o posicionamento inicial ou de transferência de uma carga de trabalho de software (por exemplo, um aplicativo ou um nó de armazenamento) pode ser associado com a utilização instância de máquina virtual, ou a interação com a carga de trabalho do software, embora a carga de trabalho do software não possa necessariamente ser uma instância de máquina virtual por si só. Por exemplo, uma carga de trabalho do software pode ser constituída por um nó de armazenamento implementado como um agente de armazenamento de dados de acordo com as expectativas de instâncias de máquinas virtuais que podem estar utilizando os dados. Em tais casos, o posicionamento inicial ou transferência da carga de trabalho (neste caso, o nó de armazenamento) pode basear-se em colocá-lo próximo ou de outra forma tornando-o mais acessível pela instância de máquina virtual ou instâncias que irão usá-lo.
[0063] Diversas modalidades da presente descrição podem ser descritas tendo em conta os seguintes pontos:1. Um sistema para perfilamento de utilização de recursos de computação, o sistema compreendendo:um ou mais processadores; uma memória de leitura por computador; eum módulo de gestão, que inclui instruções executáveis armazenados na memória legivel pelo computador, o módulo de gestão de, quando executado por um ou mais processadores, configurado para:receber um pedido para a inicialização de uma nova instância de uma configuração de instância de máquina virtual, a configuração de instância da máquina virtual associada com a utilização de quantidade de recursos esperada de um primeiro recurso de computação, em que a quantidade de utilização esperada baseia-se, pelo menos em parte, de uma pluralidade de prévias medições associadas com o uso, por instâncias de uma ou mais de um configurações de instância da máquina virtual semelhantes, do primeiro recurso de computação; eem resposta ao pedido;identificar um dispositivo de computação de uma pluralidade de dispositivos de computação baseados, pelo menos, sobre se uma quantidade disponível do primeiro recurso de computação no dispositivo de computação é maior do que o valor esperado; ecausa, pelo menos em parte, a nova instância para ser inicializada no dispositivo de computação.2. 0 sistema da cláusula 1, em que a utilização do primeiro recurso de computação compreende utilização unidade central de processamento (CPU), utilização da memória, a utilização da rede, utilização do disco rigido ou da utilização de energia elétrica.3. 0 sistema da cláusula 1, em que o módulo de gestão, quando executado, é ainda configurado para:obter a pluralidade de medições anteriores em relação ao uso do primeiro recurso de computação; e determinar um perfil de operação para a configuração da instância de máquina virtual baseada, pelo menos em parte, na pluralidade de medições anteriores, em que o perfil de operação compreende a utilização de quantidade esperada de recursos.4. 0 sistema da cláusula 3, em que o perfil de operação compreende ainda uma característica de funcionamento desejada do dispositivo de computação.5. 0 sistema da cláusula 4, em que a característica de operação desejada se refere a capacidade de memória, capacidade de unidade central de processamento (CPU), largura de banda, latência de rede, posição dentro de uma topologia de rede, conjunto de instruções, ou variância de uma métrica de desempenho.6. 0 sistema da cláusula 4, em que a identificação do dispositivo de computação compreende determinar que uma característica associada com o dispositivo de computação corresponde à característica desejada.7. Um sistema para perfilamento de utilização de recursos de computação, o sistema compreende:um ou mais processadores;uma memória legivel por computador que inclui instruções executáveis que, quando executadas por um ou mais processadores, configuram o sistema para:determinar uma restrição operacional para uma instância de uma máquina virtual baseada em parte em métricas operacionais determinadas a partir da execução de pelo menos uma instância de uma máquina virtual similar;receber um pedido para criar uma instância da máquina virtual; eem resposta ao pedido: identificar um dispositivo de computação hospedeiro, de uma pluralidade de dispositivos de computação hospedeiros, associados a uma ou mais características operacionais relacionadas com a operação de instâncias de máquina virtual baseada, em parte, do fato de uma ou mais características satisfazerem a restrição de operação; efazer com que pelo menos em parte, uma nova instância da máquina virtual seja instanciada no dispositivo de computação hospedeiro.8. O sistema da cláusula 7, em que pelo menos uma das métricas operacionais se refere a unidade central de processamento (CPU), a utilização da memória, a utilização da rede, utilização do disco rigido ou da utilização de energia elétrica.9. 0 sistema da cláusula 7, em que pelo menos uma das uma ou mais características compreende capacidade de memória, capacidade da unidade central de processamento (CPU), largura de banda, latência da rede, a posição dentro de uma topologia de rede, o conjunto de instruções, ou variância de uma métrica de desempenho.10. O sistema da cláusula 7, em que o restrição de operação se refere a uma quantidade esperada de utilização de um recurso de computação fornecida pelo dispositivo de computação hospedeiro.11. 0 sistema da cláusula 10, em que a quantidade esperada de utilização é ainda baseada, pelo menos em parte, em dados recebidos a partir de um cliente associado com a máquina virtual.12. O sistema da cláusula 7, em que o módulo, quando executado, é ainda configurado para: receber uma métrica operacional adicional sobre a operação da nova instância no dispositivo de computação hospedeiro, a métrica operacional adicional relacionada com uma ou mais características de operação; eem resposta à determinação, com base na métrica operacional adicional, que a uma ou mais características de operação já não satisfazem a restrição operacional, transferir a nova instância a um segundo dispositivo de computação associado com uma ou mais características de operação adicional que satisfazem a restrição operacional.13. Um método implementado por computador para perfilar a utilização de recursos de computação, o método implementado por computador compreendendo:receber, por um componente de gestão de centro de dados compreendendo um ou mais dispositivos de computação, um pedido para a inicialização de uma carga de trabalho do software associado a um perfil de operação, em que o perfil de operação é baseado, pelo menos em parte, de uma pluralidade de métricas operacionais históricas associadas com a carga de trabalho de software; eem resposta ao pedido:identificar um dispositivo de computação de uma pluralidade de dispositivos de computação baseado pelo menos em parte, no perfil de operação e uma ou mais características de operação associadas com o dispositivo de computação; efazer com que a carga de trabalho do software seja inicializada no dispositivo de computação.14. 0 método implementado por computador da cláusula 13, em que a carga de trabalho de software compreende uma instância de máquina virtual, um sistema operacional, um nó de rede de área de armazenamento (SAN), ou um aplicativo.15. 0 método implementado por computador da cláusula 13, em que pelo menos um de entre a pluralidade de métricas operacionais históricas se refere à unidade central de processamento (CPU), a utilização da memória, a utilização da rede, utilização do disco rigido, ou a utilização da potência.16. 0 método implementado por computador da cláusula 13, em que, pelo menos, uma das uma ou mais características de operação compreende capacidade de memória, capacidade de unidade central de processamento (CPU), largura de banda, latência da rede, a posição dentro de uma topologia de rede, o conjunto de instruções, ou variância de uma métrica de desempenho.17. 0 método implementado por computador da cláusula 13, em que o perfil de operação compreende uma primeira quantidade esperada de utilização de recursos associados com um primeiro recurso de computação, em que a primeira quantidade do uso de recursos esperada baseia-se, pelo menos em parte, em uma pluralidade de métricas operacionais históricas sobre a utilização do primeiro recurso, e em que uma característica de um ou mais características compreende disponibilidade do primeiro recurso de computação.18. 0 método implementado por computador da cláusula 17, em que cada um da pluralidade de métricas operacionais históricas em relação ao uso do primeiro recurso está associado com um tempo que uma medição de utilização foi registrada, e em que o perfil de operação tem ainda por base, pelo menos em parte no tempo em que cada um da pluralidade de métricas operacionais históricas foi registrado. 19. 0 método implementado por computador da cláusula 13, que compreende ainda a obtenção de, pelo menos, uma porção da multiplicidade de métricas operacionais históricas a partir de um componente de análise de operação associado com a carga de trabalho de software ou um dispositivo de computação da pluralidade de dispositivos de computação executando a carga de trabalho de software.20. O método implementado por computador da cláusula 13, compreendendo ainda a determinação do perfil de operação com base, pelo menos em parte, da pluralidade de métricas operacionais históricas.21. O método implementado por computador da cláusula 13, compreendendo ainda a determinação do perfil de operação com base, pelo menos em parte, em um nivel de serviço de acordo com um cliente associado com a carga de trabalho de software.22. O método implementado por computador da cláusula 13, em que o perfil de operação compreende uma característica de operação desejada do dispositivo de computação.23. 0 método implementado por computador da cláusula 22, em que a identificação do dispositivo de computação tem ainda por base, pelo menos em parte, a determinação de que uma característica operacional de uma ou mais características de operação associados com o dispositivo de computação corresponde à característica de operação desejada.24. O método implementado por computador da cláusula 22, que compreende ainda:receber uma métrica operacional substancialmente atual de operação da carga de trabalho de software no dispositivo de computação, a métrica em operação substancialmente atual relacionada com as características de uma ou mais operações; e em resposta à determinação, com base na métrica em operação substancialmente atual, que nenhuma das uma ou mais características de operação associadas com o dispositivo de computação correspondem à característica de operação desejada, transferindo a carga de trabalho de software para o segundo dispositivo de computação associado com uma característica operacional correspondente à característica de operação desejada.25. 0 método implementado por computador da cláusula 13, em que o perfil de operação compreende um primeiro perfil de operação predefinido de uma pluralidade de perfis de operação predefinidos.26. 0 método implementado por computador da cláusula 25, em que os perfis de operação predefinidos estão associados com os niveis de uma hierarquia de operação, e em que o primeiro perfil de operação predefinido está associado com o nivel mais elevado, em relação à carga de trabalho de software, da hierarquia operacional.27. 0 método implementado por computador da cláusula 13, em que o perfil de operação compreende um perfil de operação especifico do cliente, e em que a pluralidade de métricas operacionais históricas estão associadas com a inicialização ou a utilização da carga de trabalho de software pelo cliente.28. 0 método implementado por computador da cláusula 13, em que o perfil de operação compreende uma mediana, desvio padrão, ou histograma de utilização de uma métrica em operação histórica.29. 0 método implementado por computador da cláusula 13, em que o perfil de operação baseia-se, pelo menos em parte, nas métricas operacionais históricas de um determinado periodo de tempo.30. Um sistema de gestão dos recursos de computação compartilhado, o sistema compreende:um ou mais processadores; euma memória legivel por computador que armazena as instruções executáveis que, quando executado por um ou mais processadores, para configurar o sistema:recebe um pedido para inicializar uma primeira instância de uma primeira máquina virtual, a primeira máquina virtual associada com a utilização de uma quantidade esperada de um primeiro recurso de computação, em que a primeira quantidade de utilização esperada baseia-se, pelo menos em parte, em métricas operacionais determinadas a partir de execução anteriormente pelo menos, um exemplo de uma máquina virtual semelhante;seleciona um dispositivo de computação de uma pluralidade de dispositivos de computação configurados para fornecer o primeiro recurso de computação, em que uma segunda instância de uma segunda máquina virtual está em execução no dispositivo de computação, em que uma quantidade pré-determinada do primeiro recurso de computação é reservada para uso pela segunda instância, e em que o dispositivo de computação é selecionado com base pelo menos em parte, a quantidade predeterminada sendo maior do que a soma da primeira quantidade de utilizaçãoesperada e uma segunda quantidade de utilização esperada, associada com o segundo exemplo, do primeiro recurso decomputação; ecausa, pelo menos em parte, o primeiro exemplo a ser inicializado no dispositivo de computação, em que o primeiro exemplo e o segundo exemplo compartilham a quantidade predeterminada do primeiro recurso de computação.31. 0 sistema da cláusula 30, em que o primeiro recurso de computação compreende uma de capacidade de unidade central de processamento (CPU), espaço de memória, largura de banda, espaço em disco rigido, ou energia elétrica.32. O sistema da cláusula 30, em que a primeira instância e segunda instância são associadas a diferentes clientes.33. O sistema da cláusula 30, em que as instruções executáveis configuram adicionalmente para o sistema:causar, pelo menos em parte, uma terceira instância de uma terceira máquina virtual para ser inicializada no dispositivo de computação,em que a terceira instância está associada com uma terceira quantidade de utilização esperada do primeiro recurso de computação,em que a quantidade predeterminada é ainda maior do que a soma da primeira quantidade esperada de utilização, a segunda quantidade de utilização esperada, e a terceira quantidade de utilização esperada,e em que a primeira instância, na segunda instância, e a terceira instância compartilham a quantidade predeterminada do primeiro recurso de computação.34. O sistema da cláusula 30, em que as instruções executáveis configuram adicionalmente para o sistema:obter uma primeira medição de utilização do primeiro recurso de computação pela primeira instância e um segundo cálculo da utilização do primeiro recurso de computação pela segunda instância; e em resposta à determinação de que a primeira medição ou a segunda medição excede um limite, transfere a primeira instância ou a segunda instância a um segundo dispositivo de computação.35. Um método implementado por computador para gerir os recursos de computação compartilhados, o método implementado por computador compreendendo:receber, através de um sistema de gestão de centro de dados compreendendo um ou mais dispositivos de computação, um pedido para inicializar uma primeira carga de trabalho de software associada com uma primeira restrição de operação, a primeira restrição de operação baseada pelo menos em parte, em uma primeira pluralidade de métricas operacionais históricas relativas a operação da primeira carga de trabalho de software em um dispositivo de computação hospedeiro;em resposta ao pedido, a identificação de um primeiro dispositivo de computação hospedeiro de uma pluralidade de dispositivos de computação hospedeiro com base em, pelo menos, na primeira restrição operacional e uma ou mais características de operação associadas com o primeiro dispositivo de computação hospedeiro,em que o primeiro dispositivo de computação hospedeiro compreende uma segunda carga de trabalho de software associada com uma segunda restrição de operação, eem que identificar compreende determinar se uma ou mais características de operação do primeiro dispositivo de computação hospedeiro são susceptíveis de satisfazer, a primeira restrição de operação e a segunda restrição de operação; ecausar, pelo menos em parte, a primeira carga de trabalho de software a ser colocada sobre o primeiro dispositivo de 36. 0 método implementado por computador da cláusula 35, em que a primeira carga de trabalho de software ou a segunda carga de trabalho de software compreende uma instância de máquina virtual, uma instância do aplicativo, ou um sistema operacional.37. 0 método implementado por computador da cláusula 35, em que a primeira carga de trabalho de software compreende um nó de armazenamento, e em que identificar compreende ainda que determinar se o posicionamento do nó de armazenamento no primeiro dispositivo de computação hospedeiro satisfaz uma restrição operacional associada com uma máquina virtual que usará o nó de armazenamento.38. 0 método implementado por computador da cláusula 35, em que pelo menos uma das uma ou mais características de operação compreende capacidade de memória, capacidade de unidade central de processamento (CPU), largura de banda, latência da rede, a posição dentro de uma topologia de rede, o conjunto de instruções, a variância de uma métrica de desempenho, ou a capacidade de energia elétrica.39. 0 método implementado por computador da cláusula 35, em que a primeira restrição operacional ou a segunda restrição operacional se referem à utilização de memória, unidade de processamento central (CPU), utilização da largura de banda, latência de rede, posição dentro de uma topologia de rede, disponibilidade de conjunto de instruções, variância de uma métrica de desempenho, ou a utilização de energia.40. O método implementado por computador da cláusula 35, em que a primeira restrição de operação se refere a uma primeira quantidade de utilização esperada de um primeiro recurso de computação, e a segunda restrição de operação se refere a uma segunda quantidade de utilização esperada do primeiro recurso de computação, e em que o primeiro programa executável por computador e o segundo programa executável por computador estão ativados para consumir simultaneamente a primeira quantidade de utilização esperada e a segunda quantidade de utilização prevista, respectivamente, do primeiro recurso de computação.41. 0 método implementado por computador da cláusula 40, em que uma característica de operação de uma ou mais características de operação compreende uma quantidade disponível do primeiro recurso de computação, o método implementado por computador, que compreende ainda:prevenir, pelo menos em parte, o primeiro programa executável em computador e o segundo programa executável em computador a partir de agregadamente consumir mais do que a quantidade disponível do primeiro recurso de computação.42. 0 método implementado por computador da cláusula 35, que compreende ainda causar, pelo menos em parte, um terceiro programa executável em computador a ser inicializado no primeiro dispositivo de computação hospedeiro,em que o terceiro programa executável em computador está associado com uma terceira restrição operacional, eem que uma ou mais características de operação do primeiro dispositivo de computação hospedeiro são susceptíveis de satisfazer cada uma das primeira restrição de operação, a segunda restrição de operação, e a terceira restrição operacional.43. O método implementado por computador da cláusula 35, que compreende ainda:obter uma ou mais métricas operacionais relacionadas com a operação do primeiro programa executável em computador no primeiro dispositivo de computação hospedeiro; e em resposta à determinação, com base, pelo menos em parte, de uma ou mais métricas de operação, que a primeira restrição não é mais provável que seja satisfeita, a transferência do primeiro programa executável em computador ou o segundo programa executável em computador para um segundo dispositivo de computação hospedeiro.44. O método implementado por computador da cláusula 35, que compreende ainda:obter uma ou mais métricas operacionais referentes à operação do segundo programa executável em computador no primeiro dispositivo de computação hospedeiro; eem resposta à determinação, com base, pelo menos em parte, de um ou mais métricas de operação, que a segunda restrição não é mais provável que seja satisfeita, a transferência do primeiro programa executável em computador ou o segundo programa executável em computador para um segundo dispositivo de computação hospedeiro.45. O método implementado por computador da cláusula 35, que compreende ainda:obter uma ou mais métricas de operação em relação a uma ou mais características de operação do primeiro dispositivo de computação hospedeiro; eem resposta à determinação, com base, pelo menos em parte, a uma ou mais métricas de operação, que a primeira restrição ou a segunda restrição não é mais provável que seja satisfeita, a transferência do primeiro programa executável em computador ou o segundo programa executável em computador para um segundo dispositivo de computação hospedeiro.46. Um sistema de gestão dos recursos de computação compartilhado, o sistema compreende: um ou mais processadores;uma memória legivel por computador que armazena as instruções executáveis que, quando executadas por um ou mais processadores, para configuram o sistema para:receber um pedido para inicializar um primeiro programa executável em computador associado com uma primeira restrição de operação, a primeira restrição operacional baseada pelo menos em parte, em uma primeira pluralidade de métricas operacionais históricas relativas a operação do primeiro programa executável em computador sobre um dispositivo de computação hospedeiro; eidentificar um primeiro dispositivo de computação hospedeiro de uma pluralidade de dispositivos de computação hospedeiro, o primeiro dispositivo de computação hospedeiro associada a uma ou mais características de operação,em que o primeiro dispositivo de computação hospedeiro compreende um segundo programa executável em computador associado com uma segunda restrição de operação, eem que o primeiro dispositivo de computação hospedeiro é identificado com base, pelo menos em parte, em uma ou mais características de operação que satisfazem ambas a primeira restrição de operação e a segunda restrição de operação.47. 0 sistema da cláusula 46, em que as instruções executáveis configuram adicionalmente o sistema para fazer com que, pelo menos em parte, o primeiro programa executável em computador seja executado no primeiro dispositivo de computação hospedeiro.48. 0 sistema da cláusula 46, em que o primeiro programa executável em computador ou o segundo programa executável em computador compreende uma instância de uma máquina virtual, uma instância de aplicativo, ou um sistema operacional. 49. 0 sistema da cláusula 46, em que pelo menos uma das uma ou mais características de operação compreende capacidade de memória, capacidade de unidade central de processamento (CPU), largura de banda, latência da rede, a posição dentro de uma topologia de rede, o conjunto de instruções, a variância de uma métrica de desempenho, ou a capacidade de energia elétrica.50. O sistema da cláusula 46, em que a primeira restrição de operação ou a segunda restrição de operação se referem a utilização de memória, unidade de processamento central (CPU), utilização da largura de banda, latência de rede, posição dentro de uma topologia de rede, disponibilidade de conjunto de instruções, variância de uma métrica de desempenho, ou a utilização de energia.51. O sistema da cláusula 46, em que a primeira restrição de operação se refere a uma primeira quantidade de utilização esperada de um primeiro recurso de computação, e a segunda restrição de operação se refere a uma segunda quantidade de utilização esperada do primeiro recurso de computação, e em que o primeiro programa executável em computador e o segundo programa executável em computador estão ativados para consumir simultaneamente a primeira quantidade de utilização esperada e a segunda quantidade de utilização prevista, respectivamente, do primeiro recurso de computação.52. 0 sistema da cláusula 51, em que as instruções executáveis configuram adicionalmente o sistema para evitar que, pelo menos em parte, o primeiro programa executável em computador e o segundo programa executável em computador a partir de agregadamente consumir mais do que uma quantidade disponível do primeiro recurso de computação. 53. 0 sistema da cláusula 46, em que as instruções executáveis configuram adicionalmente para o sistema:determinar se o uma ou mais características de operação do primeiro dispositivo de computação hospedeiro são susceptíveis de satisfazer cada uma das primeira restrição de operação, a segunda restrição de operação, e uma terceira restrição de operação, a terceira restrição de operação associada com um terceiro programa executável em computador; ecausar, pelo menos em parte, o terceiro programa executável em computador para ser inicializado no primeiro dispositivo de computação hospedeiro.54. 0 sistema da cláusula 46, em que as instruções executáveis configuram adicionalmente para o sistema:obter um ou mais métricas operacionais relacionadas com o operação do primeiro programa executável em computador no primeiro dispositivo de computação hospedeiro; eem resposta à determinação, com base, pelo menos em parte, de uma ou mais métricas de operação, que a primeira restrição não é mais provável que seja satisfeita, a transferência do primeiro programa executável em computador ou o segundo programa executável em computador para um segundo dispositivo de computação hospedeiro.55. 0 sistema da cláusula 46, em que as instruções executáveis configuram adicionalmente para o sistema:obter uma ou mais métricas operacionais relacionadas com o operação do segundo programa executável em computador no primeiro dispositivo de computação hospedeiro; eem resposta à determinação, com base, pelo menos em parte, de uma ou mais métricas de operação, que a segunda restrição não é mais provável que seja satisfeita, a transferência do primeiro programa executável em computador ou o segundo programa executável em computador para um segundo dispositivo de computação hospedeiro.56. 0 sistema da cláusula 46, em que as instruções executáveis configuram adicionalmente para o sistema:obter uma ou mais métricas de operação em relação a uma ou mais características de operação do primeiro dispositivo de computação hospedeiro; eem resposta à determinação, com base, pelo menos em parte, de uma ou mais métricas de operação, que a primeira restrição ou a segunda restrição não é mais provável que sejam satisfeitas, a transferência do primeiro programa executável em computador ou o segundo programa executável por computador para um segundo dispositivo de computação hospedeiro.
[0064] Dependendo da modalidade, certos atos, eventos ou funções de qualquer um dos processos ou algoritmos descritos aqui podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos, ou deixados de fora (por exemplo, nem todas as operações descritas ou eventos são necessários para a prática do algoritmo). Além disso, em certas modalidades, as operações ou acontecimentos podem ser realizados simultanea-mente, por exemplo, através do processamento de múltiplos segmentos, o processamento de interrupção, ou processadores múltiplos ou núcleos de processador ou em outras arquiteturas paralelas, em vez de sequencialmente.
[0065] Os vários blocos lógicos ilustrativos, módulos, rotinas e etapas do algoritmo descritos em relação às modalidades aqui divulgadas podem ser implementados como hardware eletrônico, software de computador, ou combinações de ambos. Para ilustrar claramente esta intercambialidade de hardware e software, vários componentes ilustrativos, blocos, módulos, e etapas foram descritos acima, geralmente em termos da sua funcionalidade. Se essa funcionalidade é implementada como hardware ou software depende de sua aplicação e design de restrições especificas impostas ao sistema global. A funcionalidade descrita pode ser implementada de várias formas para cada aplicação em particular, mas tais decisões de execução não devem ser interpretadas como causa de afastamento do escopo da revelação.
[0066] As etapas de um método, processo, rotina, ou algoritmo descritas em relação com as modalidades aqui descritas podem ser incorporadas diretamente em hardware, em um módulo de software executado por um processador, ou em uma combinação dos dois. Um módulo de software pode residir na memória RAM, memória flash, memória ROM, EPROM, EEPROM, registros, disco rigido, um disco amovivel, um CD-ROM, ou qualquer outra forma de meio de armazenamento não transitório legivel por computador. Um meio de armazenamento exemplar pode ser acoplado ao processador de modo que o processador possa ler informação a partir de, e escrever informação para, o meio de armazenamento. Em alternativa, o meio de armazenamento pode ser parte integral do processador. O processador e o suporte de armazenamento podem residir em um ASIC. O ASIC pode residir em um terminal de usuário. Em alternativa, o processador e o suporte de armazenamento podem residir como componentes discretos em um terminal do usuário.
[0067] A linguagem condicional aqui utilizada, como, entre outros, "pode", "poderia", "podem", "poderá", "por exemplo," e similares, a menos que especificamente indicado de outra forma, ou de outra forma compreendida dentro do contexto como usado, destina-se geralmente a transmitir que certas modalidades incluem, enquanto que outras modalidades não incluem, certas características, elementos e/ou etapas. Assim, tal linguagem condicional não é geralmente a intenção de sugerir que as características, elementos e /ou etapas são de qualquer forma necessárias para uma ou mais modalidades, ou que uma ou mais modalidades, necessariamente, incluem lógica para decidir, com ou sem entrada ou indução do autor, se destas características, elementos e/ou etapas sejam introduzidos ou realizados em qualquer modalidade particular. Os termos "compreendendo", "incluindo", "ter", e outros, são sinônimos e são utilizadas, inclusive, de uma forma aberta, e não excluem elementos adicionais, recursos, atos, operações e assim por diante. Além disso, o termo "ou" é usado no seu sentido inclusivo (e não no seu sentido exclusivo), de modo que, quando usado, por exemplo, para ligar uma lista de elementos, o termo "ou" significa um, alguns ou todos os elementos na lista.
[0068] A linguagem conjuntiva, como a frase "pelo menos um de X, Y e Z," a menos que especificamente indicado de outra forma, deve ser entendido com o contexto como utilizado em geral para exprimir que um item, duração, etc., podem ser tanto X, Y ou Z, ou uma combinação dos mesmos. Assim, tal linguagem conjuntiva não é geralmente a intenção de sugerir que certas modalidades requerem pelo menos um de X, de pelo menos um de Y e pelo menos um dos Z a cada um estando presente.
[0069] Embora a descrição detalhada acima tenha mostrado, descrito e apontado características inovadoras como aplicadas a várias modalidades, pode ser entendido que várias omissões, substituições e alterações na forma e nos detalhes dos dispositivos ou algoritmos ilustrados podem ser feitas sem afastamento do espírito da divulgação. Como pode ser reconhecido, certas modalidades das invenções aqui descritas podem ser incorporadas dentro de uma forma que não proporciona todas as caracteristicas e os beneficios aqui estabelecidos, como algumas caracteristicas podem ser usadas separadamente ou praticadas de outros. 0 escopo de certas invenções aqui descritas é indicado pelas reivindicações anexas e não pela descrição anterior. Todas as mudanças que vêm dentro do significado e alcance de equivalência das reivindicações deve ser englobadas pelo seu escopo.

Claims (12)

1. Sistema para perfilamento de utilização de recursos de computação, o sistema caracterizado pelo fato de que compreende:um ou mais processadores;uma memória legível por computador incluindo instruções executáveis que, quando executadas por um ou mais processadores, configuram o sistema para:determinar uma restrição de operação (306) para uma instância de uma máquina virtual baseada pelo menos em parte em métricas operacionais determinadas a partir da execução de pelo menos uma instância de uma máquina virtual similar, em que a restrição de operação se refere a uma quantidade esperada de utilização de um recurso de computação pelo dispositivo de computação hospedeiro;receber um pedido (504) para instanciar a máquina virtual; eem resposta ao pedido:identificar um dispositivo de computação hospedeiro (508), de uma pluralidade de dispositivos de computação hospedeiros, associado a uma ou mais características operacionais relacionadas com a operação de instâncias de máquina virtual baseada, em parte, no fato de que uma ou mais características operacionais satisfazem a restrição de operação, em que pelo menos uma das uma ou mais características operacionais compreende capacidade de memória, capacidade de unidade central de processamento (CPU), largura de banda, latência de rede, posição dentro de uma topologia de rede, conjunto de instruções ou variância de uma métrica de desempenho; efazer com que uma nova instância da máquina virtual seja instanciada no dispositivo de computação hospedeiro (510).
2. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que pelo menos uma das métricas de operação se refere à unidade central de processamento (CPU), à utilização da memória, à utilização da rede, à utilização do disco rígido ou à utilização de energia elétrica.
3. Sistema, de acordo com a reivindicação 1 ou reivindicação 2, caracterizado pelo fato de que a quantidade esperada de utilização é ainda baseada, pelo menos em parte, em dados recebidos a partir de um cliente associado à máquina virtual.
4. Sistema, de acordo com qualquer uma das reivindicações anteriores 1 a 3, caracterizado pelo fato de que o módulo, quando executado, é ainda configurado para:receber uma métrica de operação adicional sobre a operação da nova instância no dispositivo de computação hospedeiro, a métrica de operação adicional relacionada com as uma ou mais características de operação; eem resposta à determinação, com base na métrica de operação adicional, que a uma ou mais características de operação já não satisfazem a restrição de operação, transferir a nova instância a um segundo dispositivo de computação associado a uma ou mais características de operação adicional que satisfazem a restrição de operação.
5. Método implementado por computador para perfilamento de utilização de recursos de computação, o método implementado por computador caracterizado pelo fato de que compreende:receber, por um componente de gestão de centro de dados compreendendo um ou mais dispositivos de computação, um pedido para a inicialização de uma carga de trabalho de software associada a um perfil de operação, em que o perfil de operação é determinado baseado, pelo menos em parte, em uma pluralidade de métricas operacionais históricas associadas à carga de trabalho de software; e em resposta ao pedido:identificar um dispositivo de computação de uma pluralidade de dispositivos de computação baseados pelo menos em parte, no perfil de operação e uma ou mais características operacionais associadas ao dispositivo de computação, em que uma característica operacional das uma ou mais características operacionais compreende disponibilidade do primeiro recurso de computação; efazer com que a carga de trabalho de software seja inicializada no dispositivo de computação.
6. Método implementado por computador, de acordo com a reivindicação 5, caracterizado pelo fato de que o perfil de operação compreende uma primeira quantidade esperada de utilização de recursos associada a um primeiro recurso de computação, em que a primeira quantidade de utilização de recursos esperada baseia-se, pelo menos em parte, em uma pluralidade de métricas operacionais históricas sobre a utilização do primeiro recurso.
7. Método implementado por computador, de acordo com a reivindicação 6, caracterizado pelo fato de que cada uma da pluralidade de métricas operacionais históricas em relação ao uso do primeiro recurso está associada a um tempo que uma medição de utilização foi registrado, e em que o perfil de operação se baseia ainda, pelo menos em parte, no tempo em que cada uma da pluralidade de métricas operacionais históricas foi registrada.
8. Método implementado por computador, de acordo com qualquer uma das reivindicações 5-7, caracterizado pelo fato de que compreende ainda determinar o perfil de operação com base, pelo menos em parte, em um nível de serviço de acordo com um cliente associado à carga de trabalho de software.
9. Método implementado por computador, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende ainda:receber uma métrica de operação substancialmente atual de operação de carga de trabalho do software no dispositivo de computação, a métrica de operação substancialmente atual relacionada com as uma ou mais características operacionais; eem resposta à determinação, com base na métrica de operação substancialmente atual, que nenhuma das uma ou mais características operacionais associadas ao dispositivo de computação correspondem à característica operacional desejada, transferir a carga de trabalho de software para o segundo dispositivo de computação associado a uma característica operacional correspondente à característica operacional desejada.
10. Método implementado por computador, de acordo com qualquer uma das reivindicações 5 a 9, caracterizado pelo fato de que o perfil de operação compreende um primeiro perfil de operação predefinido de uma pluralidade de perfis de operação predefinidos.
11. Método implementado por computador, de acordo com a reivindicação 10, caracterizado pelo fato de que os perfis de operação predefinidos estão associados a níveis em uma hierarquia de operação, e em que o primeiro perfil de operação predefinido está associado ao nível mais elevado, em relação à carga de trabalho de software, da hierarquia de operação.
12. Método implementado por computador, de acordo com qualquer uma das reivindicações 5 a 11, caracterizado pelo fato de que o perfil de operação compreende um perfil de operação específico do cliente, e em que a pluralidade de métricas operacionais históricas estão associadas à inicialização ou a utilização da carga de trabalho de software pelo cliente.
BR112015005588-5A 2012-09-20 2013-09-17 Sistema e método implementado por computador para perfilamento de utilização de recursos de computação. BR112015005588B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/623,847 2012-09-20
US13/623,847 US9135048B2 (en) 2012-09-20 2012-09-20 Automated profiling of resource usage
US13/623,845 2012-09-20
US13/623,845 US9323577B2 (en) 2012-09-20 2012-09-20 Automated profiling of resource usage
PCT/US2013/060200 WO2014047073A1 (en) 2012-09-20 2013-09-17 Automated profiling of resource usage

Publications (2)

Publication Number Publication Date
BR112015005588A2 BR112015005588A2 (pt) 2017-10-10
BR112015005588B1 true BR112015005588B1 (pt) 2022-01-18

Family

ID=49261806

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015005588-5A BR112015005588B1 (pt) 2012-09-20 2013-09-17 Sistema e método implementado por computador para perfilamento de utilização de recursos de computação.

Country Status (10)

Country Link
EP (1) EP2898410B1 (pt)
JP (1) JP6049887B2 (pt)
CN (1) CN104854563B (pt)
AU (1) AU2013318249B2 (pt)
BR (1) BR112015005588B1 (pt)
CA (1) CA2884796C (pt)
IN (1) IN2015DN02823A (pt)
RU (1) RU2605473C2 (pt)
SG (2) SG10201705920SA (pt)
WO (1) WO2014047073A1 (pt)

Families Citing this family (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991910B2 (en) 2008-11-17 2011-08-02 Amazon Technologies, Inc. Updating routing information based on client location
US8028090B2 (en) 2008-11-17 2011-09-27 Amazon Technologies, Inc. Request routing utilizing client location information
US7970820B1 (en) 2008-03-31 2011-06-28 Amazon Technologies, Inc. Locality based content distribution
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US8321568B2 (en) 2008-03-31 2012-11-27 Amazon Technologies, Inc. Content management
US7962597B2 (en) 2008-03-31 2011-06-14 Amazon Technologies, Inc. Request routing based on class
US8447831B1 (en) 2008-03-31 2013-05-21 Amazon Technologies, Inc. Incentive driven content delivery
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US8073940B1 (en) 2008-11-17 2011-12-06 Amazon Technologies, Inc. Managing content delivery network service providers
US8122098B1 (en) 2008-11-17 2012-02-21 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US8688837B1 (en) 2009-03-27 2014-04-01 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US8756341B1 (en) 2009-03-27 2014-06-17 Amazon Technologies, Inc. Request routing utilizing popularity information
US8412823B1 (en) 2009-03-27 2013-04-02 Amazon Technologies, Inc. Managing tracking information entries in resource cache components
US8782236B1 (en) 2009-06-16 2014-07-15 Amazon Technologies, Inc. Managing resources using resource expiration data
US8397073B1 (en) 2009-09-04 2013-03-12 Amazon Technologies, Inc. Managing secure content in a content delivery network
US8433771B1 (en) 2009-10-02 2013-04-30 Amazon Technologies, Inc. Distribution network with forward resource propagation
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US8468247B1 (en) 2010-09-28 2013-06-18 Amazon Technologies, Inc. Point of presence management in request routing
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US8452874B2 (en) 2010-11-22 2013-05-28 Amazon Technologies, Inc. Request routing processing
US10467042B1 (en) 2011-04-27 2019-11-05 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US9154551B1 (en) 2012-06-11 2015-10-06 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9842039B2 (en) 2014-03-31 2017-12-12 Microsoft Technology Licensing, Llc Predictive load scaling for services
US9722945B2 (en) 2014-03-31 2017-08-01 Microsoft Technology Licensing, Llc Dynamically identifying target capacity when scaling cloud resources
GB201409056D0 (en) 2014-05-21 2014-07-02 Univ Leeds Datacentre
US10445134B2 (en) * 2014-06-03 2019-10-15 Amazon Technologies, Inc. Identifying candidate workloads for migration
EP3191948A1 (en) * 2014-09-10 2017-07-19 Amazon Technologies Inc. Computing instance launch time
US10402746B2 (en) 2014-09-10 2019-09-03 Amazon Technologies, Inc. Computing instance launch time
US10693946B2 (en) 2014-09-16 2020-06-23 Amazon Technologies, Inc. Instance backed mobile devices
US9256467B1 (en) 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US9971621B1 (en) * 2015-02-02 2018-05-15 Amazon Technologies, Inc. Hotpooling virtual machines
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US9916233B1 (en) 2015-03-27 2018-03-13 Amazon Technologies, Inc. Using containers for update deployment
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US9998150B1 (en) 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US10977128B1 (en) 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US10609122B1 (en) 2015-06-29 2020-03-31 Amazon Technologies, Inc. Instance backed building or place
US11061969B1 (en) 2015-06-29 2021-07-13 Amazon Technologies, Inc. Instance backed mobile devices with multiple instances
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US9998539B1 (en) 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US9690622B1 (en) 2015-08-24 2017-06-27 Amazon Technologies, Inc. Stateless instance backed mobile devices
US10911404B1 (en) 2015-08-24 2021-02-02 Amazon Technologies, Inc. Attribute based authorization
US9928141B1 (en) 2015-09-21 2018-03-27 Amazon Technologies, Inc. Exploiting variable media size in grid encoded data storage systems
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9940474B1 (en) 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10782990B1 (en) 2015-11-24 2020-09-22 Amazon Technologies, Inc. Container telemetry
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10127105B1 (en) 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10032032B2 (en) 2015-12-18 2018-07-24 Amazon Technologies, Inc. Software container registry inspection
US10002247B2 (en) 2015-12-18 2018-06-19 Amazon Technologies, Inc. Software container registry container image deployment
US10261782B2 (en) 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10007586B2 (en) * 2016-01-08 2018-06-26 Microsoft Technology Licensing, Llc Deferred server recovery in computing systems
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US9977697B2 (en) * 2016-04-15 2018-05-22 Google Llc Task management system for a modular electronic device
US9990235B2 (en) * 2016-04-15 2018-06-05 Google Llc Determining tasks to be performed by a modular entity
US10135837B2 (en) 2016-05-17 2018-11-20 Amazon Technologies, Inc. Versatile autoscaling for containers
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10505961B2 (en) 2016-10-05 2019-12-10 Amazon Technologies, Inc. Digitally signed network address
US10412022B1 (en) 2016-10-19 2019-09-10 Amazon Technologies, Inc. On-premises scaling using a versatile scaling service and an application programming interface management service
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US10409642B1 (en) 2016-11-22 2019-09-10 Amazon Technologies, Inc. Customer resource monitoring for versatile scaling service scaling policy recommendations
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10296367B2 (en) * 2017-02-03 2019-05-21 Microsoft Technology Licensing, Llc Resource management for virtual machines in cloud computing systems
US10423455B2 (en) * 2017-02-03 2019-09-24 Microsoft Technology Licensing, Llc Method for deploying virtual machines in cloud computing systems based on predicted lifetime
US10942760B2 (en) 2017-02-03 2021-03-09 Microsoft Technology Licensing, Llc Predictive rightsizing for virtual machines in cloud computing systems
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US11140455B1 (en) 2017-06-09 2021-10-05 Amazon Technologies, Inc. Video encoder network sandboxing
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
WO2019030889A1 (ja) * 2017-08-10 2019-02-14 株式会社日立製作所 計算機運用管理システムおよび方法
US10742593B1 (en) 2017-09-25 2020-08-11 Amazon Technologies, Inc. Hybrid content request routing system
JP6681377B2 (ja) 2017-10-30 2020-04-15 株式会社日立製作所 リソースの割り当てを最適化するシステム及び方法
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
WO2019185561A1 (en) 2018-03-25 2019-10-03 British Telecommunications Public Limited Company Dynamic network adaptation
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US11669365B1 (en) 2019-08-26 2023-06-06 Amazon Technologies, Inc. Task pool for managed compute instances
US11422842B2 (en) 2019-10-14 2022-08-23 Microsoft Technology Licensing, Llc Virtual machine operation management in computing devices
RU2752241C2 (ru) * 2019-12-25 2021-07-23 Общество С Ограниченной Ответственностью «Яндекс» Способ и система для выявления вредоносной активности предопределенного типа в локальной сети
US11256493B1 (en) 2020-11-03 2022-02-22 Bank Of America Corporation Container image optimizer
KR20220064806A (ko) * 2020-11-12 2022-05-19 삼성전자주식회사 소프트웨어 패키지에 gpu를 할당하는 방법 및 장치
US20220414577A1 (en) * 2021-06-28 2022-12-29 Dell Products L.P. System and method for performance-centric workload placement in a hybrid cloud environment
US11736348B2 (en) 2021-06-28 2023-08-22 Dell Products L.P. System and method for network services based functionality provisioning in a VDI environment

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070271560A1 (en) * 2006-05-18 2007-11-22 Microsoft Corporation Deploying virtual machine to host based on workload characterizations
JP5110315B2 (ja) * 2006-05-24 2012-12-26 日本電気株式会社 仮想マシン管理装置、仮想マシン管理方法およびプログラム
US8099487B1 (en) * 2006-07-06 2012-01-17 Netapp, Inc. Systems and methods for determining placement of virtual machines
US20090265707A1 (en) * 2008-04-21 2009-10-22 Microsoft Corporation Optimizing application performance on virtual machines automatically with end-user preferences
US8365183B2 (en) * 2008-09-02 2013-01-29 Ca, Inc. System and method for dynamic resource provisioning for job placement
US8131519B2 (en) * 2008-09-30 2012-03-06 Hewlett-Packard Development Company, L.P. Accuracy in a prediction of resource usage of an application in a virtual environment
JP2010224756A (ja) * 2009-03-23 2010-10-07 Nec Corp 仮想マシン再配置システム、方法、プログラム、及び仮想マシン管理装置
US8464267B2 (en) * 2009-04-10 2013-06-11 Microsoft Corporation Virtual machine packing method using scarcity
US8261266B2 (en) * 2009-04-30 2012-09-04 Microsoft Corporation Deploying a virtual machine having a virtual hardware configuration matching an improved hardware profile with respect to execution of an application
US9424094B2 (en) * 2009-06-01 2016-08-23 International Business Machines Corporation Server consolidation using virtual machine resource tradeoffs
US8694638B2 (en) * 2009-06-29 2014-04-08 Red Hat Israel Selecting a host from a host cluster to run a virtual machine
JP5490580B2 (ja) * 2010-03-16 2014-05-14 株式会社日立ソリューションズ 仮想マシン制御システム
WO2011110026A1 (zh) * 2010-10-29 2011-09-15 华为技术有限公司 一种实现数据中心资源负载均衡的方法及装置

Also Published As

Publication number Publication date
IN2015DN02823A (pt) 2015-09-11
WO2014047073A1 (en) 2014-03-27
JP2015532992A (ja) 2015-11-16
BR112015005588A2 (pt) 2017-10-10
RU2605473C2 (ru) 2016-12-20
EP2898410A1 (en) 2015-07-29
CA2884796C (en) 2018-12-11
AU2013318249B2 (en) 2016-04-21
SG10201705920SA (en) 2017-08-30
RU2015114568A (ru) 2016-11-10
SG11201501987UA (en) 2015-04-29
AU2013318249A1 (en) 2015-04-02
CA2884796A1 (en) 2014-03-27
EP2898410B1 (en) 2022-04-27
JP6049887B2 (ja) 2016-12-21
CN104854563A (zh) 2015-08-19
CN104854563B (zh) 2018-09-18

Similar Documents

Publication Publication Date Title
BR112015005588B1 (pt) Sistema e método implementado por computador para perfilamento de utilização de recursos de computação.
US10542079B2 (en) Automated profiling of resource usage
US9135048B2 (en) Automated profiling of resource usage
TWI591542B (zh) 雲端計算節點、方法與系統及電腦可讀媒體
US10623481B2 (en) Balancing resources in distributed computing environments
Chen et al. RIAL: Resource intensity aware load balancing in clouds
US10353730B2 (en) Running a virtual machine on a destination host node in a computer cluster
Lu et al. QoS-aware VM placement in multi-domain service level agreements scenarios
Dargie Estimation of the cost of VM migration
Inomata et al. Proposal and evaluation of a dynamic resource allocation method based on the load of VMs on IaaS
Hasan et al. Heuristic based energy-aware resource allocation by dynamic consolidation of virtual machines in cloud data center
Sotiriadis et al. The inter-cloud meta-scheduling (ICMS) framework
Shen et al. Resource demand misalignment: An important factor to consider for reducing resource over-provisioning in cloud datacenters
Fuerst et al. Kraken: Online and elastic resource reservations for cloud datacenters
Jain et al. A threshold band based model for automatic load balancing in cloud environment
US11943150B2 (en) Tracking application scaling for network bandwidth allocation
Lu et al. QoS-based resource allocation framework for multidomain SLA management in clouds
US11403130B2 (en) Method and apparatus for workload volatility management in cloud computing
Vakilinia Performance modeling and optimization of resource allocation in cloud computing systems
US11886926B1 (en) Migrating workloads between computing platforms according to resource utilization
Datt et al. Monitoring list for compute infrastructure in Eucalyptus cloud
Zhang CoolCloud: Improving energy efficiency in virtualized data centers
Fernandes Green-Cloud
Vachon et al. Automated dynamic redistribution of virtual operating systems under the xen virtual machine monitor.
Rodríguez-Haro et al. Description of a Low level Virtual-Resource QoS CPU manager

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 17/09/2013, OBSERVADAS AS CONDICOES LEGAIS.