BR112020017898A2 - Sistema e método para processamento distribuído seguro através de redes de nós de processamento heterogêneo - Google Patents

Sistema e método para processamento distribuído seguro através de redes de nós de processamento heterogêneo Download PDF

Info

Publication number
BR112020017898A2
BR112020017898A2 BR112020017898-5A BR112020017898A BR112020017898A2 BR 112020017898 A2 BR112020017898 A2 BR 112020017898A2 BR 112020017898 A BR112020017898 A BR 112020017898A BR 112020017898 A2 BR112020017898 A2 BR 112020017898A2
Authority
BR
Brazil
Prior art keywords
command center
member device
work package
network interface
fact
Prior art date
Application number
BR112020017898-5A
Other languages
English (en)
Inventor
Guilherme Spina
Leonardo De Moura Rocha Lima
Original Assignee
V2Com S.A.
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
Application filed by V2Com S.A. filed Critical V2Com S.A.
Publication of BR112020017898A2 publication Critical patent/BR112020017898A2/pt

Links

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]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

um método para processamento distribuído inclui o recebimento de um pacote de trabalho em um centro de comando que compreende um processador, uma interface de rede, e uma memória. o método inclui determinar um valor de uma dimensão do pacote de trabalho, determinar, com base em uma regra predeterminada aplicada ao valor determinado da dimensão do pacote de trabalho, um custo de processamento agregado para o pacote de trabalho e identificar um ou mais dispositivos membros disponíveis comunicativamente conectado ao centro de comando por meio da interface de rede. além disso, o método inclui as operações de divisão do pacote de trabalho em um ou mais encadeamentos com base em pelo menos um do valor determinado da dimensão, o custo de processamento agregado ou os dispositivos membros disponíveis, repartindo um encadeamento de um ou mais encadeamentos para um dispositivo membro e transmitindo, por meio da interface de rede, o encadeamento repartido para um ambiente de processamento seguro do dispositivo membro.

Description

SISTEMA E MÉTODO PARA PROCESSAMENTO DISTRIBUÍDO SEGURO ATRAVÉS DE REDES DE NÓS DE PROCESSAMENTO HETEROGÊNEO REFERÊNCIA CRUZADA À PEDIDOS RELACIONADOS
[0001]Este pedido reivindica o benefício do Pedido Provisório dos Estados Unidos N°. de Série 62/637.267 depositado em 1 de março de 2018. O pedido provisório é incorporado neste documento por referência como se reproduzido integralmente abaixo.
CAMPO TÉCNICO
[0002]Esta divulgação se refere geralmente à computação distribuída e à Internet das Coisas (IoT). Mais especificamente, esta divulgação se refere a sistemas e métodos para processamento distribuído seguro através de redes de nós de processamento heterogêneos.
ANTECEDENTES
[0003]A proliferação de controle implementado por processador de dispositivos não computacionais, tanto no contexto público (por exemplo, postes de luz, sinais de trânsito, medidores elétricos) e em residência (por exemplo, luzes conectadas à Internet, sistemas de automação residencial, plataformas de transmissão de mídia), às vezes referido como a "Internet das Coisas" (IoT) apresenta, no mínimo, uma oportunidade vasta e amplamente inexplorada para a coleta e processamento de dados em escala e níveis de granularidade antes inimagináveis. Por exemplo, os controladores usados em certos sistemas de automação residencial IoT podem, durante o curso da operação pretendida, passar a maior parte do tempo monitorando e coletando temperaturas dentro e fora de uma residência. Embora o monitoramento e a gravação de dados de temperatura normalmente não sejam computacionalmente caros, como tal, não exigem um processador poderoso, um controlador de IoT pode, no entanto, possuir recursos substanciais de processamento e memória para suportar operações ocasionais exigentes computacionalmente, como reconhecimento de voz.
[0004]Uma residência moderna pode ter múltiplos dispositivos com tecnologia de sensor e capacidades de processamento semelhantes ao controlador de automação residencial descrito acima. Juntos, esses dispositivos podem ser usados para coletar uma grande quantidade de dados altamente granulares quanto ao seu ambiente (por exemplo, dados de temperatura bloco a bloco), bem como capacidade de processamento não usada para analisar e processar esses dados. Além das possibilidades da ciência de dados e da mineração de dados em escalas massivas, a habilidade de orquestrar e coletivizar o poder de processamento de uma nuvem ou "névoa" de pequenos processadores em rede apresenta novas oportunidades para estender a vida útil de dispositivos legados, como computadores pessoais, tablets e telefones, mais velhos cujos recursos de processamento e coleta de dados, embora talvez não sejam mais adequados para dar suporte a aplicações em gerações subsequentes dos mesmos dispositivos, ainda podem ser utilmente aplicados como parte de uma rede de processamento maior. Outras aplicações de processamento distribuído seguro em redes de nós de processamento heterogêneos incluem, sem limitação, o fornecimento de energia de CPU para suportar sistemas baseados em prova de trabalho para verificar transações registradas em um registro distribuído.
[0005]Perceber essa quantidade de poder computacional não usado e dados de sensor apresenta desafios técnicos significativos, incluindo, sem limitação, problemas de orquestração (por exemplo, dividir uma tarefa de processamento entre vários processadores pequenos) e problemas de segurança, como proteção da privacidade de usuários e proteção contra o uso indevido de sensores e recursos de processamento de dispositivos, como gravar secretamente conversas dentro de uma residência, ou cooptar os recursos de processamento e conexão de rede (por exemplo, transformar o dispositivo em um "spambot") de dispositivo.
[0006]As modalidades, conforme divulgadas e reivindicadas neste documento, tratam desses desafios técnicos, fornecendo sistemas e métodos para processamento distribuído seguro em redes de nós de processamento heterogêneos.
SUMÁRIO
[0007]Esta divulgação fornece sistemas e métodos para processamento distribuído seguro em redes de nós de processamento heterogêneos.
[0008]Em uma primeira modalidade, um método para processamento distribuído inclui o recebimento de um pacote de trabalho em um centro de comando, em que o centro de comando inclui um processador, uma interface de rede, e uma memória. Além disso, o método inclui determinar um valor de uma dimensão do pacote de trabalho, determinar, com base em uma regra predeterminada aplicada ao valor determinado da dimensão do pacote de trabalho, um custo de processamento agregado para o pacote de trabalho. Operações adicionais incluem a identificação de um ou mais dispositivos membros disponíveis comunicativamente conectados ao centro de comando por meio da interface de rede e a divisão do pacote de trabalho em um ou mais encadeamentos com base em pelo menos um do valor determinado da dimensão, o custo de processamento agregado ou os dispositivos membros disponíveis. Além disso, o método inclui as operações de repartição de um encadeamento de um ou mais encadeamentos para um dispositivo membro e transmitir, por meio da interface de rede, o encadeamento repartido para um ambiente de processamento seguro do dispositivo membro.
[0009]Em uma segunda modalidade, um método para processamento distribuído inclui receber, por meio de uma interface de rede, em um dispositivo membro que compreende um processador e uma memória, um encadeamento de um centro de comando, receber do centro de comando, por meio da interface de rede, um parâmetro de controle para o encadeamento e processar o encadeamento com base no parâmetro de controle em um ambiente de processamento seguro do dispositivo membro.
[0010]Em uma terceira modalidade, um meio legível por computador não transitório contém código de programa, o qual quando executado por um processador, faz com que um centro de comando receba um pacote de trabalho no centro de comando, o centro de comando compreendendo o processador, uma interface de rede, e uma memória. O meio legível por computador não transitório contém ainda o código de programa, o qual quando executado pelo processador, faz com que o centro de comando determine um valor de uma dimensão do pacote de trabalho, determine, com base em uma regra predeterminada aplicada ao valor determinado da dimensão do pacote de trabalho, um custo de processamento agregado para o pacote de trabalho, identifique um ou mais dispositivos membros disponíveis comunicativamente conectados ao centro de comando por meio da interface de rede, divida o pacote de trabalho em um ou mais encadeamentos com base em pelo menos um do valor da dimensão, o custo de processamento agregado ou os dispositivos membros disponíveis, reparta um encadeamento de um ou mais encadeamentos para um dispositivo membro e transmita, por meio da interface de rede, o encadeamento repartido para um ambiente de processamento seguro do dispositivo membro.
[0011]Em uma quarta modalidade, um centro de comando compreende um processador, uma interface de rede, e uma memória contendo instruções as quais, quando executadas pelo processador, fazem com que o centro de comando receba um pacote de trabalho. As instruções, quando executadas pelo processador, fazem ainda com que o centro de comando determine um valor de uma dimensão do pacote de trabalho, determine, com base em uma regra predeterminada aplicada ao valor determinado da dimensão do pacote de trabalho, um custo de processamento agregado para o pacote de trabalho, identifique um ou mais dispositivos membros disponíveis comunicativamente conectados ao centro de comando por meio da interface de rede, divida o pacote de trabalho em um ou mais encadeamentos com base em pelo menos um do valor determinado da dimensão, o custo de processamento agregado ou os dispositivos membros disponíveis, reparta uma encadeamento de um ou mais encadeamentos para um dispositivo membro e transmita, por meio da interface de rede, o encadeamento repartido para um ambiente de processamento seguro do dispositivo membro.
[0012]Em uma quinta modalidade, um dispositivo membro compreende uma interface de rede, um processador e uma memória contendo instruções que, quando executadas pelo processador, fazem com que o dispositivo membro receba, por meio da interface de rede, uma encadeamento de um centro de comando, receba do centro de comando, um parâmetro de controle para o encadeamento, e processe o encadeamento com base no parâmetro de controle em um ambiente de processamento seguro do dispositivo membro.
[0013]Outras características técnicas podem ser prontamente evidentes para uma pessoa versada na técnica a partir das seguintes figuras, descrições e reivindicações.
[0014]Antes de realizar a DESCRIÇÃO DETALHADA abaixo, pode ser vantajoso estabelecer definições de certas palavras e frases usadas ao longo deste documento de patente. O termo "acoplar" e seus derivados referem-se a qualquer comunicação direta ou indireta entre dois ou mais elementos, estejam ou não esses elementos em contato físico um com o outro. Os termos "transmitir", "receber" e "comunicar", bem como seus derivados, abrangem a comunicação direta e indireta. Os termos "incluem" e "compreendem", bem como seus derivados, significam inclusão sem limitação. O termo "ou" é inclusivo, significando e/ou. A frase "associado com", bem como seus derivados, significa incluir, ser incluído, interconectar, conter, estar contido, conectar-se a ou com, acoplar-se a ou com, ser comunicável com, cooperar, intercalar, justapor, estar próximo a, estar ligado a ou com, ter, ter uma propriedade de, ter um relacionamento entre ou com, ou semelhante. O termo "controlador" significa qualquer dispositivo, sistema ou parte dele que controle pelo menos uma operação. Tal controlador pode ser implementado em hardware ou uma combinação de hardware e software e/ou firmware. A funcionalidade associada a qualquer controlador específico pode ser centralizada ou distribuída, seja local ou remotamente. A frase "pelo menos um de", quando usada com uma lista de itens, significa que diferentes combinações de um ou mais dos itens listados podem ser usadas, e apenas um item na lista pode ser necessário. Por exemplo, "pelo menos um de: A, B e C" inclui qualquer uma das seguintes combinações: A, B, C, A e B, A e C, B e C, e A e B e C.
[0015]Além disso, várias funções descritas abaixo podem ser implementadas ou suportadas por um ou mais programas de computador, cada um dos quais é formado a partir de código de programa legível por computador e incorporado em um meio legível por computador. Os termos "aplicação" e "programa" referem-se a um ou mais programas de computador, componentes de software, conjuntos de instruções, procedimentos, funções, objetos, classes, instâncias, dados relacionados, ou uma parte dos mesmos adaptada para implementação em um código de programa legível por computador adequado. A frase "código de programa legível por computador" inclui qualquer tipo de código de computador, incluindo código-fonte, código-objeto, e código executável. A frase "meio legível por computador" inclui qualquer tipo de meio capaz de ser acessado por um computador, como memória somente leitura (ROM), memória de acesso aleatório (RAM), unidade de disco rígido, disco compacto (CD), disco de vídeo digital (DVD) ou qualquer outro tipo de memória. Um meio legível por computador "não transitório" exclui enlaces de comunicação com fio, sem fio, ópticos, ou outros que transportam sinais elétricos transitórios ou outros. Um meio legível por computador não transitório inclui meio onde os dados podem ser armazenados permanentemente e meio onde os dados podem ser armazenados e posteriormente sobrescritos, como um disco óptico regravável ou um dispositivo de memória apagável.
[0016]As definições para outras certas palavras e frases são fornecidas ao longo deste documento de patente. Aqueles de conhecimento comum na técnica devem entender que em muitos, senão na maioria dos casos, tais definições se aplicam a usos anteriores assim como futuros de tais palavras e frases definidas.
BREVE DESCRIÇÃO DOS DESENHOS
[0017]Para uma compreensão mais completa desta divulgação e suas vantagens, agora é feita referência à seguinte descrição, tomada em conjunto com as figuras anexas, nas quais: A FIGURA 1 ilustra um exemplo de um contexto de rede incluindo um centro de comando e nós de processamento heterogêneos de acordo com certas modalidades desta divulgação; A FIGURA 2 ilustra um exemplo de um centro de comando de acordo com certas modalidades desta divulgação; A FIGURA 3 ilustra um exemplo de um dispositivo membro de acordo com certas modalidades desta divulgação; A FIGURA 4 ilustra camadas de uma pilha I/O implementada em dispositivos membros de acordo com certas modalidades desta divulgação; A FIGURA 5 ilustra as operações de um método para processamento distribuído seguro através de redes de nós de processamento heterogêneos em um centro de comando de acordo com certas modalidades desta divulgação; e A FIGURA 6 ilustra as operações de um método para processamento distribuído seguro através de redes de nós de processamento heterogêneos em um dispositivo membro de acordo com certas modalidades desta divulgação.
DESCRIÇÃO DETALHADA
[0018]As FIGURAS 1 a 6, discutidas abaixo, e as várias modalidades usadas para descrever os princípios desta divulgação neste documento de patente são apenas a título de ilustração e não devem ser interpretadas de forma alguma para limitar o escopo da divulgação. Aqueles versados na técnica entenderão que os princípios desta divulgação podem ser implementados em qualquer sistema de comunicação sem fio arranjado adequadamente.
[0019]A FIGURA 1 ilustra um exemplo de um contexto de rede 100 incluindo um centro de comando e nós de processamento heterogêneos de acordo com certas modalidades desta divulgação.
[0020]De acordo com certas modalidades, o contexto de rede 100 inclui um centro de comando 105, uma ou mais máquinas 110a, 110b, 110c e 110d fornecendo uma camada de interface, uma ou mais redes 115, e nós de processamento heterogêneos 120a, 120b, 120c, 120d e 120e.
[0021]No exemplo não limitativo da FIGURA 1, o centro de comando 105 é um servidor de gerenciamento, como um servidor Hewlett-Packard Proliant incorporado em uma única prateleira (rack) de servidor. De acordo com certas modalidades, o centro de comando 105 inclui código de programa, o qual quando executado por um dos núcleos do processador do centro de comando 105, faz com que ele forneça uma camada de interface para conectar através de uma rede 115 (como a internet) com nós de processamento 120a-e. Conforme sugerido pela presença de máquinas 110a-d, múltiplas arquiteturas para implementar o centro de comando 105 são possíveis e dentro do escopo desta divulgação. De acordo com algumas modalidades, o centro de comando 105 é um único servidor, e as máquinas 110a-d compreendem máquinas virtuais em execução no servidor. De acordo com outras modalidades, o centro de comando 105 pode compreender múltiplos servidores físicos, com cada uma das máquinas 110a-d implementadas em seu próprio servidor. De acordo com ainda outras modalidades, o centro de comando 105 e as máquinas 110a-d são implementados na nuvem, em uma variedade de máquinas. Numerosas modalidades, em que um centro de comando compreende uma interface de rede e recursos de processamento e memória para implementar uma camada de interface apropriada e realizar operações dos métodos divulgados são possíveis e dentro do escopo desta divulgação.
[0022]De acordo com certas modalidades, a rede 115 é uma rede com fio conectando o centro de comando 105 a cada um dos nós de processamento heterogêneos 120a, 120c e 120d. De acordo com outras modalidades, a rede 115 é uma rede sem fio, como uma rede sem fio Wi-Fi ou 3G. A rede 115 hospeda comunicações usando protocolos de rede contextualmente apropriados, incluindo, sem limitação, HTTP, Aeron, Transporte de Telemetria através de Enfileiramento de Mensagens (MQTT), NanoIP, ROLL (Roteamento em Redes de Baixa potência e com Perdas), uIP e UDP. Outros protocolos de comunicação são possíveis e dentro do escopo da presente divulgação.
[0023]De acordo com certas modalidades, uma ou mais redes de nós de processamento heterogêneos 120a-120e se conectam ao centro de comando 105 através da rede 115. De acordo com algumas modalidades, um nó de processamento pode se conectar diretamente à rede 115, como mostrado no exemplo não limitativo da FIGURA 1 pelo nó de processamento 120a. Alternativamente, de acordo com outras modalidades, um nó de processamento pode se conectar indiretamente à rede 115 através de outro nó de processamento, como mostrado no exemplo não limitativo da FIGURA 1 pelo nó de processamento 120e. De acordo ainda com as modalidades, um nó de processamento pode se conectar direta e indiretamente à rede 115, como mostrado no exemplo não limitativo da FIGURA 1 pelo nó de processamento 120c. Para os fins desta divulgação, os nós de processamento conectados, direta ou indiretamente ao centro de comando 105 por meio da rede 115, compreendem "dispositivos membros" de uma rede de processamento sob o controle do centro de comando 105.
[0024]De acordo com certas modalidades, os dispositivos membros em cada um dos nós de processamento 120a-120e são, no mínimo, heterogêneos no que diz respeito às suas capacidades de processamento e manipulação de trabalho. Facetas de heterogeneidade entre os dispositivos membros nos nós de processamento 120a-120e incluem, sem limitação, velocidade de processamento, RAM disponível, requisitos de energia de armazenamento disponível, tipos de conectividade de rede (por exemplo, conectividade Wi-Fi, conectividade 3G, GigaBit Ethernet), sensores disponíveis (por exemplo, microfones, termômetros, câmeras, barômetros), funcionalidade do processador (por exemplo, capacidade de processamento de ponto flutuante, capacidade de geração de números aleatórios verdadeiros), e número de núcleos do processador. De acordo com certas modalidades, os dispositivos membros podem ser classificados pelo centro de comando com base em um ou mais desses atributos. Por exemplo, um dispositivo com recursos análogos aos de certas gerações do Raspberry Pi (por exemplo, velocidade de relógio de 1 Ghz e 1 GB de armazenamento), para fins de lógica de orquestração de trabalho do centro de comando, seria classificado como "10X " dispositivo. Como outro exemplo, um dispositivo com recursos análogos a certas gerações de um Amazon Echo (256 MB de RAM, 4 GB de armazenamento e conectividade sem fio multibanda) pode, para fins de lógica de orquestração de trabalho do centro de comando, ser classificado como um dispositivo "100X".
[0025]De acordo com algumas modalidades, a heterogeneidade dos dispositivos membros nos nós de processamento inclui dimensões adicionais, como a sua disponibilidade para assumir trabalho em momentos diferentes e os recursos de processamento disponíveis em momentos diferentes. Assim, em contraste com, por exemplo, uma central de dados (data center), em que a lógica de gerenciamento assume que os recursos de processamento das máquinas potencialmente disponíveis para processar trabalhos não são dependentes do tempo, certas modalidades, conforme divulgadas e reivindicadas, podem operar em contextos nos quais as capacidades dos dispositivos de processamento disponíveis são mais fluidas e podem mudar quando, por exemplo, os dispositivos são adicionados ou subtraídos à rede, ou os dispositivos são necessários para dedicar recursos de computação a tarefas diferentes daquelas orquestradas pelo centro de comando.
[0026]Embora a FIGURA 1 ilustre um exemplo de um contexto de rede incluindo um centro de comando e nós de processamento heterogêneos, outras modalidades, com arquiteturas mais ou menos difusas podem ser possíveis. Além disso, de acordo com algumas modalidades, um centro de comando e nó de processamento podem ser incorporados no mesmo dispositivo.
[0027]A FIGURA 2 ilustra um exemplo de um centro de comando 200 de acordo com certas modalidades desta divulgação.
[0028]No exemplo não limitativo da FIGURA 2, o centro de comando 200 é implementado em um servidor e compreende uma memória 205, um processador 210, um orquestrador de trabalho 215 e uma interface de rede 230. Além disso, o centro de comando 200 está configurado para implementar uma camada de interface 220 compreendendo uma ou mais instâncias mostradas como 225a-225d de interfaces de programação de aplicações (API) através das quais o centro de comando 200 interage com dispositivos membros em rede (por exemplo, os dispositivos membros em nós de processamento 120a-120e na FIGURA 1).
[0029]De acordo com certas modalidades, a memória 205 compreende uma memória não transitória contendo código de programa, o qual quando executado pelo processador 210, faz com que o centro de comando receba um pacote de trabalho por meio da interface de rede 230, divida o pacote de trabalho em encadeamentos de acordo com um ou mais determinadas dimensões do pacote de trabalho, distribua os encadeamentos para dispositivos membros disponíveis e transmita cada encadeamento repartido para um ambiente de processamento seguro em cada dispositivo membro.
[0030]Além disso, de acordo com certas modalidades, a memória 205 compreende bibliotecas de regras e de informações de capacidade para dispositivos membros que atuam como nós de processamento. De acordo com certas modalidades, a memória 205 inclui uma biblioteca de regras de mapeamento de dimensões de pacotes de trabalho (por exemplo, um prazo especificado para a conclusão de uma tarefa de processamento, um requisito de rede (por exemplo, seria o dispositivo membro necessário para enviar e receber dados através de uma rede 3G?) um volume de dados a serem processados, um parâmetro de dados a serem coletados, como um número de sensores a serem usados ou um intervalo de tempo durante o qual os dados devem ser coletados, disponibilidade de processamento paralelo, restrições de compartilhamento de carga, requisitos do processador ou sensor (por exemplo, velocidade do relógio, se um processador de ponto flutuante ou geração de número aleatório verdadeiro é necessário) para processar valores de custo.
[0031]De acordo com algumas modalidades, a memória 205 pode conter uma ou mais bibliotecas de dados especificando as capacidades de processamento de dispositivos membros. Em algumas modalidades, as bibliotecas de capacidades de dispositivo membro podem ser mantidas em um alto nível de granularidade, com dados para cada dispositivo membro, incluindo, sem limitação, informações quanto aos recursos de processador e memória do dispositivo específico. Alternativamente, de acordo com outras modalidades, a biblioteca de informações de capacidade do dispositivo consiste em um dicionário de identificadores de dispositivo e uma classificação (por exemplo, "10X" ou "100X") determinada para o dispositivo. Inúmeras variações são possíveis e dentro do escopo desta divulgação.
[0032]Em certas modalidades, o processador 210 é um chip de unidade de processamento central (CPU) fornecido dentro de um servidor. De acordo com outras modalidades, o centro de comando 200 pode ser implementado em vários servidores ou como parte de um sistema de computação em nuvem. Em tais modalidades, o processador 210 consiste em múltiplos processadores separados operando através de um operador dinamicamente mutável de máquinas de servidor. De acordo com ainda outras modalidades, o centro de comando 200 pode ser implementado em uma máquina virtual, e o processador 210 é uma CPU virtual que consiste em uma atribuição de recursos de processador da(s) máquina(s) física(s) que implementam a máquina virtual.
[0033]Em certas modalidades, o centro de comando 200 inclui um orquestrador de trabalho 215. De acordo com algumas modalidades, o orquestrador de trabalho 215 recebe, por meio da interface de rede 230, informações sobre a disponibilidade e o uso de dispositivos membros em nós de processamento. O orquestrador de trabalho 215 recebe ainda, do processador 210, informações sobre os encadeamentos atualmente repartidos e pacotes de trabalho recebidos. Em algumas modalidades, as informações sobre os encadeamentos atualmente repartidos e pacotes de trabalho recebidos podem ser posteriormente processadas e re-expressas como uma ou mais métricas de carga do sistema nos níveis de nó e centro de comando. Além disso, em algumas modalidades, os dispositivos membros em nós de processamento podem enviar periodicamente atualizações para o centro de comando em relação à carga de processamento atual e/ou informações de estado de trabalho. No exemplo não limitativo da FIGURA 2, o orquestrador de trabalho 215 opera para repartir encadeamentos entre os dispositivos membros com base em parte nos dados de uso atuais recebidos dos dispositivos membros e no uso esperado com base nas informações sobre os pacotes de trabalhos enfileirados recebidos da memória 205 e do processador 210. De acordo com certas modalidades, o orquestrador de trabalho 215 reparte dinamicamente pacotes de trabalho para dispositivos membros disponíveis de acordo com a disponibilidade e capacidades dos dispositivos. Além disso, no exemplo não limitativo da Figura 2, o orquestrador de trabalho 215 implementa regras predeterminadas aplicadas a, por exemplo, os parâmetros determinados dos pacotes de trabalho recebidos e informações armazenadas em relação às capacidades dos dispositivos membros em nós de processamento, para repartir encadeamentos em uma forma que otimiza o valor de uma ou mais métricas de desempenho de processamento. Métricas de desempenho de processamento cujos valores podem ser maximizados no orquestrador de trabalho 215 incluem, sem limitação, tempo de execução de pacote de trabalho, consumo de eletricidade no nó de processamento, redundância entre nós de processamento (para aumentar o sucesso da execução probabilística de encadeamentos) e utilização de nós de processamento (por exemplo, pode ser desejável repartir os encadeamentos de um pacote de trabalho a um número mínimo de nós de processamento, a fim de manter outros nós em reserva para outros pacotes de trabalho).
[0034]De acordo com certas modalidades, os encadeamentos repartidos são passados do centro de comando 200 para os dispositivos membros, e os resultados retornados são fornecidos ao centro de comando a partir dos dispositivos membros por meio de uma camada de interface 220. No exemplo não limitativo da FIGURA 2, a camada de interface 220 inclui interface de rede 230 e instâncias 225a-225d de interfaces de programação de aplicações (API) através das quais o centro de comando 200 interage com dispositivos membros em rede (por exemplo, os dispositivos membros nos nós de processamento 120a-120e na FIGURA 1).
[0035]Em algumas modalidades, a interface de rede 230 opera para interconectar o centro de comando 200 com uma ou mais redes (por exemplo, rede 115 na FIGURA 1). A interface de rede 230 pode, dependendo das modalidades, ter um endereço de rede expresso como um ID de nó, um número de porta ou um endereço IP. De acordo com certas modalidades, a interface de rede 230 é implementada como hardware, como por uma placa de interface de rede (NIC). Alternativamente, a interface de rede 230 pode ser implementada como software, como por uma instância da classe java.net.Networkinterface. Além disso, de acordo com algumas modalidades, a interface de rede 230 suporta comunicações em múltiplos protocolos, como TCP/IP, bem como protocolos sem fio, como 3G ou Bluetooth.
[0036]No exemplo não limitativo da FIGURA 2, a camada de interface 220 contém uma ou mais interfaces de programação de aplicações (APIs) 225a-225d para estabelecer comunicações entre o centro de comando 200 e os dispositivos membros em nós de processamento. De acordo com certas modalidades, cada uma das APIs 225a-225d pode designar porções da memória 205 como reservadas para entradas e saídas de pacotes de trabalho que foram repartidos e enviados para processamento.
[0037]De acordo com algumas modalidades, cada API de APIs 225a-225d mapeia um conjunto de funções de processamento predefinidas (por exemplo, para realizar uma função de hash) associadas ao desempenho de um encadeamento a ser processado. Em algumas modalidades, as funções de processamento predefinidas podem ser expressas em um formato orientado a objeto, e como compreendendo métodos e atributos de APIs 225a-225d. Por exemplo, em algumas modalidades, as funções predefinidas podem ser mapeadas para objetos API de um sistema operacional específico de IoT, como a plataforma Conera desenvolvida pela V2COM, Inc.
[0038]De acordo com algumas modalidades, as funções de processamento predefinidas podem ser mapeadas para comandos específicos do dispositivo ou sistema operacional. Por exemplo, de acordo com algumas modalidades, a API pode mapear a função de nível de centro de comando "hash" para o método Java "hashCode". Alternativamente, de acordo com outras modalidades, cada API de APIs 225a-225d pode mapear funções predefinidas para conjuntos de comandos apropriados para o poder de processamento de uma categoria particular de dispositivo membro (por exemplo, os dispositivos "10X" e "100X" discutidos acima). Alternativamente, em algumas modalidades, pode haver apenas uma única API, que mapeia funções predefinidas para comandos em todo o espectro de sistemas operacionais e capacidades de processamento encontrados em dispositivos membros nos nós de processamento. De acordo com ainda outras modalidades, APIs individuais ou conjuntos de APIs entre APIs 225a-225d podem fornecer mapeamentos de funções predefinidas de nível de centro de comando para diferentes modelos de dados, a fim de suportar comunicações em uma ampla gama de contextos de rede e capacidades de dispositivos membros. Por exemplo, no exemplo não limitativo da FIGURA 2, APIs 225a e 225b podem fornecer APIs de transferência de estado representacional (REST) associada a um modelo de dados JavaScript Object Notation (JSON), enquanto APIs 225c e 225d podem fornecer APIs de protocolo de acesso a objetos simples (SOAP) associada a um modelo de dados de linguagem extensível de marcação genérica (XML). Numerosas variações são possíveis e dentro do escopo pretendido desta divulgação.
[0039]A FIGURA 3 ilustra um exemplo de um dispositivo membro 300 de acordo com certas modalidades desta divulgação. De acordo com algumas modalidades, o dispositivo membro 300 é um tipo "inteligente" de outro dispositivo, como um eletrodoméstico ou controlador de outros eletrodomésticos. De acordo com outras modalidades, o dispositivo membro 300 é um smartphone ou um computador tablet. De acordo com ainda outras modalidades, o dispositivo membro 300 é um medidor em rede ou uma placa de desenvolvimento anexada a um ponto de presença (por exemplo, um poste de luz, um interruptor, um semáforo ou um poste de serviço público) de um serviço público. De acordo com ainda outras modalidades, o dispositivo membro 300 pode ser um dispositivo de porta de comunicação, como um dispositivo de porta de comunicação de internet das coisas (IoT). Exemplos de dispositivos de porta de comunicação que podem funcionar como um dispositivo membro 300 incluem, sem limitação, o Neuron C Smart Concentrator e a Dendrion Power Smart Submetering Unit da V2COM, Inc. e numerosas modalidades são possíveis e dentro do escopo desta divulgação.
[0040]De acordo com certas modalidades, o dispositivo membro 300 inclui um processador 305. No exemplo não limitativo da Figura 3, o processador 305 é um processador multifuncional (em oposição a, por exemplo, um ASIC de função específica) com um ou mais núcleos, que são capazes de executar o código de programa armazenado em uma memória não transitória 310. No exemplo não limitativo da FIGURA 3, o processador 305 inclui, ou é acoplado a um relógio 307, a velocidade do qual fornece uma medida da capacidade de processamento do processador 305. Em algumas modalidades, o processador 305 tem características como, por exemplo e sem limitação, processamento de ponto flutuante, geração de número aleatório verdadeiro, ou um cache inteligente, não encontrado no processador de outros dispositivos membros.
[0041]De acordo com algumas modalidades, a memória 310 contém código de programa o qual, quando executado pelo processador 305, faz com que o processador execute as funções do dispositivo membro 300 do qual faz parte. Voltando ao exemplo não limitativo de um controlador de sistema de automação residencial aqui discutido, a memória 310 contém instruções as quais, quando executadas pelo processador 305, fazem com que ele realize funções, como ler e gravar dados de temperatura na memória 310, controlando a operação de dispositivos de entrada/saída 320 para enviar sinais de controle para dispositivos dentro da residência (por exemplo, lâmpadas inteligentes, aquecedores e condicionadores de ar controlados eletronicamente e persianas controladas eletronicamente). Além disso, regiões de memória 310 podem ser alocadas para armazenamento de dados e armazenamento de código de programa adicional, incluindo uma ou mais aplicações 315.
[0042]De acordo com certas modalidades, as aplicações 315 compreendem código de programa ou software que pode ser escrito na memória 310 e lido e executado pelo processador
305. No exemplo não limitativo da FIGURA 3, as aplicações 315 incluem, as aplicações associadas à função principal do dispositivo membro (por exemplo, aplicações de automação residencial, como uma aplicação para controle automatizado de lâmpadas conectadas à Internet), e máquinas virtuais hospedadas em dispositivo membro 300.
[0043]No exemplo não limitativo da FIGURA 3, o dispositivo membro 300 tem dispositivos de entrada/saída
320. De acordo com certas modalidades, os dispositivos de entrada/saída 300 incluem uma tela (como uma tela de LED), um teclado e um mouse. De acordo com outras modalidades, os dispositivos I/O 320 são um conjunto de pinos de entrada/saída conectados a pinos de um processador ou controlador, como o processador 305.
[0044]No exemplo não limitativo da FIGURA 3, o dispositivo membro 300 tem um sistema operacional (OS) 325, que suporta as funções básicas do dispositivo membro 300, incluindo, sem limitação, executar aplicações 315, receber dados de sensores 330, e enviar e receber dados por meio de interface de rede 325. De acordo com algumas modalidades, o OS 325 pode ser um sistema operacional de uso geral, como Android ou iOS. De acordo com outras modalidades, o OS 325 pode ser um sistema operacional proprietário, como o Fire OS. De acordo com ainda outras modalidades, o OS 325 é um sistema operacional orientado para IoT, como o Conera da
V2COM, Inc.
[0045]De acordo com certas modalidades, o dispositivo membro 300 inclui sensores 330. No exemplo não limitativo da FIGURA 3, os sensores 330 incluem, sem limitação, câmeras, microfones, termômetros, sensores barométricos, medidores de luz, monitores de energia, medidores de água e sensores de chuva.
[0046]Em algumas modalidades, a interface de rede 325 opera para interconectar o dispositivo membro 300 com uma ou mais redes (por exemplo, rede 115 na FIGURA 1). A interface de rede 325 pode, dependendo das modalidades, ter um endereço de rede expresso como um ID de nó, um número de porta ou um endereço IP. De acordo com certas modalidades, a interface de rede 325 é implementada como hardware, como por uma placa de interface de rede (NIC). Alternativamente, a interface de rede 325 pode ser implementada como software, como por uma instância da classe java.net.Networkinterface. Além disso, de acordo com algumas modalidades, a interface de rede 325 suporta comunicações em múltiplos protocolos, como TCP/IP, bem como protocolos sem fio, como 3G ou Bluetooth.
[0047]A FIGURA 4 ilustra camadas de uma pilha de entrada/saída ("I/O") implementada em dispositivos membros de acordo com certas modalidades desta divulgação.
[0048]No exemplo não limitativo da FIGURA 4, dois dispositivos membros distintos 400 e 405 são mostrados. No exemplo não limitativo da FIGURA 4, a arquitetura de processamento de cada um dos dispositivos membros 400 é representada como uma hierarquia de camadas de abstração, às vezes referidas coletivamente como uma "pilha I/O". De acordo com certas modalidades, as camadas de hardware 410 e 415 são o nível fundamental das pilhas I/O de dispositivos membros 400 e 405.
[0049]Em algumas modalidades, cada uma das camadas de hardware 410 e 415 compreende o processador e a memória do dispositivo de memória (por exemplo, processador 305 e memória 310 mostrada na FIGURA 3), bem como os componentes do dispositivo membro sob o controle direto de um processador do dispositivo membro (por exemplo, sensores 330 e interface de rede 325 mostrado na FIGURA 3).
[0050]De acordo com certas modalidades, o sistema operacional ou as camadas OS 420 e 425 compreendem o próximo nível das pilhas I/O de dispositivos membros 400 e 405. Em algumas modalidades, as camadas de OS 420 e 425 correspondem às funcionalidades fornecidas pelos sistemas operacionais (por exemplo, OS 325 mostrado na FIGURA 3) de cada um dos dispositivos membros 400 e 405. Além disso, em algumas modalidades, o sistema operacional em cada dispositivo membro é o sistema operacional nativo ou fornecido originalmente do dispositivo membro. Por exemplo, se o dispositivo membro 400 for um smartphone Apple®, o sistema operacional 420 é, de acordo com algumas modalidades, o sistema operacional "iOS". Da mesma forma, se o dispositivo membro 405 for um dispositivo de leitura Amazon ®, o sistema operacional 425 é, de acordo com algumas modalidades, o sistema operacional "Fire". Alternativamente, de acordo com algumas modalidades, o sistema operacional nas camadas 420 e 425 é um sistema operacional especialmente adaptado, que substitui ou aumenta os sistemas operacionais nativos dos dispositivos membros, como quando os sistemas operacionais nativos dos dispositivos membros suportam apenas comunicações de baixo nível (como na camada física do modelo OSI). Exemplos de sistemas operacionais adequados incluem, sem limitação, o Conera IoT OS desenvolvido pela V2COM, Inc. De acordo com certas modalidades, um sistema operacional de substituição pode permitir que o dispositivo membro se comunique em um nível superior dentro do modelo OSI e transmita dados em formatos além dos fluxos de bits brutos.
[0051]De acordo com certas modalidades, as camadas de máquina virtual 430 e 435 compreendem a próxima camada nas pilhas I/O de dispositivos membros 400 e 405. De acordo com algumas modalidades, as camadas de máquina virtual 430 e 435 são implementadas como Máquina Virtual Java, Máquina Virtual Azure ou como componentes de um sistema Kubernetes. No exemplo não limitativo da FIGURA 4, cada uma das camadas de máquina virtual 430 e 435 opera para fornecer um recipiente seguro separando dados, memória e recursos de processamento para realizar processamento distribuído seguro em nós de processamento heterogêneos. Como tal, cada uma das camadas de máquina virtual 430 e 435 separa os dados e o ambiente de execução para o processamento de encadeamentos repartidos de processos associados à funcionalidade nativa do dispositivo membro, ou originalmente pretendida. Por exemplo, nos casos em que o dispositivo membro 400 é um controlador de automação residencial conectado à rede, os processos associados à funcionalidade do dispositivo membro como um controlador de automação residencial, como uma interface para uma aplicação de controle baseado na web, não podem acessar dados associados a uma encadeamento repartido que está sendo processado no dispositivo membro.
[0052]De acordo com certas modalidades, as estruturas
440 e 445 compreendem a próxima camada nas pilhas I/O de dispositivos membros 400 e 405. De acordo com algumas modalidades, as estruturas 440 e 445 fornecem, em um nível lógico, o ponto de acesso para comunicações em rede entre dispositivos membros e entre dispositivos membros e um centro de comando (por exemplo, centro de comando 200 mostrado na FIGURA 2). No exemplo não limitativo da FIGURA 4, a camada de estrutura 440 do dispositivo membro 400 é mostrada como conectada à camada de estrutura 445 do dispositivo membro
405.
[0053]De acordo com certas modalidades, cada uma das camadas de estrutura 440 e 445 pode implementar protocolos específicos do sistema ou usar comandos (como as funções predefinidas implementadas na camada de interface (por exemplo, a camada de interface 220 mostrada na FIGURA 2). Em tais modalidades, os protocolos e comandos específicos do sistema podem definir dados separados e canais de controle para comunicações entre nós heterogêneos e o centro de comando da rede de processamento distribuída. De acordo com algumas modalidades, um encadeamento repartido pode ser transmitido em parte ou na totalidade para um dispositivo membro usando um canal de controle fornecido em uma das camadas de estrutura 440 e 445. De acordo com outras modalidades, um encadeamento repartido pode ser transmitido em parte ou na totalidade para um dispositivo membro usando um canal de dados fornecido em uma das camadas de estrutura 440 e 445. Além disso, de acordo com algumas modalidades, um dispositivo membro transmite um encadeamento para o qual o processamento foi concluído, para um centro de comando através do canal de dados ou do canal de controle, ou uma combinação dos mesmos.
[0054]No exemplo não limitativo da FIGURA 4, implementando protocolos específicos do sistema ou usando comandos, tais como funções predefinidas da camada de interface de um centro de comando ou métodos específicos de API, as estruturas 440 e 445 reforçam ainda mais a segurança dos dados e processos realizados dentro das camadas de máquina virtual 430 e 435 e acima. Por exemplo, respondendo apenas a comandos e entradas expressos de acordo com os comandos predefinidos de um centro de comando, as estruturas 440 e 445 podem ser menos suscetíveis a ataques de falsificação ou solicitações expressas de acordo com o conjunto de comandos dos sistemas operacionais 420 e 425.
[0055]De acordo com certas modalidades, os ambientes de processamento seguro ("SPEs") 450 e 455 compreendem a próxima camada nas pilhas I/O de dispositivos membros 400 e 405. De acordo com certas modalidades, cada um dos ambientes de processamento seguro 450 e 455 fornece, dentro de cada uma das máquinas virtuais 430 e 435, um análogo ao ambiente de execução confiável ou "mundo seguro" fornecido por certos processadores físicos. De acordo com certas modalidades, os encadeamentos 460, 465, 470 e 475 repartidos e transmitidos por um centro de comando são processados dentro de cada um dos SPEs 450 e 455. Em algumas modalidades, múltiplos encadeamentos de trabalho são executados dentro de um único SPE fornecido no dispositivo membro. De acordo com outras modalidades, existem múltiplas máquinas virtuais em execução em um dispositivo membro, e cada máquina virtual fornece seu próprio SPE, dentro do qual um encadeamento de trabalho é executado. Numerosas variações são possíveis e dentro do escopo contemplado desta divulgação.
[0056]Dependendo, sem limitação, de um parâmetro de controle recebido do centro de comando e das capacidades de processamento subjacentes das camadas de hardware 410 e 415, os encadeamentos em cada um dos SPEs 450 e 455 podem ser processados em paralelo ou individualmente. Além disso, em algumas modalidades, cada um dos encadeamentos em um SPE são encadeamentos de diferentes pacotes de trabalho recebidos e repartidos por um centro de comando. Alternativamente, em outras modalidades, existem vários encadeamentos pertencentes ao mesmo pacote de trabalho sendo processados dentro do SPE de um dispositivo membro específico. Em algumas modalidades, um SPE separado é fornecido pela máquina virtual e pelas camadas de estrutura para cada encadeamento. De acordo com tais modalidades, os dados proprietários associados a um encadeamento não estão disponíveis para quaisquer outros encadeamentos, aumentando assim a segurança.
[0057]As modalidades descritas com referência à FIGURA 4 são ilustrativas e não se destinam a ser limitativas do escopo desta divulgação. Outras modalidades não mostradas na FIGURA 4 são possíveis e contempladas como parte desta divulgação. Por exemplo, de acordo com certas modalidades, um dispositivo membro, como o dispositivo membro 400, pode implementar múltiplas máquinas virtuais. Além disso, cada máquina virtual pode ter seu próprio ambiente de processamento seguro. Além disso, de acordo com outras modalidades, várias camadas podem ser combinadas ou implementadas como parte de uma única camada de abstração. Por exemplo, em certas implementações que utilizam o sistema operacional Conera da V2COM, o Conera OS fornece a camada de estrutura e as camadas do sistema operacional.
[0058]A FIGURA 5 ilustra um método 500 para processamento distribuído seguro através de redes de nós de processamento heterogêneos em um centro de comando, de acordo com certas modalidades desta divulgação. No exemplo não limitativo da FIGURA 5, pacotes de trabalho são recebidos em um centro de comando, divididos em encadeamentos, e os encadeamentos são distribuídos para dispositivos membros. Além disso, neste exemplo ilustrativo, os encadeamentos são distribuídos de acordo com regras predeterminadas para otimizar o valor de uma ou mais métricas de desempenho de processamento, como o tempo necessário para processar um pacote de trabalho, ou nos casos em que a execução probabilística é implementada, a probabilidade geral de processamento bem-sucedido.
[0059]De acordo com certas modalidades, o método 500 compreende a operação 505, em que um pacote de trabalho é recebido em um centro de comando. Em algumas modalidades, o pacote de trabalho é uma solicitação para uma tarefa de processamento a ser realizada por um conjunto de dispositivos membros em rede e que é recebida por meio de uma interface fornecida pelo centro de comando. Em alguns casos, a interface para receber o pacote de trabalho pode ser uma interface da web, em que os parâmetros são definidos por um visitante de um site. Em outros casos, a interface pode receber pacotes de trabalho de outra máquina ou processo sem interação humana. De acordo com certas modalidades, um pacote de trabalho é recebido como um conjunto de dados sobre os quais uma ou mais operações de processamento (por exemplo, hashing, verificação, ou reconhecimento óptico de caracteres), juntamente com um conjunto de parâmetros de processamento (por exemplo, um requisito de sensor para dispositivos membros, um prazo para a tarefa de processamento ou uma falha ou parâmetro de tratamento de interrupção). De acordo com outras modalidades, um pacote de trabalho pode conter código executável, e também pode ser recebido como um objeto que compreende métodos e atributos.
De acordo com certas outras modalidades, o pacote de trabalho é recebido por meio de uma interface de rede do centro de comando (por exemplo, interface de rede 230 mostrada na FIGURA 2) por meio de uma rede (como a rede 115), como uma solicitação para uma coleta de dados e processamento de objeto a certos parâmetros de trabalho.
Exemplos de tais modalidades incluem, sem limitação, uma solicitação contínua para coletar e analisar dados de temperatura coletados através de um conjunto de dispositivos membros (por exemplo, portas de comunicação, medidores ou controladores localizados em residências ou pontos de presença de serviços públicos) cobrindo uma área geográfica específica.
No exemplo não limitativo da FIGURA 5, o pacote de trabalho é recebido em um formato estruturado, com os dados a serem processados em conformidade com os requisitos (tais como dados a serem analisados sendo recebidos no formato SQL) impostos pela interface.
Outras modalidades são possíveis, em que os dados a serem processados não são estruturados (como colunas de um banco de dados colunar) e apenas os parâmetros que definem o processamento a ser realizado nos dados estão em conformidade com os formatos esperados pelo centro de comando.
Numerosas variações são possíveis e dentro do escopo pretendido desta divulgação.
[0060]Em algumas modalidades, o pacote de trabalho recebido no centro de comando na operação 505 pode ter uma carga útil desenvolvida e expressa em termos dos métodos das APIs (por exemplo, APIs 225a-225d mostrado na FIGURA 2). Em um exemplo não limitativo, o pacote de trabalho pode ser desenvolvido com base nas APIs fornecidas com o Conera IoT OS.
[0061]Além disso, em algumas modalidades, o pacote de trabalho recebido no centro de comando pode compreender ainda informações que definem objetos compartilhados e áreas de memória comuns dentro do pacote de trabalho. Por exemplo, certas operações de processamento podem exigir recursos de memória além daqueles fornecidos em qualquer nó de processamento. Nesses casos, o centro de comando pode disponibilizar parte de sua própria memória como um recurso de memória compartilhada para processar o pacote de trabalho. Em algumas modalidades, a memória disponibilizada como um recurso compartilhado pode ser a memória de "entrada" ou "saída" fornecida por cada uma das APIs do centro de comando.
[0062]Em alguns casos, um pacote de trabalho pode ser inicialmente estruturado (ou dividido pelo orquestrador de tarefas na operação 525) de uma forma que permite a execução probabilística e a otimização de um valor de uma ou mais métricas de desempenho de processamento. No contexto desta divulgação, a execução probabilística abrange o conceito de atribuição de certos encadeamentos constituintes do pacote de trabalho para vários nós de processamento, na expectativa de que um ou mais nós de processamento falharão ou serão incapazes de executar seu encadeamento atribuído. O número de nós de processamento aos quais um encadeamento foi atribuído corresponde a uma probabilidade geral de execução bem-sucedida do encadeamento por pelo menos um nó de processamento.
[0063]Em algumas modalidades, os encadeamentos de um pacote de trabalho que podem ser atribuídos para execução probabilística podem ser inicialmente expressos no pacote de trabalho com referência a métodos idempotentes das APIs do centro de comando. No contexto desta divulgação, métodos idempotentes abrangem operações que, para uma determinada entrada, fornecem a mesma saída, independentemente do tempo ou local (por exemplo, diferentes nós de processamento) de execução. De acordo com certas modalidades, como parte da operação 530, os encadeamentos de um pacote de trabalho expresso com referência a métodos idempotentes, são repartidos a múltiplos nós de processamento para execução concorrente e probabilística. No exemplo não limitativo da FIGURA 5, todos os encadeamentos de trabalho, incluindo o próprio pacote de trabalho, são canceláveis. Em outras modalidades, apenas os encadeamentos atribuídos para execução probabilística são individualmente canceláveis e podem ser cancelados em resposta a um sinal do centro de comando de que o encadeamento foi executado com sucesso em um nó diferente, ou em resposta a uma condição no nó de processamento (por exemplo, uma tarefa de uso intensivo de recursos associada à função nativa do nó, como reconhecimento de voz).
[0064]De acordo com certas modalidades, o método 500 segue para a operação 510, em que o centro de comando determina um ou mais valores de uma dimensão do pacote de trabalho recebido. Em algumas modalidades, as dimensões determinadas de um pacote de trabalho recebido são a quantidade de potência computacional (expressa, por exemplo, de acordo com o número de FLOPS) necessária para processar o pacote de trabalho, requisitos de memória associados ao processamento do pacote de trabalho, e requisitos de disponibilidade para processar o pacote de trabalho (por exemplo, um número mínimo de dispositivos membros necessários para a execução probabilística bem-sucedida ou, alternativamente, um número de dispositivos membros os quais precisam ser mantidos livres para processar ou receber outros pacotes de trabalho). Outros exemplos de dimensões de um pacote de trabalho incluem, sem limitação, o uso de memória associado ao processamento do pacote de trabalho, restrições de compartilhamento de carga entre dispositivos membros disponíveis, requisitos de processador (por exemplo, se um processador de ponto flutuante ou geração de número aleatório verdadeiro é necessário) associado com o processamento do pacote de trabalho, requisitos de sensor (por exemplo, um pacote de trabalho envolvendo a coleta de dados de temperatura requer que alguns dispositivos membros tenham termômetros), um prazo para o pacote de trabalho, protocolos de interrupção ou falha (por exemplo, ignorando um encadeamento que um dispositivo membro falha na conclusão) ou requisitos de rede (por exemplo, um pacote de trabalho envolvendo a análise das intensidades do sinal da estação base sem fio requer que alguns dispositivos membros tenham, por exemplo, conectividade 3G). Dimensões adicionais de um pacote de trabalho determinado na operação 510 incluem uma análise adicional dos requisitos de memória associados ao processamento do pacote, como as quantidades relativas de memória volátil e permanente necessárias em um ou mais nós de processamento. Ainda outras dimensões do pacote de trabalho que podem ser determinadas na operação 510 incluem uma determinação se a memória de execução para o pacote de trabalho pode ser compartilhada entre múltiplos nós de processamento, e regras para compartilhar recursos de memória entre nós de processamento. Ao compartilhar recursos de memória entre nós de processamento, certas modalidades de acordo com esta divulgação alcançam um grau de biomimética em sua operação, em que, assim como o cérebro humano consolida memórias em regiões específicas do cérebro durante o sono de movimento rápido dos olhos ("REM"), sistemas de acordo com esta divulgação podem da mesma forma consolidar a memória operacional para executar o pacote de trabalho.
[0065]De acordo com certas modalidades, a determinação de uma dimensão de um pacote de trabalho pode ser realizada analisando metadados fornecidos como parte de uma solicitação de uma interface onde o pacote de trabalho foi inicialmente recebido pelo centro de comando. Por exemplo, ao enviar o trabalho para processamento, um cliente da interface também pode especificar as dimensões do pacote de trabalho e seus valores. Alternativamente, a determinação de um valor de uma dimensão de um pacote de trabalho pode ser realizada por um motor de regras no centro de comando, o qual aplica uma ou mais regras predeterminadas para analisar os dados e instruções do pacote de trabalho.
[0066]De acordo com certas modalidades, o método 500 prossegue para a operação 515, em que o centro de comando determina um custo de processamento agregado para processar o pacote de trabalho. Em algumas modalidades, o custo de processamento agregado é uma análise estática realizada aplicando uma ou mais regras predeterminadas a um ou mais valores de dimensões do pacote de trabalho (por exemplo, dimensões do pacote de trabalho determinado na operação 510). Por exemplo, se, na operação 510, o número de dispositivos membros necessários para processar uma tarefa e classificação das capacidades dos dispositivos membros (por exemplo "10X", "100X" dispositivos, etc.) são dimensões do pacote de trabalho, então, no caso em que o centro de comando determina que pelo menos cinco (5) dispositivos membros "10X" são necessários para processar o trabalho, uma regra predeterminada especificando o número de dispositivos necessários multiplicado pela classificação dos dispositivos é aplicada. Neste exemplo não limitativo, o pacote de trabalho é determinado como tendo um custo de cinquenta (50) unidades.
[0067]De acordo com algumas modalidades, o custo de processamento agregado determinado na operação 515 pode servir como base de um custo monetário a ser cobrado da entidade que envia a solicitação de trabalho. Alternativamente, de acordo com outras modalidades, como aquelas onde um volume de trabalho computacional opera como um proxy para a escassez ou para impor um aspecto da segurança de um pacote de trabalho (como o cálculo de um grande hash), a determinação de um custo de processamento agregado na operação 515 fornece uma função de bloqueio (gating), excluindo pacotes de trabalho fraudulentos ou pacotes de trabalho que não estão em conformidade com os valores esperados de custos de processamento agregados ou valores esperados de dimensões especificadas.
[0068]De acordo com certas modalidades, o método 500 prossegue para a operação 520, em que o centro de comando identifica um ou mais dispositivos membros disponíveis comunicativamente conectados ao centro de comando por meio da interface de rede. No exemplo não limitativo da FIGURA 5, dispositivos membros comunicativamente conectados ao centro de comando através da rede transmitem mensagens de "pulsação" em intervalos predeterminados, informando ao centro de comando de sua conectividade e disponibilidade. Com base nas mensagens de "pulsação" recebidas, um registro de pacotes de trabalho sendo processado e informações sobre os pacotes de trabalho em uma fila de processamento, o centro de comando é capaz de determinar quais dispositivos membros estão disponíveis. De acordo com outras modalidades, o centro de comando executa uma identificação de dispositivos disponíveis com base em dispositivos membros que satisfazem restrições definidas no pacote de trabalho (como capacidades de processamento).
[0069]Em algumas modalidades, o método 500 prossegue para a operação 525, em que o centro de controle divide o pacote de trabalho em encadeamentos para processamento por dispositivos membros disponíveis. De acordo com algumas modalidades, um pacote de trabalho é dividido em encadeamentos com base no valor determinado de uma ou mais dimensões do pacote de trabalho. Por exemplo, se um pacote de trabalho requer o processamento de um total de 10 gigabytes de dados, e cada um dos dispositivos membros disponíveis tem apenas 1 GB de armazenamento disponível, o centro de comando pode dividir o pacote de trabalho em dez ou mais encadeamentos, com base no volume de dados e recursos de memória dos dispositivos disponíveis conforme dimensões determinadas do pacote de trabalho. De acordo com outras modalidades, um pacote de trabalho é dividido em encadeamentos com base no custo de processamento agregado determinado do pacote de trabalho ou de acordo com os dispositivos membros disponíveis para processar o trabalho. De acordo com outras modalidades, o centro de comando divide o pacote de trabalho em encadeamentos com base em outros fatores, como o prazo para conclusão da tarefa.
[0070]No exemplo não limitativo da FIGURA 5, como parte da divisão do pacote de trabalho em encadeamentos na operação 525, o centro de comando também gera um conjunto de comandos para os dispositivos membros. De acordo com certas modalidades, os comandos para os dispositivos membros podem ser expressos em termos das funções predefinidas especificadas por uma API do centro de comando (por exemplo, APIs 225a-225d mostrada na FIGURA 2), ou funções predefinidas utilizadas por uma estrutura (por exemplo, as camadas de estrutura 440 e 445 mostradas na FIGURA 4) em dispositivos membros que processam o encadeamento de trabalho. Além disso, a divisão do pacote de trabalho em encadeamentos na operação 525 pode, de acordo com certas modalidades desta divulgação, incluir criptografar dados sensíveis ou específicos de usuário para serem distribuídos aos dispositivos membros como parte de um encadeamento para processamento. De acordo com tais modalidades, os dados da entidade que submete o trabalho são protegidos contra possíveis roubos ou invasão de dispositivos membros que processam um encadeamento do pacote de trabalho.
[0071]De acordo com certas modalidades, na operação 530,
cada um dos encadeamentos determinados é repartido para um dispositivo membro disponível. No exemplo não limitativo da FIGURA 5, tal repartição compreende: a.) atribuir especificamente cada um dos encadeamentos determinados a um dispositivo membro; e b.) criar ou atualizar um registro ou estrutura de dados registrando a repartição de cada encadeamento de um pacote de trabalho para um dispositivo membro específico. De acordo com algumas modalidades, esta estrutura de dados é mantida no centro de comando. De acordo com outras modalidades, a estrutura de dados que registra a atribuição ou repartição de encadeamentos de trabalho para dispositivos membros pode ser mantida em múltiplas máquinas como uma proteção contra falha ou perda de uma cópia do registro no centro de comando.
[0072]De acordo com certas modalidades, na operação 535, o centro de comando transmite cada um dos encadeamentos repartidos para um ambiente de processamento seguro (por exemplo, SPEs 450 e 455 mostrados na FIGURA 5) de dispositivos membros compreendendo nós de processamento de uma rede distribuída. Em algumas modalidades, os encadeamentos repartidos são transmitidos por meio de uma interface de rede do centro de comando, para uma rede e, em seguida, para uma estrutura em cada um dos dispositivos membros. Em outras modalidades, incluindo, sem limitação, modalidades que empregam as APIs de V2COM Conera no centro de comando, os encadeamentos repartidos são transmitidos através de um canal de controle fornecido pela API.
[0073]Além disso, na operação 535, certas modalidades transmitem um ou mais parâmetros de controle, como um prazo para completar a tarefa de processamento ou parâmetros de falha/interrupção correspondentes a cada encadeamento dos encadeamentos repartidos. Além disso, em algumas modalidades, como parte da transmissão de encadeamentos repartidos para SPEs em dispositivos membros disponíveis, o centro de comando também transmite uma cópia da chave pública do centro de comando para criptografia, de modo que, após a conclusão do processamento de uma encadeamento, os dispositivos membros possam criptografar o resultados de seu processamento antes de transmitir o encadeamento concluído de volta para o centro de comando.
[0074]De acordo com certas modalidades, encadeamentos para execução podem ser transmitidos separadamente e acionados para execução. Por exemplo, na operação 535, o centro de comando pode transmitir os encadeamentos para os dispositivos membros através de um canal de controle fornecido pela APIs no centro de controle. Os encadeamentos podem então ser recebidos nos dispositivos membros e pré- carregados nos ambientes de processamento seguro dos dispositivos membros. Após a satisfação de uma condição predeterminada (por exemplo, receber a confirmação de que um número limite de encadeamentos foi recebido com sucesso e carregado nos SPEs dos dispositivos membros), o centro de comando pode então emitir uma pilha de chamadas, acionando a execução de cada um dos encadeamentos recebidos.
[0075]A FIGURA 6 ilustra as operações de um método 600 para processamento distribuído seguro através de redes de nós de processamento heterogêneos em um dispositivo membro de acordo com certas modalidades desta divulgação.
[0076]De acordo com certas modalidades, o método 600 começa na operação 605, em que um dispositivo membro recebe um encadeamento repartido de um centro de comando por meio de uma rede. De acordo com outras modalidades, um dispositivo membro pode receber um encadeamento repartido de um centro de comando indiretamente, como por meio de uma conexão com outro dispositivo membro (por exemplo, a conexão entre as estruturas 440 e 445 mostrada na FIGURA 4). Dependendo, sem limitação, das capacidades de processamento e disponibilidade dos dispositivos membros, cada dispositivo membro pode receber apenas um único encadeamento de um pacote de trabalho do centro de comando, ou dispositivos membros podem receber vários encadeamentos de um pacote de trabalho do centro de comando.
[0077]De acordo com certas modalidades, na operação 610, cada dispositivo membro recebe um ou mais parâmetros de controle associados ao processamento do encadeamento de um centro de comando. Dependendo das modalidades, o parâmetro de controle pode especificar pelo menos um dentre um prazo para a conclusão do encadeamento repartido, instruções de falha/interrupção para processar o encadeamento repartido ou instruções de criptografia/descriptografia para transmitir o encadeamento para o centro de comando após a conclusão.
[0078]Em algumas modalidades, na operação 615, o dispositivo membro processa o encadeamento repartido no ambiente de processamento seguro do dispositivo membro de acordo com o parâmetro de controle recebido do centro de controle. Além disso, na operação 620, o dispositivo membro fornece o encadeamento processado ao centro de comando por meio de uma rede. De acordo com certas modalidades, como parte da transmissão do encadeamento de trabalho concluído de volta ao centro de comando, o dispositivo membro pode assinar ou criptografar o encadeamento concluído usando a chave pública do centro de comando ou alguns outros indícios de confiabilidade para o centro de comando que o encadeamento processado foi recebido do dispositivo membro ao qual foi atribuído.
[0079]No exemplo não limitativo da FIGURA 5, a segurança do sistema é bloqueada pela segurança na camada superior da pilha I/O (por exemplo, a pilha I/O mostrada na FIGURA 4) pela segurança da camada de aplicação fornecido através do ambiente de processamento seguro do dispositivo membro. Assim, embora a rede à qual os dispositivos membros estão conectados possa ser segura, e os próprios dispositivos membros possam não ser seguros, a implementação de um ambiente de processamento seguro no dispositivo membro permite que o sistema de nós de processamento distribuído seja seguro. De acordo com certas modalidades, a segurança do sistema para processamento distribuído é imposta porque o ambiente de processamento seguro de cada dispositivo membro é inacessível para outros processos em execução no dispositivo membro. Além disso, em algumas modalidades, a segurança do sistema pode ser ainda mais imposta criptografando o conteúdo que entra e sai do SPE, e o SPE aceita apenas o conteúdo usando o conjunto de comandos das APIs do centro de comando.
[0080]Nenhuma das descrições neste pedido deve ser lida como sugerindo que qualquer elemento, etapa ou função particular é um elemento essencial que deve ser incluído no escopo da reivindicação. O escopo do assunto patenteado é definido apenas pelas reivindicações. Além disso, nenhuma das reivindicações se destina a invocar 35 USC § 112 (±) a menos que as palavras exatas "meios para" sejam seguidas por um particípio.

Claims (20)

REIVINDICAÇÕES
1. Método para processamento distribuído, o método caracterizado pelo fato de que compreende: receber um pacote de trabalho em um centro de comando que compreende um processador, uma interface de rede, e uma memória; determinar um valor de uma dimensão do pacote de trabalho; determinar, com base em uma regra predeterminada aplicada ao valor determinado da dimensão do pacote de trabalho, um custo de processamento agregado para o pacote de trabalho; identificar um ou mais dispositivos membros disponíveis comunicativamente conectados ao centro de comando por meio da interface de rede; dividir o pacote de trabalho em um ou mais encadeamentos com base em pelo menos um do valor determinado da dimensão, o custo de processamento agregado ou os dispositivos membros disponíveis; repartir um encadeamento de um ou mais encadeamentos para um dispositivo membro; e transmitir, por meio da interface de rede, o encadeamento repartido para um ambiente de processamento seguro do dispositivo membro.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dimensão do pacote de trabalho inclui pelo menos um de um uso de memória, uma velocidade de relógio de um processador, se os encadeamentos do pacote de trabalho devem ser processados em paralelo, restrições de compartilhamento de carga entre dispositivos membros disponíveis, presença de um processador de ponto flutuante, um sensor necessário, um prazo para o pacote de trabalho, um parâmetro de interrupção de processamento, disponibilidade de geração de número aleatório verdadeiro ou um parâmetro associado a uma capacidade de comunicação inter-rede.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o encadeamento repartido é transmitido por meio de um canal de controle entre o centro de comando e o dispositivo membro.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: repartir um segundo encadeamento de um ou mais encadeamentos para um segundo dispositivo membro; e transmitir, por meio da interface de rede, o segundo encadeamento repartido para um ambiente de processamento seguro do segundo dispositivo membro.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os encadeamentos são repartidos para serem realizados em paralelo.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: receber, no centro de comando, por meio da interface de rede, um encadeamento repartido concluído do dispositivo membro.
7. Método para processamento distribuído, o método caracterizado pelo fato de que compreende: receber, por meio de uma interface de rede, em um dispositivo membro que compreende um processador e uma memória, um encadeamento de um centro de comando; receber do centro de comando, por meio da interface de rede, um parâmetro de controle para o encadeamento; e processar o encadeamento com base no parâmetro de controle em um ambiente de processamento seguro do dispositivo membro.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que o ambiente de processamento seguro é fornecido por uma estrutura que opera na máquina virtual Java implementada no dispositivo membro.
9. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que compreende ainda: receber, por meio da interface de rede, um segundo encadeamento do centro de comando, receber, do centro de comando, por meio da interface de rede, um parâmetro de controle para o segundo encadeamento; e processar o encadeamento com base no parâmetro de controle para o segundo encadeamento em um segundo ambiente de processamento seguro do dispositivo membro, em que os processos e a memória do dispositivo membro associado ao ambiente de processamento seguro são isolados dos processos e da memória associados ao segundo ambiente de processamento seguro.
10. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que os processos e a memória associados ao ambiente de processamento seguro do dispositivo membro são isolados dos processos e da memória associados a uma aplicação em execução no dispositivo membro.
11. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a estrutura no dispositivo membro está conectada comunicativamente a uma estrutura em um segundo dispositivo membro.
12. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que o parâmetro de controle está associado a pelo menos um de um escalonamento para processar o encadeamento, um protocolo de interrupção para o encadeamento ou um protocolo de falha para o encadeamento.
13. Meio legível por computador não transitório contendo código de programa, caracterizado pelo fato de que o qual quando executado por um processador, faz com que um centro de comando: receba um pacote de trabalho no centro de comando, o centro de comando compreendendo o processador, uma interface de rede, e uma memória; determine um valor de uma dimensão do pacote de trabalho; determine, com base em uma regra predeterminada aplicada ao valor determinado da dimensão do pacote de trabalho, um custo de processamento agregado para o pacote de trabalho; identifique um ou mais dispositivos membros disponíveis comunicativamente conectados ao centro de comando por meio da interface de rede; divida o pacote de trabalho em um ou mais encadeamentos com base em pelo menos um do valor determinado da dimensão, o custo de processamento agregado ou os dispositivos membros disponíveis; reparta um encadeamento de um ou mais encadeamentos para um dispositivo membro; e transmita, por meio da interface de rede, o encadeamento repartido para um ambiente de processamento seguro do dispositivo membro.
14. Meio legível por computador não transitório, de acordo com a reivindicação 13, caracterizado pelo fato de que a dimensão do pacote de trabalho inclui pelo menos um de um uso de memória, uma velocidade de relógio de um processador, se os encadeamentos do pacote de trabalho devem ser processados em paralelo, restrições de compartilhamento de carga entre dispositivos membros disponíveis, presença de um processador de ponto flutuante, um sensor necessário, um prazo para o pacote de trabalho, um parâmetro de interrupção de processamento, disponibilidade de geração de número aleatório verdadeiro ou um parâmetro associado a uma capacidade de comunicação inter-rede.
15. Meio legível por computador não transitório, de acordo com a reivindicação 13, caracterizado pelo fato de que o encadeamento repartido é transmitido por meio de um canal de controle entre o centro de comando e o dispositivo membro.
16. Meio legível por computador não transitório, de acordo com a reivindicação 13, caracterizado pelo fato de que compreende ainda o código de programa, o qual quando executado pelo processador, faz com que o centro de comando: distribua um segundo encadeamento de um ou mais encadeamentos para um segundo dispositivo membro; e transmita, por meio da interface de rede, o segundo encadeamento repartido para um ambiente de processamento seguro do segundo dispositivo membro.
17. Meio legível por computador não transitório, de acordo com a reivindicação 13, caracterizado pelo fato de que os encadeamentos são repartidos para serem realizados em paralelo.
18. Meio legível por computador não transitório, de acordo com a reivindicação 13, caracterizado pelo fato de que compreende o código de programa o qual, quando executado pelo processador, faz com que o centro de comando: receba, por meio da interface de rede, um encadeamento repartido completado do dispositivo membro.
19. Centro de comando, caracterizado pelo fato de que compreende: um processador; uma interface de rede; e uma memória contendo instruções as quais, quando executadas pelo processador, fazem com que o centro de comando: receba um pacote de trabalho, determine o valor de uma dimensão do pacote de trabalho, determine, com base em uma regra predeterminada aplicada ao valor determinado da dimensão do pacote de trabalho, um custo de processamento agregado para o pacote de trabalho, identifique um ou mais dispositivos membros disponíveis comunicativamente conectados ao centro de comando por meio da interface de rede, divida o pacote de trabalho em um ou mais encadeamentos com base em pelo menos um do valor determinado da dimensão, o custo de processamento agregado ou os dispositivos membros disponíveis, distribua um encadeamento de um ou mais encadeamentos para um dispositivo membro, e transmita, por meio da interface de rede, o encadeamento repartido para um ambiente de processamento seguro do dispositivo membro.
20. Dispositivo membro, caracterizado pelo fato de que compreende: uma interface de rede; um processador; e uma memória contendo instruções as quais, quando executadas pelo processador, fazem com que o dispositivo membro: receba, por meio da interface de rede, um encadeamento de um centro de comando, receba do centro de comando, por meio da interface de rede, um parâmetro de controle para o encadeamento, e processe o encadeamento com base no parâmetro de controle em um ambiente de processamento seguro do dispositivo membro.
BR112020017898-5A 2018-03-01 2019-02-27 Sistema e método para processamento distribuído seguro através de redes de nós de processamento heterogêneo BR112020017898A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862637267P 2018-03-01 2018-03-01
US62/637,267 2018-03-01
PCT/US2019/019896 WO2019169035A1 (en) 2018-03-01 2019-02-27 System and method for secure distributed processing across networks of heterogeneous processing nodes

Publications (1)

Publication Number Publication Date
BR112020017898A2 true BR112020017898A2 (pt) 2020-12-22

Family

ID=65802176

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020017898-5A BR112020017898A2 (pt) 2018-03-01 2019-02-27 Sistema e método para processamento distribuído seguro através de redes de nós de processamento heterogêneo

Country Status (5)

Country Link
EP (2) EP4328750A3 (pt)
CN (1) CN111936975A (pt)
BR (1) BR112020017898A2 (pt)
MX (1) MX2020009034A (pt)
WO (1) WO2019169035A1 (pt)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9524192B2 (en) * 2010-05-07 2016-12-20 Microsoft Technology Licensing, Llc Distributed workflow execution
CN106933669B (zh) * 2015-12-29 2021-01-08 伊姆西Ip控股有限责任公司 用于数据处理的装置和方法
US9935893B2 (en) * 2016-03-28 2018-04-03 The Travelers Indemnity Company Systems and methods for dynamically allocating computing tasks to computer resources in a distributed processing environment
US10877816B2 (en) * 2016-04-20 2020-12-29 Samsung Electronics Co., Ltd. Optimal task scheduler

Also Published As

Publication number Publication date
EP4328750A2 (en) 2024-02-28
WO2019169035A1 (en) 2019-09-06
CN111936975A (zh) 2020-11-13
EP3759600A1 (en) 2021-01-06
EP4328750A3 (en) 2024-03-20
MX2020009034A (es) 2021-01-08

Similar Documents

Publication Publication Date Title
US11436051B2 (en) Technologies for providing attestation of function as a service flavors
US20220209971A1 (en) Methods and apparatus to aggregate telemetry data in an edge environment
CN110865867B (zh) 应用拓扑关系发现的方法、装置和系统
US10089384B2 (en) Machine learning-derived universal connector
CN108701076B (zh) 分布式数据集存储和检索
US9882985B1 (en) Data storage path optimization for internet of things computing system
US10129118B1 (en) Real time anomaly detection for data streams
US11019128B2 (en) Identity service management in limited connectivity environments
US9367419B2 (en) Implementation on baseboard management controller of single out-of-band communication access to multiple managed computer nodes
US8930519B2 (en) Emulated communication between master management instance and assisting management instances on baseboard management controller
US9959188B1 (en) Managing processor usage of a physical host configured for hosting computing instances
US11403199B2 (en) Secure detection and correction of inefficient application configurations
CN111258627A (zh) 一种接口文档生成方法和装置
US20230136612A1 (en) Optimizing concurrent execution using networked processing units
US11418583B2 (en) Transaction process management by dynamic transaction aggregation
US10970055B2 (en) Identifying software and hardware bottlenecks
BR112020017898A2 (pt) Sistema e método para processamento distribuído seguro através de redes de nós de processamento heterogêneo
KR101505468B1 (ko) 클라우드 컴퓨팅 환경 내 데이터 비교 처리 방법 및 시스템
US10761900B1 (en) System and method for secure distributed processing across networks of heterogeneous processing nodes
KR101630088B1 (ko) 가상머신의 라이프사이클 모니터링 방법 및 그 장치
CN107704618A (zh) 一种基于aufs文件系统的热迁徙方法和系统
US11381468B1 (en) Identifying correlated resource behaviors for resource allocation
US11635983B2 (en) Pre-trained software containers for datacenter analysis
Kim et al. Optimizing Logging and Monitoring in Heterogeneous Cloud Environments for IoT and Edge Applications
Bumgardner Contributions to edge computing

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]