IT202100029084A1 - Method and system for high-throughput distributed computing of computational jobs - Google Patents
Method and system for high-throughput distributed computing of computational jobs Download PDFInfo
- Publication number
- IT202100029084A1 IT202100029084A1 IT102021000029084A IT202100029084A IT202100029084A1 IT 202100029084 A1 IT202100029084 A1 IT 202100029084A1 IT 102021000029084 A IT102021000029084 A IT 102021000029084A IT 202100029084 A IT202100029084 A IT 202100029084A IT 202100029084 A1 IT202100029084 A1 IT 202100029084A1
- Authority
- IT
- Italy
- Prior art keywords
- job
- user devices
- cluster
- chunk
- input
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Description
Titolo: "Metodo e sistema per il calcolo distribuito ad elevato throughput di job computazionali" Title: "Method and system for high-throughput distributed computing of computational jobs"
DESCRIZIONE DESCRIPTION
Campo di applicazione Field of application
La presente invenzione si inserisce nel settore del calcolo distribuito per l'elaborazione di lavori, o job, computazionali. The present invention fits into the sector of distributed computing for the processing of computational jobs.
Sfondo dell'invenzione Background of the invention
Nell'era dell'internet delle cose (Internet of Things, IoT) e dei Big Data, i file system distribuiti e l?elaborazione in cloud, o cloud computing, sono elementi fondamentali per la gestione e l'elaborazione dei dati. I server per cloud mondiali di propriet? delle pi? grandi aziende tecnologiche sono la risorsa pi? preziosa su cui possiamo contare oggi per eseguire calcoli distribuiti in outsourcing; l?elaborazione in edge, o edge computing, ? divenuta indispensabile poich? cresce sempre pi? il volume di dati gestiti dalle aziende per qualsivoglia scopo. In the era of the Internet of Things (IoT) and Big Data, distributed file systems and cloud computing are fundamental elements for data management and processing. Owned global cloud servers of the most? big technology companies are the greatest resource? valuable that we can count on today to perform distributed calculations in outsourcing; edge processing, or edge computing, is has become indispensable since? grows more and more? the volume of data managed by companies for any purpose.
Numerosi anni di progressi tecnologici hanno spianato la strada al cloud computing verso l'Industria 4,0, rendendo possibile la realizzazione di un'ampia gamma di soluzioni cloud e modificando in modo irreversibile il nostro modo di guardare le cose. Di conseguenza, negli ultimi quindici anni sono nate numerose nuove aziende che operano nel settore del cloud, come Snowflake, Cloudflare, Databricks e i noti leader del settore tech Google, Microsoft, Amazon, IBM devono la loro posizione di giganti dell'informatica anche all'introduzione del cloud. Numerous years of technological advances have paved the way for cloud computing towards Industry 4.0, making it possible to create a wide range of cloud solutions and irreversibly changing the way we look at things. As a result, in the last fifteen years numerous new companies operating in the cloud sector have been born, such as Snowflake, Cloudflare, Databricks and the well-known leaders of the tech sector Google, Microsoft, Amazon, IBM also owe their position as IT giants to introduction of the cloud.
Il cloud computing consente l'elaborazione efficiente e flessibile di enormi carichi di lavoro tramite uno o pi? server in outsourcing. In particolare, il campo del calcolo distribuito studia il coordinamento di unit? di calcolo collegate in rete poste in diverse posizioni, che possono eseguire congiuntamente attivit? di calcolo, o task, disparate. Infine, il paradigma del calcolo in griglia, o grid computing, estende il concetto di calcolo distribuito ammettendo eterogeneit? nella composizione dei computer in rete e considerando che un grosso job computazionale originario pu? essere suddiviso in singoli task, distribuiti nella rete. Cloud computing enables the efficient and flexible processing of massive workloads via one or more outsourced servers. In particular, the field of distributed computing studies the coordination of units? networked computing devices placed in different positions, which can jointly perform tasks? of calculations, or tasks, disparate. Finally, the grid computing paradigm extends the concept of distributed computing by admitting heterogeneity? in the composition of networked computers and considering that a large original computational job can? be divided into individual tasks, distributed across the network.
Esistono oggi alcuni progetti che si propongono di distribuire job computazionali su una grid di dispositivi comuni, in particolare di tipo desktop, in un quadro di grid computing. Questi hanno lo scopo di sfruttare la notevole insita potenza computazionale diffusa che si trova all'interno dei dispositivi utente comuni. Tale potenza rimane solitamente inutilizzata durante l'inattivit? dei proprietari umani, ad esempio di notte. There are some projects today that aim to distribute computational jobs on a grid of common devices, in particular desktop ones, in a grid computing framework. These are intended to exploit the considerable inherent widespread computational power found within common user devices. This power usually remains unused during inactivity. of human owners, for example at night.
L'attuazione di calcoli distribuiti su dispositivi esistenti e comunemente attivi non ? solo un'implementazione del paradigma del grid computing, ma anche un'alternativa ecologica alla costruzione di infrastrutture di cloud computing come i data center, in quanto garantisce calcoli altamente parallelizzati e a bassa intensit? e realizza dispersione del calore, senza richiedere quindi ulteriore raffreddamento diverso da quello fornito dall'ambiente. Implementing distributed computations on existing, commonly active devices is not ? only an implementation of the grid computing paradigm, but also an ecological alternative to the construction of cloud computing infrastructures such as data centers, as it guarantees highly parallelized and low-intensity calculations. and achieves heat dispersion, without therefore requiring further cooling other than that provided by the environment.
Molte soluzioni operative note appartengono alla categoria del calcolo su base volontaria, o Volunteer Computing, nel quale gli utenti mettono a disposizione i propri dispositivi per l'hosting di calcoli intensivi esterni su base volontaria. Esempi di progetti di calcolo distribuito sono BOINC, Distributed.net, HTCondor e Folding@Home. Many well-known operational solutions belong to the category of voluntary computing, in which users make their devices available for hosting intensive external calculations on a voluntary basis. Examples of distributed computing projects are BOINC, Distributed.net, HTCondor, and Folding@Home.
BOINC ? una piattaforma per il calcolo distribuito ad elevata intensit?, o High-Throughput computing, in cui i nodi di lavoro sono computer desktop e portatili, tablet e smartphone offerti volontariamente dai loro proprietari. Numerosi progetti sono collegati a BOINC e usano la relativa infrastruttura distribuita. Ad esempio: SETI@Home per l'elaborazione di segnali digitali dei dati di radiotelescopi; Einstein@Home per la ricerca di deboli segnali astrofisici provenienti da stelle di neutroni rotanti; IBM World Community Grid per la ricerca scientifica su temi legati alla sanit?, alla povert? e alla sostenibilit?; Climateprediction.net per simulazioni di modelli climatici. BOINC ? a platform for high-intensity distributed computing, or High-Throughput computing, in which the worker nodes are desktop and laptop computers, tablets and smartphones voluntarily offered by their owners. Numerous projects are connected to BOINC and use its distributed infrastructure. For example: SETI@Home for digital signal processing of radio telescope data; Einstein@Home for searching for faint astrophysical signals from rotating neutron stars; IBM World Community Grid for scientific research on topics related to health, poverty and and sustainability; Climateprediction.net for climate model simulations.
HTCondor ? un altro software open source per il calcolo distribuito capace di aumentare il throughput di calcolo, sviluppato presso l'Universit? del Wisconsin-Madison. HTCondor offre un meccanismo di accodamento di lavori, o job queuing, criteri di scheduling, uno schema di priorit?, monitoraggio di risorse e gestione di risorse e pu? integrare sia risorse dedicate (cluster montati su rack) sia macchine desktop non dedicate (grazie al Volunteer Computing) in un unico ambiente informatico. HTCondor ? another open source software for distributed computing capable of increasing computing throughput, developed at the University? of Wisconsin-Madison. HTCondor offers a job queuing mechanism, scheduling policies, a priority scheme, resource monitoring and resource management and can integrate both dedicated resources (rack-mounted clusters) and non-dedicated desktop machines (thanks to Volunteer Computing) into a single computing environment.
Sommario dell?invenzione Summary of the invention
Uno scopo della presente invenzione ? quello di realizzare un ambiente innovativo di calcolo distribuito ad elevato throughput, atto a ricevere e risolvere diversi job computazionali. An aim of the present invention? that of creating an innovative high throughput distributed computing environment, capable of receiving and solving various computational jobs.
Un altro scopo dell'invenzione ? quello di offrire un'alternativa sostenibile all'incremento del consumo di risorse da parte del cloud computing. Another purpose of the invention? to offer a sustainable alternative to the increased resource consumption of cloud computing.
Un altro scopo ancora dell'invenzione ? quello di diffondere il calcolo distribuito su un elevato numero di dispositivi utente, come personal computer, smartphone, tablet, console di gioco e smart TV, mantenendo un elevato livello di efficienza. Yet another purpose of the invention? that of spreading distributed computing across a large number of user devices, such as personal computers, smartphones, tablets, game consoles and smart TVs, maintaining a high level of efficiency.
Questo ed altri scopi vengono conseguiti grazie ad un metodo e ad un sistema di calcolo distribuito per l'elaborazione di job computazionali in accordo con una qualunque delle annesse rivendicazioni. This and other objectives are achieved thanks to a method and a distributed computing system for the processing of computational jobs in accordance with any of the attached claims.
L'invenzione fornisce una piattaforma clienti in cui un'entit? cliente pu? caricare specifiche di job e quindi il relativo job computazionale, eseguibili da una grid di dispositivi utente. Un sistema software di servizi interni interroga i dispositivi utente per valutare uno stato della grid. Quindi, in base alle specifiche di job e allo stato della grid, seleziona uno schema di partizionamento del job. The invention provides a customer platform where an entity customer can? load job specifications and therefore the related computational job, executable from a grid of user devices. An internal services software system queries user devices to evaluate a grid state. Then, based on the job specifications and grid state, select a job partitioning scheme.
Il flusso di input dei dati di job viene caricato e suddiviso in pezzi, o chunk, di input di dati, in base a parametri di suddivisione dello schema di partizionamento. I chunk di input vengono inclusi in file di attivit?, o task, eseguibili che vengono distribuiti ai dispositivi utente in base a parametri di distribuzione dello schema di suddivisione. Dal momento che durante la configurazione dello schema di partizionamento si tiene conto dello stato della grid, ciascun dispositivo ricever? un task opportuno per il quale ? possibile prevedere un tempo di esecuzione e di invio prestabilito. The job data input stream is loaded and divided into pieces, or chunks, of data input, based on partitioning scheme parameters. Input chunks are included in executable activity files, or tasks, that are distributed to user devices based on distribution parameters of the splitting scheme. Since the state of the grid is taken into account when configuring the partitioning scheme, each device will receive an appropriate task for which? It is possible to foresee a pre-established execution and sending time.
Preferibilmente, le fasi di suddivisione e distribuzione hanno luogo gi? durante il caricamento del flusso di input. Pertanto, non ? necessario che vengano salvati stabilmente i dati di job completi nei database che supportano il sistema servizi interni, ma ? possibile semplicemente salvare temporaneamente i chunk di input, e parte di essi possono essere eliminati anche prima che venga completato il caricamento, o upload. Preferably, the subdivision and distribution phases already take place? while loading the input stream. Therefore, isn't it? It is necessary for complete job data to be stably saved in the databases that support the internal services system, but? It is possible to simply temporarily save the input chunks, and part of them can be deleted even before the upload is completed.
I dispositivi utente ricevono ed eseguono i chunk di input e ottengono chunk di output che vengono reinviati al sistema servizi interni. Realizzazioni vantaggiose prevedono soluzioni atte a compensare risposte mancanti o inutilizzabili da uno o pi? dispositivi utente, sia duplicando preventivamente i task perch? vengano eseguiti da dispositivi distinti, sia assegnando successivamente i task non completati ad altri dispositivi di calcolo. User devices receive and execute input chunks and obtain output chunks that are sent back to the internal services system. Advantageous realizations provide solutions aimed at compensating for missing or unusable responses from one or more? user devices, both by previously duplicating the tasks why? are performed by separate devices, or by subsequently assigning uncompleted tasks to other computing devices.
Infine, i chunk di output vengono assemblati per ottenere un risultato di job, accessibile al cliente dalla piattaforma. Finally, the output chunks are assembled to obtain a job result, accessible to the client from the platform.
Pertanto, l'invenzione rende il calcolo distribuito efficiente ed affidabile, con rischi minimi di ritardo di consegna del risultato del job. Le specifiche di job per diversi job consentono di assegnare priorit? al calcolo a determinati job, con un'opportuna distribuzione dei task a dispositivi utente con prestazioni pi? o meno elevate. Therefore, the invention makes distributed computing efficient and reliable, with minimal risks of late delivery of the job result. Job specifications for different jobs allow you to assign priorities to the calculation of certain jobs, with an appropriate distribution of tasks to user devices with higher performance? or less high.
Gli utenti che offrono la propria capacit? di calcolo possono essere ricompensati con crediti o sconti, per motivare la partecipazione. Grazie al fatto che il calcolo non ? concentrato nei server centrali, si ha un notevole incremento della dissipazione del calore, poich? ogni dispositivo utente ? naturalmente raffreddato dall'ambiente. Si evita cos? di dover prevedere ingombranti sistemi di raffreddamento, il che consente di conseguire notevoli miglioramenti dal punto di vista della sostenibilit? economica e ambientale. Users who offer their capacity? calculations can be rewarded with credits or discounts, to motivate participation. Thanks to the fact that the calculation is not ? concentrated in the central servers, there is a notable increase in heat dissipation, since? each user device ? naturally cooled by the environment. Is this avoided? of having to provide cumbersome cooling systems, which allows for significant improvements to be achieved from a sustainability point of view? economic and environmental.
Breve descrizione dei disegni Brief description of the drawings
La presente invenzione verr? ora descritta in maggior dettaglio con riferimento alle tavole di disegno annesse, in cui sono illustrate alcune realizzazioni dell?invenzione. Will this invention come? now described in greater detail with reference to the attached drawings, in which some embodiments of the invention are illustrated.
La FIG. 1 ? un diagramma schematico di un sistema di calcolo distribuito per l'elaborazione di job computazionali in accordo con una realizzazione dell'invenzione, le FIGG.2 e 3 sono rappresentazioni schematiche di diverse fasi dei processi per suddividere dati di job in chunk di input, distribuire task a dispositivi utente, ricevere chunk di output, e assemblarli come risultato di job, di un metodo di calcolo distribuito per l'elaborazione di job computazionali in accordo con una realizzazione dell'invenzione, FIG. 1 ? a schematic diagram of a distributed computing system for processing computational jobs in accordance with an embodiment of the invention, FIGS. 2 and 3 are schematic representations of different steps of the processes for dividing job data into input chunks, distributing tasks to user devices, receiving output chunks, and assembling them as a job result, of a distributed computing method for processing computational jobs in accordance with an embodiment of the invention,
le FIGG. 4 e 5 sono rappresentazioni schematiche di fasi di preselezione e raggruppamento per l'assegnazione di task a dispositivi utente, secondo il metodo delle figure 2 e 3, FIGS. 4 and 5 are schematic representations of preselection and grouping phases for assigning tasks to user devices, according to the method of figures 2 and 3,
la FIG. 6 ? una rappresentazione schematica dell'attribuzione ai cluster di dimensioni di chunk di cluster e numeri di chunk di cluster, come parametri per la suddivisione di dati di job in chunk di input, secondo il metodo delle figure 2 e 3, e la FIG.7 ? una rappresentazione schematica della generazione di code di task di cluster e di code di task di dispositivo individuali, per assegnare task ai dispositivi utente, secondo il metodo delle figure 2 e 3. FIG. 6 ? a schematic representation of the assignment of cluster chunk sizes and cluster chunk numbers to clusters, as parameters for the subdivision of job data into input chunks, according to the method of figures 2 and 3, and FIG.7 ? a schematic representation of the generation of cluster task queues and individual device task queues, to assign tasks to user devices, according to the method of Figures 2 and 3.
Descrizione dettagliata Detailed description
Sono descritti un metodo di calcolo distribuito per l'elaborazione di job computazionali, e un sistema elettronico 100 configurato per eseguire il metodo. A distributed computing method for processing computational jobs, and an electronic system 100 configured to execute the method, are described.
Il sistema 100 comprende un software lato cliente 110, fornito ad entit? cliente 200. Le entit? cliente 200 sono soggetti interessati a far elaborare al sistema 100 uno o pi? job computazionali 400, per ottenere rispettivi risultati di job 500. System 100 includes client-side software 110, provided to entities customer 200. The entities? customer 200 are subjects interested in having the system 100 process one or more? computational jobs 400, to obtain respective results of job 500.
Il software lato cliente 110 include una piattaforma informatica cliente 111 per l'upload di job computazionali 400 da parte delle entit? cliente 200, e per altre funzioni specificate di seguito. Pi? in dettaglio, il software lato cliente 110 comprende una pluralit? di servizi software cliente 112, 113, 114 configurati per eseguire singole funzioni relative alla piattaforma. The client-side software 110 includes a client computing platform 111 for uploading computational jobs 400 by entities. customer 200, and for other functions specified below. More? in detail, the client-side software 110 includes a plurality? of customer software services 112, 113, 114 configured to perform individual platform-related functions.
Ciascun job computazionale 400 ? composto da dati di job con una certa dimensione di job. I dati di job possono essere immessi nella piattaforma cliente 111 in forma di flusso di dati di input. A tal fine, il software lato cliente 110 include un servizio di upload di job 112. Each computational job 400 ? composed of job data with a certain job size. The job data may be input to the client platform 111 in the form of an input data stream. To this end, the client-side software 110 includes a job upload service 112 .
Comunemente, le entit? cliente 200 forniscono job computazionali 400 con dimensioni di job relativamente elevate, e di conseguenza la ricezione dei singoli flussi di input richiede un intervallo di tempo di upload non trascurabile. Commonly, the entities client 200 provide computational jobs 400 with relatively large job sizes, and consequently receiving individual input streams requires a non-negligible upload time interval.
Per ragioni che risulteranno chiare di seguito, l'upload del flusso di input ? preceduto dall'immissione nella piattaforma clienti 111 di specifiche di job, sempre dalle entit? cliente 200, le specifiche di job essendo caricate dal servizio di upload di job 112. La specifica di job di un dato job computazionale 400 include parametri che caratterizzano il rispettivo job computazionale 400. Esempi preferiti di tali parametri sono la dimensione del job, il formato di input e/o output del job, il linguaggio di programmazione, l'esecuzione mediante algoritmi di libreria o algoritmi personalizzati, l'oggetto del job (come operazioni multimediali, elaborazione di dati tabulari, operazioni di testo o web testing), il livello di priorit? di esecuzione e le limitazioni geografiche nella posizione di esecuzione. For reasons that will become clear below, uploading the input stream is ? preceded by the entry of job specifications into the customer platform 111, again by the entities? client 200, the job specifications being uploaded by the job upload service 112. The job specification of a given computational job 400 includes parameters characterizing the respective computational job 400. Preferred examples of such parameters are the job size, the format of input and/or output of the job, the programming language, execution using library algorithms or custom algorithms, the object of the job (such as multimedia operations, tabular data processing, text operations or web testing), the level of priority? execution and geographic limitations in the execution location.
Il sistema 100 comprende anche un sistema di memorizzazione dati 120, comprendente uno o pi? database 121, 122, 123, 124, 125, in posizioni uguali o diverse, alcuni di essi essendo database in cloud in alcune realizzazioni. Il sistema di memorizzazione dati 120 ? gestito dal proprietario del sistema elettronico, e non ? inteso per essere accessibile alle entit? cliente 200 o ad entit? utente 300, come descritte di seguito. Il servizio di upload di job 112 ? configurato per effettuare l'upload del flusso di input e delle specifiche di job nel sistema di memorizzazione dati 120. The system 100 also includes a data storage system 120, comprising one or more databases 121, 122, 123, 124, 125, in the same or different locations, some of them being cloud databases in some embodiments. The data storage system 120 ? managed by the owner of the electronic system, and not? intended to be accessible to entities? customer 200 or to entities? user 300, as described below. The job upload service 112 ? configured to upload the input stream and job specifications to the data storage system 120.
Un sistema software di servizi interni 130 viene eseguito in uno o pi? database 121, 122, 123, 124, 125 del sistema di memorizzazione dati 120, per ricevere e gestire i dati di job ricevuti attraverso la piattaforma clienti 111, e per svolgere altre funzioni illustrate di seguito. Il sistema servizi interni 130 pu? comprendere una pluralit? di servizi interni 131, 132, 133, 134, 135, 136, 137 con algoritmi che eseguono funzioni diverse, tra le funzioni che verranno descritte di seguito. An internal services software system 130 runs in one or more? database 121, 122, 123, 124, 125 of the data storage system 120, to receive and manage job data received through the customer platform 111, and to perform other functions illustrated below. The internal services system 130 can? understand a plurality? of internal services 131, 132, 133, 134, 135, 136, 137 with algorithms that perform different functions, among the functions that will be described below.
Il sistema 100 comprende un software lato utente 140, fornito alle entit? utente 300. Le entit? utente 300 sono soggetti che possiedono rispettivi dispositivi utente 310, adatti all'installazione e all'esecuzione del software lato utente 140, e che sono interessati ad offrire potenza computazionale. Tra gli esempi di dispositivi utente 310 sono inclusi personal computer, smartphone, tablet, console di gioco e smart TV. Preferibilmente, la potenza computazionale viene offerta in cambio di denaro, servizi o altri crediti secondo un tariffario prestabilito. System 100 includes user-side software 140, provided to entities user 300. The entities? user 300 are subjects who own respective user devices 310, suitable for installing and running the user-side software 140, and who are interested in offering computational power. Examples of user devices 310 include personal computers, smartphones, tablets, game consoles, and smart TVs. Preferably, the computational power is offered in exchange for money, services or other credits according to a pre-established fee schedule.
Il software lato utente 140 pu? comprendere un'applicazione di dispositivo 141 e pi? servizi utente 142134, 142, 143, con algoritmi che eseguono funzioni diverse, tra le funzioni che verranno descritte di seguito. L'applicazione di dispositivo 141 ? configurata per fornire un'interfaccia grafica utente, e per attivare i servizi utente 142, 143, 144, ove necessario. The user-side software 140 can? understand a device application 141 and more? user services 142134, 142, 143, with algorithms that perform different functions, among the functions that will be described below. The device application 141 ? configured to provide a graphical user interface, and to activate user services 142, 143, 144, where necessary.
I dispositivi utente 310 sono remoti dal sistema di memorizzazione 120. Quando i dispositivi utente 310 eseguono il software lato utente 140, essi sono almeno periodicamente in comunicazione di segnale con il sistema di memorizzazione 120. Cos?, i dispositivi utente 310 formano collettivamente una griglia, o grid, in comunicazione di segnale con il sistema di memorizzazione 120. La grid viene impostata con l'aggiunta progressiva di dispositivi utente 310. The user devices 310 are remote from the storage system 120. When the user devices 310 run the user-side software 140, they are at least periodically in signal communication with the storage system 120. Thus, the user devices 310 collectively form a grid , or grid, in signal communication with the storage system 120. The grid is set up by progressively adding user devices 310.
Il sistema servizi interni 130 ? configurato per interrogare con query e ricevere periodicamente risposte dai dispositivi utente 310. In particolare, queste funzioni vengono svolte da un database di gestione grid 121 del sistema di memorizzazione 120, preferibilmente un database Firebase, dove vengono quindi memorizzate le risposte provenienti dai dispositivi utenti 310. The internal services system 130 ? configured to query and periodically receive responses from the user devices 310. In particular, these functions are performed by a grid management database 121 of the storage system 120, preferably a Firebase database, where the responses coming from the user devices 310 are then stored .
Pi? in dettaglio, i dispositivi utente 310 vengono interrogati circa un rispettivo stato di dispositivo. Lo stato di dispositivo pu? essere espresso in termini di parametri come parametri di capacit? di calcolo, caratterizzanti le massime prestazioni potenziali del dispositivo utente 310, e parametri di disponibilit?, caratterizzanti i limiti correnti e/o storici che impediscono l'uso delle massime prestazioni potenziali. More? in detail, the user devices 310 are queried about a respective device state. The device status can? be expressed in terms of parameters such as capacity parameters? of calculation, characterizing the maximum potential performance of the user device 310, and availability parameters, characterizing the current and/or historical limits that prevent the use of the maximum potential performance.
Esempi di parametri di capacit? di calcolo sono i valori di RAM, CPU e memoria installate. I parametri di disponibilit? includono lo stato di potenza del dispositivo utente 310 (acceso/spento), e valori di RAM, CPU, memoria e larghezza di banda attualmente disponibili, perch? non altrimenti in uso dal dispositivo utente 310. Altri parametri di disponibilit? includono valori di soglia di utilizzo per RAM, CPU, memoria, larghezza di banda e soglie di tempo. I valori di soglia d'uso possono essere impostati dalle entit? utente 300 in modo che la capacit? di calcolo utilizzata dal software lato utente non copra l'intera capacit? di calcolo disponibile. Le soglie di tempo sono una o pi? finestre temporali di disponibilit? impostabili dall'entit? utente 300, eventualmente con valori di soglia d'uso diversi per finestre temporali di disponibilit? diverse. Examples of capacity parameters? calculation are the values of RAM, CPU and memory installed. The availability parameters? include the power status of the user device 310 (on/off), and currently available RAM, CPU, storage and bandwidth values, why? not otherwise in use by the user device 310. Other availability parameters? include usage threshold values for RAM, CPU, storage, bandwidth, and time thresholds. Can usage threshold values be set by entities? user 300 so that the capacity? calculation used by the user-side software does not cover the entire capacity? of calculation available. Are the time thresholds one or more? availability time windows? settable by the entity? user 300, possibly with different use threshold values for availability time windows? different.
Altri esempi di parametri di disponibilit? sono la batteria rimanente, la temperatura interna, l'attivit? corrente del dispositivo utente 310, la posizione del dispositivo utente 310 e dati accelerometrici. Other examples of availability parameters? are the remaining battery, the internal temperature, the activity? current of the user device 310, the position of the user device 310 and accelerometer data.
Altri parametri di disponibilit? si riferiscono all'efficienza della comunicazione, o sull'altro lato alle limitazioni d'uso della capacit? di calcolo dovute ad inefficienze di comunicazione, come tipo di rete, velocit? di rete, latenza di rete e indirizzo IP. Other availability parameters? do they refer to the efficiency of communication, or on the other hand to limitations in the use of capacity? of calculation due to communication inefficiencies, such as type of network, speed? network, network latency and IP address.
Un altro parametro ancora ? correlato a dati storici sulle effettive prestazioni di calcolo dei dispositivi utente 310. Le prestazioni vengono valutate in base all'esecuzione di task, ossia pacchetti di file eseguibili e chunk di dati. Come descritto di seguito, ai dispositivi utente 310 vengono assegnati task, generati da chunk di dati di input, al fine di ottenere parti dei risultati di job 500. I task distribuiti a dispositivi utente 310 diversi saranno generalmente diversi. Cos?, in una realizzazione, i dati storici includono le prestazioni del dispositivo utente 310 su uno o pi? di tali task recenti, ad esempio rappresentati da un tempo di esecuzione e da un completamento dell'esecuzione. Yet another parameter? related to historical data on the actual computing performance of user devices 310. Performance is evaluated based on the execution of tasks, i.e. packets of executable files and data chunks. As described below, user devices 310 are assigned tasks, generated from chunks of input data, in order to obtain parts of the results of job 500. Tasks distributed to different user devices 310 will generally be different. Thus, in one embodiment, the historical data includes the performance of the user device 310 on one or more of such recent tasks, for example represented by an execution time and an execution completion.
In altre realizzazioni, le prestazioni vengono valutate sulla base dell'esecuzione di uno o pi? recenti task di prova prestabiliti. Il task di prova pu? essere inviato dal sistema di memorizzazione 120 al dispositivo utente 310 con la query di stato, senza alcuna funzione di ottenimento del risultato di job 500, ma solo al fine di testare la capacit? di calcolo e la disponibilit? del dispositivo utente 310, nonch? la sua precisione di calcolo. Il task di prova pu? essere lo stesso per tutti i dispositivi utente 310, in modo che le relative prove prestazionali siano comparabili. In other implementations, performance is evaluated based on the execution of one or more? recent pre-established test tasks. The test task can? be sent from the storage system 120 to the user device 310 with the status query, without any function of obtaining the result of job 500, but only for the purpose of testing the capacity? of calculation and the availability? of the user device 310, as well as? its calculation precision. The test task can? be the same for all user devices 310, so that their performance tests are comparable.
Il software lato utente 140 ? configurato per ricevere le query di stato dal sistema di memorizzazione 120, per valutare almeno alcuni dei parametri di capacit? di calcolo e disponibilit? del dispositivo utente 310, e per generare e inviare una risposta di stato che include i parametri di capacit? di calcolo e di disponibilit? valutati. The user-side software 140 ? configured to receive status queries from the storage system 120, to evaluate at least some of the capacity parameters? of calculation and availability? of the user device 310, and to generate and send a status response that includes the capacity parameters? of calculation and availability? evaluated.
Nelle realizzazioni preferite, le query di stato includono prime query di stato pi? frequenti, e seconde query di stato meno frequenti. Le prime query di stato sono denominate anche query di tipo heartbeat, che richiedono al dispositivo utente 310 soltanto una risposta disponibile/non disponibile. Le seconde query di stato possono includere richieste relative ad una parte o alla totalit? dei parametri sopra descritti, ossia una quantit? di parametri maggiore di quelli richiesti per la query heartbeat. In the preferred embodiments, the state queries include first multiple state queries. frequent, and less frequent second status queries. The first status queries are also called heartbeat queries, which only ask the user device 310 for an available/unavailable response. Second status queries can include requests for part or all of the status. of the parameters described above, i.e. a quantity? of parameters greater than those required for the heartbeat query.
La valutazione della capacit? di calcolo e della disponibilit? pu? includere l'esecuzione del task di prova, per ottenere un chunk di dati di output di prova. Ci? consente al sistema interno di verificare un tempo di prova di esecuzione e di consegna del task di prova, e un'integrit? o correttezza del chunk di output di prova, ossia la corrispondenza tra il chunk di output di prova e un prestabilito chunk di risultato previsto per il task di prova. The assessment of capacity? calculation and availability? can? include the execution of the test task, to obtain a chunk of test output data. There? allows the internal system to verify a test execution and delivery time of the test task, and an integrity? o correctness of the test output chunk, i.e. the correspondence between the test output chunk and a pre-established result chunk expected for the test task.
Il sistema di memorizzazione 120 dovrebbe teoricamente ricevere le risposte di stato da tutti i dispositivi utente 310 interrogati. Tuttavia, nelle applicazioni reali, le risposte di stato vengono ricevute soltanto da alcuni dei dispositivi utente interrogati 310. Infatti, possono mancare risposte di stato da dispositivi utente spenti 310, da dispositivi utente offline 310, e da dispositivi utente 310 che per qualsivoglia ragione non riescono a ricevere la query di stato, a valutare lo stato del dispositivo, o ad inviare la risposta di stato. The storage system 120 should theoretically receive status responses from all queried user devices 310 . However, in real applications, status responses are received only from some of the queried user devices 310. In fact, status responses may be missing from turned off user devices 310, from offline user devices 310, and from user devices 310 that for whatever reason do not are able to receive the status query, evaluate the device status, or send the status response.
Il sistema servizi interni 130 comprende un servizio di gestione grid 131, che ? configurato per definire uno stato di grid in funzione almeno delle risposte di stato ricevute, memorizzate nel database di gestione grid 121, preferibilmente in funzione delle risposte di stato ricevute, dei tempi di risposta delle risposte di stato ricevute, di eventuali risposte di stato mancanti, e dell'integrit? di qualunque chunk di output di prova. Giova quindi rilevare che alcuni dei parametri di capacit? di calcolo e disponibilit? possono non essere determinati dal software lato utente 140, ma dal sistema servizi interni 130, in base alle risposte di stato ricevute/mancanti, dei tempi di risposta e dell'integrit? dei chunk di output di test. The internal services system 130 includes a grid management service 131, which is configured to define a grid state based at least on the status responses received, stored in the grid management database 121, preferably based on the status responses received, the response times of the status responses received, any missing status responses, and integrity? of any test output chunk. It is therefore worth noting that some of the capacity parameters? of calculation and availability? may not be determined by the user-side software 140, but by the internal services system 130, based on received/missing status responses, response times and integrity. of test output chunks.
Preferibilmente, definire lo stato di grid comprende elaborare almeno alcuni dei parametri di capacit? di calcolo e disponibilit? di ciascuno stato di dispositivo per ottenere per ciascun dispositivo utente 310 uno o pi? punteggi di dispositivo 150. Pertanto, definire lo stato di grid comprende ordinare i dispositivi utente in uno o pi? indici di grid 160 in base a rispettivi punteggi di dispositivo 150. Punteggi di dispositivo distinti 150 possono essere basati su gruppi distinti di parametri di capacit? di calcolo e di disponibilit?. Preferably, defining the grid state includes working out at least some of the capacity parameters? of calculation and availability? of each device state to obtain for each user device 310 one or more? device scores 150. Therefore, defining grid state includes sorting user devices into one or more? grid indices 160 based on respective device scores 150. Distinct device scores 150 may be based on distinct sets of capacity parameters. of calculation and availability.
Un primo punteggio di dispositivo preferito 150 ? un punteggio di capacit? di calcolo. Il punteggio di capacit? pu? essere una funzione crescente dei valori di disponibilit? di RAM, CPU e memoria e una funzione decrescente con l'instabilit? della connessione, la batteria scarica, la temperatura interna elevata e l'attivit? intensa del dispositivo. A first favorite device score 150 ? a capability score? of calculation. The ability score? can? be an increasing function of the availability values? of RAM, CPU and memory and a decreasing function with instability? connection, low battery, high internal temperature and activity? intensity of the device.
Un secondo punteggio di dispositivo preferito 150 ? un punteggio di tasso di guasto. Il punteggio del tasso di guasto pu? essere funzione dei dati storici di guasto dei dispositivi utente 310. Tra i dati storici di guasto possono essere inclusi eventi passati di mancata risposta ad un task, ritardi nella risposta ad un task e nella risposta con risultati danneggiati o errati per un task. A second favorite device score 150? a failure rate score. The failure rate score can be a function of the failure history data of user devices 310. Failure history data may include past events of failure to respond to a task, delays in response to a task, and response with corrupted or incorrect results for a task.
Un terzo punteggio di dispositivo preferito 150 ? un punteggio di bilanciamento, che fornisce punteggi statisticamente pi? alti ai dispositivi utente 310 storicamente meno utilizzati. Il punteggio di bilanciamento pu? essere ottenuto ad esempio moltiplicando un numero generato casualmente con l'intervallo di tempo intercorso dall'ultima assegnazione di un task al dispositivo utente. A third favorite device score 150 ? a balancing score, which provides statistically more scores? high to 310 historically least used user devices. The balance score can? be obtained for example by multiplying a randomly generated number with the time interval since the last assignment of a task to the user device.
Un quarto punteggio preferito 150 ? un punteggio complessivo, che ? una combinazione di due o pi?, preferibilmente della totalit? degli altri punteggi di dispositivo 150, compresi i tre sopra descritti e qualunque altro ulteriore punteggio di dispositivo 150 possa essere previsto da un esperto del settore. Preferibilmente, il punteggio complessivo ? una funzione crescente dei punteggi di capacit? e bilanciamento, e una funzione decrescente con il punteggio di tasso di guasto. A fourth favorite score 150? an overall score, which is? a combination of two or more, preferably all of them? of the other 150 device scores, including the three described above, and any other additional 150 device scores that may be expected by one skilled in the art. Preferably, the overall score ? an increasing function of ability scores? and balancing, and a decreasing function with the failure rate score.
Come i dispositivi utente 310 vengono periodicamente interrogati sul loro stato, i punteggi di dispositivo 150 e gli indici di grid 160 vengono periodicamente aggiornati e possono variare da una query all'altra. Aggiornamenti frequenti sono utili per evitare problemi come uno stato offline di un dispositivo utente 310 mentre ? registrato nello stato di grid come online, e per impedire cos? l'assegnazione di task a dispositivi utente non disponibili 310. As user devices 310 are periodically queried about their status, device scores 150 and grid indices 160 are periodically updated and may vary from query to query. Frequent updates are useful to avoid problems such as an offline state of a user device 310 while ? registered in the grid state as online, and to prevent this? assigning tasks to unavailable user devices 310.
Secondo un aspetto dell'invenzione, il sistema servizi interni ? configurato per selezionare per ciascun job computazionale 400 un rispettivo schema di partizionamento job, preferibilmente diverso per diversi job computazionali 400. Lo schema di partizionamento job include parametri almeno per la suddivisione dei dati di job e la loro distribuzione ai dispositivi utente 310. According to one aspect of the invention, the internal services system is configured to select for each computational job 400 a respective job partitioning scheme, preferably different for different computational jobs 400. The job partitioning scheme includes parameters at least for the subdivision of the job data and their distribution to the user devices 310.
Lo schema di partizionamento job, unitamente ai relativi parametri, vengono calcolati in funzione dello stato di grid e della specifica di job. Pertanto, diversi stati di grid e diverse specifiche di job determineranno generalmente diversi schemi di partizionamento. The job partitioning scheme, together with the related parameters, are calculated according to the grid state and the job specification. Therefore, different grid states and different job specifications will generally result in different partitioning schemes.
Giova rilevare che la specifica di job ? sufficiente a tal fine, anche in assenza di dati di job completi disponibili. Cos?, poich? l'input della specifica di job ? antecedente a quella dei dati di job, lo schema di partizionamento pu? essere selezionato dal sistema servizi interni 130 prima che abbia inizio l'intervallo di tempo di upload o durante l'intervallo di tempo di upload, senza attendere il completamento del flusso di input completo dei dati di job. It is worth noting that the job specification ? sufficient for this purpose, even in the absence of complete job data available. So?, since? the job specification input ? prior to that of the job data, the partitioning scheme can? be selected by the internal services system 130 before the upload time interval begins or during the upload time interval, without waiting for the complete input stream of job data to complete.
Successivamente, il sistema servizi interni 130 ? configurato per suddividere i dati di job, inclusi in ciascun flusso di input, in chunk di input 410 di dati, secondo i parametri di suddivisione dello schema di partizionamento selezionato per il job computazionale 400. Subsequently, the internal services system 130 ? configured to split the job data, included in each input stream, into input chunks 410 of data, according to the splitting parameters of the partitioning scheme selected for the computational job 400.
Preferibilmente, la fase di suddivisione viene eseguita in tempo reale, o on-thefly. In altri termini, essa ha inizio durante l'intervallo di tempo di upload. Inoltre, ciascun chunk di input 410 ? preferibilmente memorizzato nel sistema di memorizzazione 120 solo temporaneamente. I chunk di input 410 vengono memorizzati su un database di accodamento, o queuing, 122 del sistema di memorizzazione 120 (vale a dire, un primo database di queuing), che ? preferibilmente un database Redis. Il database di queuing 123 ? configurato per la memorizzazione a breve termine per supportare operazioni di lettura e scrittura frequenti. Preferably, the subdivision step is performed in real time, or on-the-fly. In other words, it starts during the upload time interval. Furthermore, each input chunk 410 ? preferably stored in the storage system 120 only temporarily. The input chunks 410 are stored on a queuing database 122 of the storage system 120 (i.e., a first queuing database), which is preferably a Redis database. The queuing database 123 ? configured for short-term storage to support frequent read and write operations.
I chunk di input 410 possono essere utilizzati e cancellati prima della fine dell'intervallo di tempo di upload, cio? prima dell'avvenuto upload dei dati di job completi attraverso la piattaforma clienti 111. Pi? in dettaglio, ciascun chunk di input 410 resta memorizzato da un rispettivo istante di salvataggio ad un rispettivo istante di cancellazione. L'istante di salvataggio ha luogo durante l'intervallo di tempo di upload, poich? l'istante di salvataggio dell'ultimo chunk di input 410 segna la fine dell'upload del flusso di input. Per almeno un chunk di input 410, preferibilmente per la maggior parte dei chunk di input 410, a seconda della dimensione di job, anche l'istante di cancellazione ha luogo durante l'intervallo di tempo di upload. Cos?, l'uso di alcuni chunk di input 410, come descritto di seguito, pu? essere completato anche prima che siano stati ricevuti i dati di job completi. Input chunks 410 can be used and deleted before the end of the upload time slot, i.e. before the complete job data has been uploaded through the 111 customer platform. Pi? in detail, each input chunk 410 remains stored from a respective saving instant to a respective deletion instant. The saving moment takes place during the upload time interval, since? the instant of saving the last input chunk 410 marks the end of the upload of the input stream. For at least one input chunk 410, preferably for most input chunks 410, depending on the job size, the deletion time also takes place during the upload time interval. Thus, the use of some 410 input chunks, as described below, can be completed even before complete job data has been received.
Vantaggiosamente, la memoria del database di queuing 122 pu? non essere mai occupata dai dati di job completi di un job computazionale 400, poich? sono parzialmente cancellati prima della ricezione completa. Ci? consente di risparmiare spazio di memorizzazione. Advantageously, the queuing database memory 122 can never be occupied by the complete job data of a computational job 400, since? are partially deleted before full reception. There? saves storage space.
Il sistema servizi interni 130 ? configurato per generare uno o pi? task 420 per ciascun chunk di input 410. Come descritto pi? avanti in maggior dettaglio, gli uno o pi? task 420 per ciascun chunk di input 410 sono un unico task 420, o una pluralit? di task identici 420. Ciascun task 420 comprende un rispettivo chunk di input 410, ed un file eseguibile che include istruzioni per eseguire calcoli sul chunk di input 410. The internal services system 130 ? configured to generate one or more? task 420 for each input chunk 410. As described more? forward in more detail, the one or more? task 420 for each input chunk 410 are they a single task 420, or a plurality? of identical tasks 420. Each task 420 includes a respective input chunk 410, and an executable file that includes instructions for performing calculations on the input chunk 410.
Il sistema servizi interni 130 ? quindi configurato per assegnare ed inviare ciascun task 420 ad uno o pi? rispettivi dispositivi utente 310, per l'esecuzione del task 420 da parte dei dispositivi utente 310. Giova rilevare che alcune sotto-fasi di assegnazione possono implicare l'interazione del sistema servizi interni 130 con i dispositivi utente 310. The internal services system 130 ? therefore configured to assign and send each task 420 to one or more? respective user devices 310, for the execution of the task 420 by the user devices 310. It should be noted that some assignment sub-phases may involve the interaction of the internal services system 130 with the user devices 310.
L'assegnazione dei task 420 comporta di selezionare i dispositivi utente 310 in base ai parametri di distribuzione dello schema di partizionamento del rispettivo job computazionale 400. The assignment of the tasks 420 involves selecting the user devices 310 based on the distribution parameters of the partitioning scheme of the respective computational job 400.
Verranno ora descritte caratteristiche preferite dello schema di partizionamento del job, per determinare i parametri di suddivisione e distribuzione, che sono correlati l'uno all'altro. Le seguenti fasi, salvo diversa indicazione, sono preferibilmente eseguite da un servizio di partizionamento 132 del sistema servizi interni 130. We will now describe preferred characteristics of the job partitioning scheme, to determine the partitioning and distribution parameters, which are related to each other. The following steps, unless otherwise indicated, are preferably performed by a partitioning service 132 of the internal services system 130.
In alcune realizzazioni, selezionare lo schema di suddivisione del job comprende scartare, per il job computazionale 400, un numero di dispositivi utente 310, e almeno pre-selezionare per il job computazionale 400 i dispositivi utente rimanenti 310. Dalla descrizione che segue risulter? evidente che nelle realizzazioni preferite non a tutti i dispositivi pre-selezionati 310 sar? necessariamente assegnato un task 420. In some embodiments, selecting the job splitting scheme includes discarding, for the computational job 400, a number of user devices 310, and at least pre-selecting for the computational job 400 the remaining user devices 310. From the following description it will appear it is evident that in the preferred embodiments not all the pre-selected devices 310 will be? necessarily assigned a task 420.
Pi? in dettaglio, i parametri di distribuzione dello schema di partizionamento includono uno o pi? intervalli target per rispettivi parametri di capacit? di calcolo e disponibilit?, o loro combinazioni. Ad esempio, un intervallo target pu? essere applicato ad uno o pi? punteggi di dispositivo 150 e/o indici di grid 160, che sono combinazioni dei parametri di capacit? di calcolo e disponibilit?, in modo che l'assegnazione sia basata sul punteggio di dispositivo 150 o su una posizione di dispositivo nell'indice di grid 160. More? in detail, the distribution parameters of the partitioning scheme include one or more? target ranges for respective capacity parameters? of calculation and availability, or combinations thereof. For example, a target range can be applied to one or more? device scores 150 and/or grid indices 160, which are combinations of the capacity parameters? of computation and availability, so that the assignment is based on the device score 150 or a device position in the grid index 160.
Cos?, allo scopo di assegnare i task 400 ai dispositivi utente 310, lo schema di partizionamento job prevede che il sistema servizi interni 130 scarti per il job computazionale 400 dispositivi utente incompatibili 310 e almeno pre-selezioni per il job computazionale 400 i rimanenti dispositivi utente compatibili 310, a seconda del fatto che il loro stato di dispositivo presenti parametri di capacit? di calcolo e di disponibilit? (singolarmente, o combinati in punteggi di dispositivo 150 e/o indici di grid 160) che sono incompatibili o compatibili con uno o pi? intervalli target. Qualunque dispositivo utente 310 dal quale sia stato ricevuto un chunk di output di prova corrotto pu? essere automaticamente scartato come incompatibile. Thus, in order to assign the tasks 400 to the user devices 310, the job partitioning scheme provides that the internal services system 130 rejects for the computational job 400 incompatible user devices 310 and at least pre-selects the remaining devices for the computational job 400 compatible user 310, depending on whether their device status has capacity parameters? of calculation and availability? (individually, or combined into device scores 150 and/or grid indices 160) that are incompatible or compatible with one or more? target intervals. Any user device 310 from which a corrupted test output chunk has been received can be automatically discarded as incompatible.
Gli intervalli target vengono determinati in funzione delle specifiche di job, pi? preferibilmente in funzione del livello di priorit? di esecuzione, cio? un livello di priorit? desiderato selezionato dal cliente per il job 400. Durante l'input della specifica di job potranno essere selezionati livelli di priorit? diversi, che potranno essere disponibili a prezzi diversi. Job computazionali 400 con livelli di priorit? pi? elevati determineranno la selezione di un intervallo target relativamente elevato per il punteggio complessivo o per il punteggio di capacit? computazionale, mentre livelli di priorit? pi? bassi determineranno la selezione di un intervallo target relativamente basso. The target intervals are determined according to the job specifications, more? preferably depending on the priority level? of execution, that is? a priority level? desired selected by the customer for job 400. Priority levels can be selected during job specification input. different, which may be available at different prices. 400 computational jobs with priority levels? more? high will result in the selection of a relatively high target range for the overall score or the ability score? computational, while priority levels? more? low will result in the selection of a relatively low target range.
Ulteriori intervalli target per scartare o pre-selezionare dispositivi utente 310 sono determinabili in funzione di limitazioni geografiche nella posizione di esecuzione, che possono essere selezionate in fase di input della specifica di job, ad esempio per limitazioni di sicurezza nazionali che possono risultare applicabili per particolari job computazionali. Further target intervals for discarding or pre-selecting user devices 310 can be determined as a function of geographic limitations in the execution location, which can be selected at the input stage of the job specification, for example for national security limitations that may be applicable for particular computational jobs.
Nella figura 4 ? illustrato un esempio di pre-selezione, in cui i dispositivi utente sono ordinati per punteggio di dispositivo complessivo. Un gruppo di dispositivi utente 310, indicato complessivamente con 311, ? pre-selezionato in base ad un intervallo target sul punteggio complessivo del dispositivo. Quindi, alcuni dispositivi del gruppo 311, indicati con 312, vengono scartati in base ad un altro criterio, come una limitazione geografica. In figure 4? shows a pre-selection example, where user devices are sorted by overall device score. A group of user devices 310, indicated overall with 311, is pre-selected based on a target range on the overall device score. Then, some devices in group 311, denoted 312, are discarded based on another criterion, such as a geographic restriction.
Nelle realizzazioni preferite, selezionare lo schema di suddivisione del job comprende raggruppare i dispositivi utente 310 in cluster 320. Il raggruppare in cluster segue preferibilmente la preselezione di dispositivi utente 310 in base agli intervalli target, come sopra descritto. In altri termini, sono raggruppati in cluster 320 solo i dispositivi utente pre-selezionati 310. Potranno essere tuttavia previste altre realizzazioni in cui tutti i dispositivi utente 310 sono idonei per il raggruppamento in cluster, e non viene eseguita alcuna fase di pre-selezione. In preferred embodiments, selecting the job splitting scheme includes grouping user devices 310 into clusters 320. Clustering preferably follows pre-selection of user devices 310 based on target ranges, as described above. In other words, only the pre-selected user devices 310 are grouped into clusters 320. However, other embodiments may be envisaged in which all user devices 310 are suitable for grouping into clusters, and no pre-selection phase is performed.
Per il raggruppamento in cluster, viene selezionato un numero di cluster 320. Questo numero pu? essere un numero fisso o pu? essere determinato in base alle specifiche di job e/o allo stato di grid. For clustering, a cluster number of 320 is selected. This number can? be a fixed number or can? be determined based on job specifications and/or grid status.
Una volta selezionato il numero di cluster 320, i dispositivi utente 310 vengono assegnati ai cluster 320, preferibilmente in base ai loro punteggi di dispositivo 150 e/o in base agli indici di grid 160. Cos?, l'assegnazione dei dispositivi utente 310 a diversi cluster 320 ? in ultima analisi basata sui rispettivi parametri di capacit? di calcolo e disponibilit?. Once the cluster number 320 is selected, the user devices 310 are assigned to the clusters 320, preferably based on their device scores 150 and/or based on the grid indices 160. Thus, the assignment of the user devices 310 to different clusters 320 ? ultimately based on the respective capacity parameters? of calculation and availability.
In maggior dettaglio, a ciascun cluster 320 viene attribuito un intervallo di punteggi di cluster, e i dispositivi utente 310 vengono assegnati al cluster 320 se i relativi parametri di capacit? di calcolo e disponibilit? sono compatibili con l'intervallo di punteggi di cluster. Analogamente agli intervalli target utilizzati per la pre-selezione, gli intervalli di punteggi di cluster possono essere intervalli di valori applicati ai punteggi di dispositivo 150 o alla posizione del dispositivo negli indici di grid 160, per selezionare quali dispositivi utente 310 saranno inclusi o esclusi dai diversi cluster 320. In more detail, each cluster 320 is assigned a range of cluster scores, and user devices 310 are assigned to cluster 320 if their capacity parameters of calculation and availability? are compatible with the range of cluster scores. Similar to target ranges used for pre-selection, cluster score ranges may be ranges of values applied to device scores 150 or device position in grid indices 160, to select which user devices 310 will be included or excluded from 320 different clusters.
Nella realizzazione preferita, questa assegnazione ? basata sul punteggio di capacit?. In ogni caso, poich? la pre-selezione si basa sul punteggio complessivo, anche l'assegnazione ai cluster 320 si basa almeno indirettamente sul punteggio complessivo, e perci? su qualunque punteggio di dispositivo 150 utilizzato per determinare il punteggio complessivo. In the preferred realization, this assignment ? based on ability score. In any case, since? the pre-selection is based on the overall score, the assignment to clusters 320 is also based at least indirectly on the overall score, and therefore? on any device score 150 used to determine the overall score.
Dopo la fase di raggruppamento in cluster, selezionare lo schema di partizionamento job comprende selezionare dimensioni di chunk di cluster 411 e attribuirle ai diversi cluster 320. Le dimensioni di chunk di cluster 411 sono parametri di suddivisione che vengono utilizzati per suddividere i dati di job nei chunk di input 410. Pi? in dettaglio, ciascuna dimensione di chunk di cluster 411 rappresenta un valore della dimensione dei dati che sono destinati ad essere inclusi nei chunk di input 410 per un cluster 320. After the clustering step, selecting the job partitioning scheme includes selecting cluster chunk sizes 411 and assigning them to the different clusters 320. The cluster chunk sizes 411 are splitting parameters that are used to split the job data into input chunk 410. Pi? in detail, each cluster chunk size 411 represents a size value of the data that is intended to be included in the input chunks 410 for a cluster 320.
Quando si selezionano le dimensioni di chunk di cluster 411, dimensioni di chunk di cluster 411 maggiori vengono preferibilmente attribuite a cluster 320 aventi intervalli di punteggi di cluster compatibili con migliori parametri di capacit? di calcolo e disponibilit?, e dimensioni di chunk di cluster 411 minori vengono attribuite a cluster 320 aventi intervalli di punteggi di cluster compatibili con parametri di capacit? di calcolo e disponibilit? peggiori. When selecting cluster chunk sizes 411, larger cluster chunk sizes 411 are preferably attributed to clusters 320 having ranges of cluster scores compatible with better capacity parameters. of computation and availability, and smaller cluster 411 chunk sizes are attributed to clusters 320 having cluster score ranges compatible with capacity parameters. of calculation and availability? worse.
Quando si selezionano le dimensioni di chunk di cluster 411, viene preferibilmente selezionata in primo luogo una dimensione minima da attribuire al cluster 320 avente l'intervallo di punteggi del cluster pi? basso. Successivamente, le dimensioni di cluster 411 dei cluster rimanenti 320 vengono selezionate maggiori, preferibilmente pari a multipli della dimensione minima, secondo rispettivi fattori di espansione. When selecting cluster chunk sizes 411, a minimum size is preferably first selected to be attributed to cluster 320 having the highest cluster score range? Bass. Subsequently, the cluster sizes 411 of the remaining clusters 320 are selected larger, preferably equal to multiples of the minimum size, according to respective expansion factors.
La dimensione minima pu? essere scelta da un tecnico del ramo in modo da bilanciare l'esigenza di prevedere dimensioni ridotte, per accelerare l'esecuzione di task da parte dei dispositivi utente 310, con la necessit? di prevedere dimensioni che non siano eccessivamente ridotte, cos? da evitare di moltiplicare il numero di chunk di input 410 e impedire l'insorgere di problemi di comunicazione del sistema servizi interni 130 con la grid. The minimum size can? be chosen by a technician in the field in order to balance the need to provide small dimensions, to accelerate the execution of tasks by the user devices 310, with the need? to provide dimensions that are not excessively small, so? to avoid multiplying the number of input chunks 410 and to prevent the onset of communication problems of the internal services system 130 with the grid.
La dimensione minima pu? essere fissa, ma pu? essere anche personalizzata, immessa come input dalle entit? cliente 200 nell'ambito della specifica di job. The minimum size can? be fixed, but can? can also be customized, entered as input by the entities? 200 client under job specification.
Nelle realizzazioni preferite, selezionare lo schema di suddivisione job comprende inoltre assegnare ai cluster 320 rispettivi numeri di chunk di cluster 412, ad esempio in forma di fattori di crowding, o affollamento, rappresentanti il rapporto tra il numero di chunk di cluster 412 e il numero di dispositivi utente 310 di ciascun cluster 320. Come descritto in maggior dettaglio in seguito, il numero di chunk di cluster 412 ? un parametro di distribuzione che viene utilizzato in una o pi? fasi durante il processo di assegnazione dei task 420 ai dispositivi utente 310. Pi? in dettaglio, il numero di chunk di cluster 412 rappresenta un numero di chunk di input 410 che sono destinati ad essere assegnati a ciascun cluster 320. In preferred embodiments, selecting the job subdivision scheme further includes assigning to the clusters 320 respective numbers of cluster chunks 412, for example in the form of crowding factors, representing the ratio between the number of cluster chunks 412 and the number of user devices 310 of each cluster 320. As described in more detail below, the number of cluster chunks 412 ? a distribution parameter that is used in one or more? phases during the process of assigning tasks 420 to user devices 310. More? in detail, the number of cluster chunks 412 represents a number of input chunks 410 that are intended to be assigned to each cluster 320.
I numeri di chunk di cluster 412 vengono selezionati in base alle specifiche di job, e in particolare alla dimensione di job, e preferibilmente anche al livello di priorit?. Numeri superiori di chunk di cluster 412 vengono assegnati a tutti i cluster 320 per job computazionali 400 con dimensione di job maggiore, e numeri inferiori di chunk di cluster 412 vengono assegnati a tutti i cluster 320 per job computazionali 400 con dimensione di job minore. The cluster chunk numbers 412 are selected based on the job specification, and in particular the job size, and preferably also the priority level. Higher numbers of cluster chunks 412 are assigned to all clusters 320 for computational jobs 400 with larger job size, and lower numbers of cluster chunks 412 are assigned to all clusters 320 for computational jobs 400 with smaller job size.
Inoltre, numeri superiori di chunk di cluster 412 vengono assegnati a cluster 320 con migliori parametri di capacit? di calcolo e disponibilit?, per job computazionali 400 con livelli di priorit? pi? elevati, e numeri inferiori di chunk di cluster 412 vengono assegnati a cluster 320 con migliori parametri di capacit? di calcolo e disponibilit?, per job computazionali 400 con livelli di priorit? inferiori. Al contrario, numeri di chunk di cluster inferiori 412 vengono assegnati a cluster 320 aventi parametri di capacit? di calcolo e disponibilit? peggiori, per job computazionali 400 con livelli di priorit? pi? elevati, e numeri superiori di chunk di cluster 412 vengono assegnati a cluster 320 aventi parametri di capacit? di calcolo e disponibilit? peggiori, per job computazionali 400 con livelli di priorit? inferiori. Furthermore, higher numbers of 412 cluster chunks are assigned to 320 clusters with better capacity parameters? of calculation and availability?, for 400 computational jobs with priority levels? more? higher, and lower numbers of 412 cluster chunks are assigned to 320 clusters with better capacity parameters? of calculation and availability?, for 400 computational jobs with priority levels? inferior. Conversely, cluster chunk numbers lower than 412 are assigned to clusters 320 having capacity parameters? of calculation and availability? worse, for computational jobs 400 with priority levels? more? high, and higher numbers of cluster chunks 412 are assigned to clusters 320 having capacity parameters? of calculation and availability? worse, for computational jobs 400 with priority levels? inferior.
Pertanto, i dati di job vengono suddivisi in modo da generare, per ciascun cluster 320, chunk di input 410 in un numero non superiore, preferibilmente pari, al rispettivo numero di chunk di cluster 412, e con una dimensione non maggiore di, preferibilmente uguale, alla rispettiva dimensione di chunk di cluster 411, fino al raggiungimento della dimensione di job. In alcuni casi, il numero e la dimensione effettivi possono essere minori del numero di chunk di cluster selezionato 412 e della dimensione del chunk di cluster 411, essendo la dimensione reale di job diversa dalla somma delle dimensioni di chunk di tutti i chunk previsti. Therefore, the job data is divided so as to generate, for each cluster 320, input chunks 410 in a number not greater than, preferably equal to, the respective number of cluster chunks 412, and with a size not greater than, preferably equal to , to the respective cluster chunk size 411, until the job size is reached. In some cases, the actual number and size may be less than the selected cluster chunk number 412 and the cluster chunk size 411, the actual job size being different from the sum of the chunk sizes of all expected chunks.
Preferibilmente, la suddivisione dei dati di job comprende una fase di presuddivisione, in cui il flusso di input ? suddiviso in chunk intermedi, con una dimensione fissa maggiore delle dimensioni di chunk di cluster 411 selezionate per tutti i chunk di input 410. Quindi, in una fase di suddivisione finale, i chunk intermedi vengono suddivisi nei chunk di input 410 per ottenere le dimensioni di chunk di cluster 411 sopra descritte. Preferably, the splitting of the job data includes a pre-splitting phase, in which the input stream is split into intermediate chunks, with a fixed size greater than the selected cluster chunk size 411 for all input chunks 410. Then, in a final splitting step, the intermediate chunks are split into input chunks 410 to obtain the sizes of cluster chunks 411 described above.
Contestualmente alla generazione progressiva dei chunk di input 410 mediante suddivisione dei dati di job come descritto, dai chunk di input 410 vengono generati i task 420. In alcune realizzazioni, da ciascun chunk di input 410 viene generato un solo task 420. Viceversa, nella realizzazione preferita, selezionare lo schema di partizionamento job comprende selezionare uno o pi? parametri di replica, in particolare un fattore di replica rappresentante un rapporto tra il numero di task 420 e il numero di chunk di input 410, bench? possano essere selezionati in alternativa altri parametri di replica simili o equivalenti. ? possibile selezionare un solo parametro di replica per tutti i cluster 320, oppure possono essere selezionati parametri di replica diversi per rispettivi cluster 320. At the same time as the progressive generation of the input chunks 410 by subdividing the job data as described, the tasks 420 are generated from the input chunks 410. In some embodiments, only one task 420 is generated from each input chunk 410. Conversely, in the embodiment preferred, select the job partitioning scheme includes selecting one or more? replication parameters, in particular a replication factor representing a ratio between the number of tasks 420 and the number of input chunks 410, although? other similar or equivalent replication parameters may alternatively be selected. ? Only one replication parameter can be selected for all 320 clusters, or different replication parameters can be selected for respective 320 clusters.
Il fattore di replica pu? essere selezionato pari a uno, ad indicare che viene creato un solo task 420 per ciascun chunk di input 410, o maggiore di uno, ad indicare che vengono creati pi? task 420 per almeno alcuni chunk di input 410, vale a dire un task originario e una o pi? repliche di task. Ad esempio, per un fattore di replica due, viene creata una replica di attivit? per ciascun chunk di input 410. Per un fattore di replica compreso tra uno e due, una certa frazione dei chunk di input 410 origina rispettive repliche di task, e una frazione complementare dei chunk di input 410 non origina alcuna replica di task. The replication factor can be selected equal to one, to indicate that only one task 420 is created for each input chunk 410, or greater than one, to indicate that more are created? task 420 for at least some input chunks 410, i.e. an original task and one or more? task replications. For example, for a replication factor of two, a task replica is created? for each input chunk 410. For a replication factor between one and two, a certain fraction of the input chunks 410 gives rise to respective task replicas, and a complementary fraction of the input chunks 410 does not give rise to any task replicas.
Con fattori di replica pi? elevati verr? eseguito un maggior numero di task identici 410 da dispositivi utente distinti 310, come descritto di seguito. Si riducono cos? i rischi di mancata, errata o ritardata consegna dei risultati di calcolo. Tuttavia, fattori di replica pi? elevati comportano anche un incremento della potenza computazionale totale utilizzata per eseguire il job computazionale 400, per cui un tecnico del ramo potr? scegliere un fattore di replica bilanciato in base alla specifica di job e allo stato di grid. With more replication factors? elevated will come? performed a greater number of identical tasks 410 from distinct user devices 310, as described below. Do they reduce like this? the risks of failure, incorrect or delayed delivery of calculation results. However, more replication factors? high also involve an increase in the total computational power used to execute the computational job 400, for which a technician in the branch will be able to choose a balanced replication factor based on the job specification and grid state.
Per aumentare il fattore di replica a due, senza esaurire il numero massimo di task simultanei 420 inviati ad un cluster 320, il fattore di crowding di ciascun cluster 320 ? preferibilmente selezionato non superiore a 0,5. To increase the replication factor to two, without exhausting the maximum number of concurrent tasks 420 sent to a cluster 320, the crowding factor of each cluster 320 ? preferably selected not exceeding 0.5.
Giova rilevare che la distinzione tra un task originale e una corrispondente replica di task pu? essere puramente lessicale, non essendo prevista alcuna distinzione gerarchica insita in tali task, che hanno in generale lo stesso contenuto ma identificativi distinti. It is worth noting that the distinction between an original task and a corresponding task replica can be purely lexical, as there is no hierarchical distinction inherent in these tasks, which generally have the same content but distinct identifiers.
Pertanto, il metodo preferito per assegnare i task 420 ai dispositivi utente 320 comprende pre-assegnare gruppi di task di cluster ai cluster 320, in forma di code di cluster 421 memorizzate nel database di queuing 122. Giova rilevare che l'assegnazione dei task 420 alle code di cluster 421 viene eseguita progressivamente, mentre ? in corso l'upload del flusso di input, contestualmente alla formazione dei chunk di input 410. Therefore, the preferred method for assigning tasks 420 to user devices 320 includes pre-assigning groups of cluster tasks to clusters 320, in the form of cluster queues 421 stored in the queuing database 122. It should be noted that the assignment of tasks 420 to cluster queues 421 is performed progressively, while ? the input flow is being uploaded at the same time as the 410 input chunks are being formed.
Ciascun gruppo di task di cluster comprende tutti i task 420 (originali e repliche) che originano dai chunk di input 410 aventi la dimensione di chunk di cluster 411 attribuita al cluster 320. Each cluster task group includes all tasks 420 (original and replicas) originating from input chunks 410 having the cluster chunk size 411 attributed to cluster 320.
Preferibilmente, la pre-assegnazione dei gruppi di task di cluster ai cluster 310 ? l'ultima funzione eseguita dal servizio di partizionamento 132. Preferably, pre-assignment of cluster task groups to clusters 310 ? the last function performed by the partitioning service 132.
Una successiva fase di assegnazione dei task 420 ai dispositivi utente 310 consiste nell'alimentare i task 420 di ciascuna coda di cluster 421 in code di dispositivo individuali 422 di tutti i dispositivi del cluster. Ci? viene preferibilmente eseguito da un servizio di alimentazione 133 del sistema servizi interni 130. Le code di dispositivo individuali 422 possono essere memorizzate in un database di queuing, che pu? essere identico al database di queuing 122 che memorizza le code di cluster 421, cio? il primo database di queuing 122, oppure un secondo distinto database di queuing 123, come illustrato nella figura 1. A subsequent step of assigning tasks 420 to user devices 310 consists of feeding tasks 420 of each cluster queue 421 into individual device queues 422 of all devices in the cluster. There? is preferably performed by a power service 133 of the internal services system 130. Individual device queues 422 can be stored in a queuing database, which can be identical to the queuing database 122 which stores the cluster queues 421, that is? the first queuing database 122, or a second separate queuing database 123, as illustrated in Figure 1.
Nella realizzazione preferita, alimentare i task 420 nelle code di dispositivo 422 comprende il rimescolamento, o shuffling, dei task 420 di ciascuna coda di cluster 421 con ordini diversi per i diversi dispositivi utente 310 del cluster 320. I diversi ordini delle code di dispositivo individuali 422 possono essere selezionati come ordini casuali o con specifici schemi di shuffling che renderanno gli ordini diversi l'uno dall'altro. Cos?, i task 420 vengono alimentati nelle code di dispositivo individuali 422 nei rispettivi diversi ordini. In the preferred embodiment, feeding the tasks 420 into the device queues 422 includes shuffling, or shuffling, the tasks 420 of each cluster queue 421 with different orders for the different user devices 310 of the cluster 320. The different orders of the individual device queues 422 can be selected as random orders or with specific shuffling patterns which will make the orders different from each other. Thus, tasks 420 are fed into individual device queues 422 in their respective different orders.
Le code di dispositivo 422 vengono inviate dal sistema servizi interni 130 ai rispettivi dispositivi utente 310, che includono tutti i task 420 della coda 422, oppure semplicemente un elenco di puntatori o indicatori riferiti ai task 420. Il software lato utente 140 comprende un servizio di download di task 142 per scaricare i task 420 e/o la rispettiva coda di dispositivo 422. The device queues 422 are sent from the internal services system 130 to the respective user devices 310, which include all the tasks 420 of the queue 422, or simply a list of pointers or indicators referring to the tasks 420. The user-side software 140 includes a task download 142 to download tasks 420 and/or the respective device queue 422.
Le code di dispositivo individuali 422 includono etichette di task, che indicano stati di assegnazione di ciascun task. Gli stati di assegnazione includono uno stato non ancora assegnato ("libero" nella figura 7) e uno stato gi? assegnato ("occupato" nella figura 7). In alcune realizzazioni, pu? essere previsto anche uno stato di assegnazione definente uno stato gi? assegnato e completato. Individual device queues 422 include task labels, which indicate assignment states of each task. Assignment states include a state that is not yet assigned ("free" in Figure 7) and a state that has already been assigned. assigned (“busy” in Figure 7). In some embodiments, it can? also be expected an assignment state defining a state already? assigned and completed.
Inizialmente, le etichette indicano lo stato non ancora assegnato per tutti i task. Quindi, assegnare i task 420 comprende selezionare, da parte di un dispositivo utente 310 disponibile del cluster 320 che esegue il software lato utente 140, un task specifico 420, dalla relativa coda di dispositivo individuale 422, che non sia stato finora assegnato ad un altro dispositivo utente 310, e quindi viene etichettato come non ancora assegnato. Preferibilmente, il task selezionato 420 ? il primo task 420 nella relativa coda di dispositivo 422 che non sia stato ancora selezionato da un altro dispositivo utente 310. Questo sar? diverso per molti dispositivi utente 310 grazie alla fase di shuffling. Initially, the labels indicate the unassigned status for all tasks. Thus, assigning tasks 420 includes selecting, by an available user device 310 of the cluster 320 running the user-side software 140, a specific task 420, from the relevant individual device queue 422, which has not so far been assigned to another user device 310, and is therefore labeled as not yet assigned. Preferably, the selected task 420 ? the first task 420 in the relevant device queue 422 that has not yet been selected by another user device 310. This will be? different for many user devices 310 thanks to the shuffling phase.
Quando un dispositivo utente 310 seleziona un task 420, il software lato utente 140 ? configurato per inviare un segnale di assegnazione al sistema servizi interni 130. Quindi, il sistema servizi interni 130 ? configurato per confermare l'assegnazione del task specifico selezionato 420 al dispositivo utente 310. In particolare, il sistema servizi interni 130 aggiorna l'etichetta su uno stato di assegnazione indicante uno stato gi? assegnato per quel task specifico 420, in tutte le code di dispositivo individuali 422 del cluster 320. Di conseguenza, il task 420 non ? pi? ritenuto disponibile, e non sar? selezionato da altri dispositivi utente 310 del cluster 320. When a user device 310 selects a task 420, the user-side software 140 ? configured to send an assignment signal to the internal services system 130. Therefore, the internal services system 130 is configured to confirm the assignment of the selected specific task 420 to the user device 310. In particular, the internal services system 130 updates the label on an assignment state indicating a state already assigned for that specific task 420, in all individual device queues 422 of cluster 320. As a result, task 420 is not assigned. more? deemed available, and it will not be? selected by other user devices 310 of the cluster 320.
Il software lato utente 140 ? configurato per ricevere qualunque task 420 assegnato al dispositivo utente 310, e per eseguire tali task 420, eseguendo il file eseguibile del task 420 sul chunk di input 410 del task 420. L'esecuzione del task 420 genera nel dispositivo utente 310 un chunk di output 430 dei dati. Il software lato utente 140 ? configurato per reinviare il chunk di output 430 al sistema di memorizzazione 120. Il software lato utente 140 comprende un servizio di upload di chunk di output 143 per caricare i chunk di output 430 nel sistema di memorizzazione 120. The user-side software 140 ? configured to receive any task 420 assigned to the user device 310, and to execute such tasks 420, executing the executable file of the task 420 on the input chunk 410 of the task 420. The execution of the task 420 generates in the user device 310 an output chunk 430 of the data. The user-side software 140 ? configured to send the output chunk 430 back to the storage system 120. The user-side software 140 includes an output chunk upload service 143 to upload the output chunks 430 to the storage system 120.
Di conseguenza, il sistema di memorizzazione 120 riceve diversi chunk di output 430 da diversi dispositivi utente 310 per ciascun job computazionale 400. La funzione di memorizzazione dei chunk di output 430 viene preferibilmente eseguita su un database di bucket, o secchio, 124 del sistema di memorizzazione 120, che ? preferibilmente un cloud database. In una realizzazione, il database di bucket 124 ? configurato per creare temporaneamente un bucket virtuale di memorizzazione di ciascun chunk di output 430. Cos?, il database di bucket 124 pu? avere il funzionamento come una cartella web con limitazioni di accesso. Accordingly, the storage system 120 receives different output chunks 430 from different user devices 310 for each computational job 400. The output chunk storage function 430 is preferably performed on a database of buckets 124 of the storage system. storage 120, what? preferably a cloud database. In one embodiment, the bucket database 124 ? configured to temporarily create a virtual storage bucket of each output chunk 430. Thus, the bucket database 124 can? function as a web folder with access restrictions.
Giova rilevare che la generazione di alcuni task 420, la consegna di questi task 420 ai dispositivi utente 310, e la ricezione di alcuni chunk di output 430 possono aver luogo durante l'intervallo di tempo di upload, e possono proseguire progressivamente in modo simile a quanto descritto per suddividere il flusso di input. Ci? ? schematicamente illustrato nella figura 3, dove il segno di spunta rappresenta la ricezione avvenuta di chunk di output 430 da alcuni dispositivi utente 310, e il segno della clessidra rappresenta la ricezione in attesa di chunk di output 430 da altri dispositivi utente 310. It should be noted that the generation of some tasks 420, the delivery of these tasks 420 to the user devices 310, and the reception of some output chunks 430 may take place during the upload time interval, and may continue progressively in a similar manner to as described to split the input flow. There? ? schematically illustrated in Figure 3, where the check mark represents the successful reception of output chunks 430 from some user devices 310, and the hourglass sign represents the pending reception of output chunks 430 from other user devices 310.
In assenza di repliche (o fattore di replica pari a 1), i chunk di output 430 saranno generalmente differenti l'uno dall'altro, poich? i task 420 originati da un job computazionale 400 sono generalmente differenti. Viceversa, con fattori di replica pi? elevati, ? previsto che i chunk di output 430 originati da ciascuna replica di task siano uguali ai chunk di output 430 originati dai corrispondenti task originali, a meno che l'esecuzione di un task 420 non comporti un processo stocastico. In the absence of replicas (or a replication factor of 1), the output chunks 430 will generally be different from each other, since? the tasks 420 originating from a computational job 400 are generally different. Conversely, with more replication factors? high, ? expected that the output chunks 430 originating from each task replica are equal to the output chunks 430 originating from the corresponding original tasks, unless the execution of a task 420 involves a stochastic process.
Ci? pu? tuttavia non essere applicabile al caso di chunk di output corrotti 430, in cui si sia verificata corruzione di dati in fase di trasmissione al dispositivo utente 310 del task 420, in fase di esecuzione del task 420, o in fase di trasmissione al sistema di memorizzazione 120 del chunk di output 430. There? can? however, not be applicable to the case of corrupt output chunks 430, in which data corruption has occurred during transmission to the user device 310 of task 420, during execution of task 420, or during transmission to the storage system 120 of output chunk 430.
In caso di task deterministici 420 per i quali sia stata generata almeno una replica di task, e quindi per i quali siano stati ricevuti pi? chunk di output 430, il sistema servizi interni 130 ? preferibilmente configurato per verificare l'integrit? del chunk di output 430 confrontando i chunk di output 430 originati dallo stesso chunk di input 410. In the case of deterministic tasks 420 for which at least one task replica has been generated, and therefore for which more? output chunk 430, the internal services system 130 ? preferably configured to verify integrity? of the output chunk 430 by comparing the output chunks 430 originating from the same input chunk 410.
Questa funzione viene preferibilmente eseguita da un servizio di convalida 134 del sistema servizi interni 130. Nel caso in cui si riscontri una mancata corrispondenza, il sistema servizi interni 130 ? preferibilmente configurato per generare un'ulteriore replica di task per il chunk di input 410 dal quale sono stati ricevuti risultati corrotti. Questa ulteriore replica pu? essere inviata a, ed eseguita da, un ulteriore dispositivo utente 310, al fine di produrre un ulteriore chunk di output 430 per lo stesso chunk di input 410, per effettuare un ulteriore confronto sui chunk di output 430, ed identificare i chunk di output intatti e corrotti 430. This function is preferably performed by a validation service 134 of the internal services system 130. In case a mismatch is found, the internal services system 130 ? preferably configured to generate an additional task replica for the input chunk 410 from which corrupt results were received. This further reply can? be sent to, and executed by, a further user device 310, in order to produce a further output chunk 430 for the same input chunk 410, to perform a further comparison on the output chunks 430, and identify the intact output chunks and corrupt 430.
In modo simile, l?ulteriore replica pu? essere eseguita direttamente dal servizio di convalida 134. Similarly, further replication can be performed directly by the 134 validation service.
Anche in assenza di repliche di task, il sistema servizi interni 130, in particolare il servizio di convalida 134, ? preferibilmente configurato per verificare l?integrit? dei chunk di output 430 confrontando parametri di chunk, come dimensioni e formati di chunk di output, con corrispondenti parametri attesi. Nel caso in cui da questa verifica emerga una corruzione dei chunk, si possono adottare azioni correttive simili a quelle sopra descritte per il caso di mancata corrispondenza di chunk di output. Even in the absence of task replicas, the internal service system 130, in particular the validation service 134, is preferably configured to verify integrity? of the output chunks 430 by comparing chunk parameters, such as output chunk sizes and formats, with corresponding expected parameters. In the event that chunk corruption emerges from this check, corrective actions similar to those described above can be adopted for the case of output chunk mismatch.
Inoltre, il sistema servizi interni 130, in particolare il servizio di convalida 134, ? configurato per accertare l?arrivo puntuale dei chunk di output 430, cio? l?arrivo prima di un tempo massimo prestabilito. Furthermore, the internal service system 130, in particular the validation service 134, is configured to ensure the timely arrival of the 430 output chunks, i.e. arrival before a pre-established maximum time.
Preferibilmente, per le attivit? replicate 420, accertare l?arrivo puntuale dei chunk di output 430 comprende accertare che sia arrivato almeno un chunk di output 430 per ciascun chunk di input 410. In altri termini, anche nel caso in cui sia stato ricevuto puntualmente solo un chunk di output 430 bench? siano stati originati pi? task 420 dal chunk di input 410, la ricezione di eventuali altri chunk di output 430 per un qualunque task identico 420 non viene attesa oltre il tempo massimo prestabilito, e viene confermato il complessivo arrivo puntuale per quel chunk di input 410. Preferably, for activities? replicate 420, ensuring the timely arrival of the output chunks 430 includes ensuring that at least one output chunk 430 has arrived for each input chunk 410. In other words, even if only one output chunk 430 has been received on time although? were originated more? task 420 from the input chunk 410, the reception of any other output chunks 430 for any identical task 420 is not waited beyond the pre-established maximum time, and the overall punctual arrival for that input chunk 410 is confirmed.
Ci? riduce fortemente i ritardi di consegna del risultato di job completo 500 tanto pi? quanto elevato ? il fattore di replica, poich? ogni mancata o ritardata consegna di un chunk di output 430 pu? essere compensata dall?arrivo puntuale di un altro chunk di output 430 originato dallo stesso chunk di input 410. ? quindi basso il rischio di contemporanee mancate o ritardate consegne di chunk per pi? dispositivi utente 310. Tuttavia, la mancata replica dei chunk di output 430 pu? ridurre la possibilit? di verifiche di integrit?. There? strongly reduces delivery delays of the complete job result 500 all the more? how high? the replication factor, since? each failure or delayed delivery of an output chunk 430 can? be compensated by the timely arrival of another output chunk 430 originating from the same input chunk 410. ? therefore the risk of simultaneous missed or delayed deliveries of chunks for more is low? user devices 310. However, failure to replicate output chunks 430 can reduce the possibility? of integrity checks.
L?arrivo puntuale pu? non verificarsi in caso di arrivo ritardato, ma anche in caso di errore in fase di trasmissione al dispositivo utente 310 del task 420, in fase di esecuzione del task 420, o in fase di trasmissione al sistema di memorizzazione 120 del chunk di output 430. Punctual arrival can not occur in the event of a delayed arrival, but also in the event of an error during the transmission to the user device 310 of the task 420, during the execution of the task 420, or during the transmission to the storage system 120 of the output chunk 430.
Preferibilmente, per almeno alcuni tipi di guasto in fase di esecuzione di un task 420, il software lato utente 140 ? configurato per inviare un segnale di errore al sistema servizi interni 130. Viceversa, per altri tipi di guasto, ad esempio nel caso in cui il dispositivo utente 310 sia spento, il sistema servizi interni 130 non ricever? semplicemente alcuna risposta dal dispositivo utente 310 che ha ricevuto il task 420. Preferably, for at least some types of failure during the execution of a task 420, the user-side software 140 ? configured to send an error signal to the internal services system 130. Conversely, for other types of failure, for example in the case in which the user device 310 is turned off, the internal services system 130 will not receive? simply no response from the user device 310 that received the task 420.
Pi? in dettaglio, la verifica dell'arrivo puntuale di un chunk di output 430 da uno specifico dispositivo utente 310 pu? comportare pi? fasi e pi? casi. In un primo caso, un mancato arrivo puntuale viene determinato quando si riceve un segnale di errore dal dispositivo utente 310. In un altro caso, un mancato arrivo puntuale viene determinato quando non viene ricevuta alcuna risposta di stato dal dispositivo utente 310 in risposta ad una query heartbeat di stato che segue la consegna del chunk di input 410 al dispositivo utente 310. In questo caso, preferibilmente il mancato arrivo puntuale viene confermato solo se la replica dal dispositivo utente 310 non viene ricevuta anche dopo un certo tempo da una query di conferma del sistema interno al dispositivo utente 310. In un altro caso ancora, il mancato arrivo puntuale viene determinato quando non viene ricevuto alcun chunk di output 430 fino alla scadenza del tempo massimo prestabilito. More? in detail, the verification of the timely arrival of an output chunk 430 from a specific user device 310 can? behave more? phases and more? cases. In a first case, a failure to arrive on time is determined when an error signal is received from the user device 310. In another case, a failure to arrive on time is determined when no status response is received from the user device 310 in response to a status heartbeat query following the delivery of the input chunk 410 to the user device 310. In this case, preferably the failure to arrive on time is confirmed only if the reply from the user device 310 is not received even after a certain time by a confirmation query of the system internal to the user device 310. In yet another case, failure to arrive on time is determined when no output chunk 430 is received until the pre-established maximum time has expired.
Il sistema servizi interni 130, in particolare il servizio di convalida 134, ? configurato per compiere azioni mitigative nel caso in cui non sia stato ricevuto alcun chunk di output 430 per uno specifico chunk di input 410 entro il tempo massimo prestabilito (includendo tutti i casi sopra descritti). Le azioni mitigative sono simili a quelle descritte per il caso dei risultati corrotti. In particolare, queste comprendono riassegnare il task 420 relativo allo specifico chunk di input 410, o una sua copia, ad un altro dispositivo utente 310 o per l'esecuzione da parte dello stesso servizio di convalida 134. Preferibilmente, il chunk di input ritardato o errato 410 viene riassegnato sul servizio di convalida 134, in modo che non si incorra in alcun ulteriore rischio e non vengano compromesse le prestazioni complessive del job computazionale 400, ma la decisione ? sempre soggetta dalla capacit? corrente del sistema di memorizzazione 130. The internal service system 130, in particular the validation service 134, is configured to take mitigating actions in the event that no output chunk 430 has been received for a specific input chunk 410 within the pre-established maximum time (including all cases described above). The mitigation actions are similar to those described for the case of corrupt results. In particular, these include reassigning the task 420 relating to the specific input chunk 410, or a copy thereof, to another user device 310 or for execution by the same validation service 134. Preferably, the input chunk delayed or incorrect 410 is reassigned to the validation service 134, so that no further risk is incurred and the overall performance of the computational job 400 is not compromised, but the decision is ? always subject to capacity? current of the storage system 130.
Alla ricezione di uno o pi? chunk di output 430 per ogni singolo chunk di input 410 originato da un job computazionale 400, il sistema servizi interni 130 ? configurato per assemblare questi chunk di output 430 ottenendo in tal modo il risultato di job 500. Parte di un risultato di job assemblato 500 ? illustrato nella figura 3. Questa funzione viene preferibilmente eseguita da un servizio di assemblaggio 135 del sistema servizi interni 130. Upon receiving one or more? output chunk 430 for each single input chunk 410 originating from a computational job 400, the internal services system 130 ? configured to assemble these output chunks 430 thereby obtaining job result 500. Part of an assembled job result 500 ? illustrated in Figure 3. This function is preferably performed by an assembly service 135 of the internal services system 130.
Infine, il software lato cliente 110 ? configurato in modo da trasmettere in output alle entit? cliente 200 i risultati di job assemblati 500, preferibilmente consentendo il download dei risultati di job 500 attraverso la piattaforma clienti 111. Pi? in dettaglio, il software lato cliente 110 comprende un servizio di download risultati 113 per scaricare il risultato di job 500 e/o uno o pi? chunk di output 430. Finally, the client-side software 110 ? configured to transmit output to the entities? customer 200 the results of assembled jobs 500, preferably allowing downloading of job results 500 through the customer platform 111. Pi? in detail, the client-side software 110 includes a results download service 113 to download the result of jobs 500 and/or one or more? output chunks 430.
Bench? si siano finora descritti i componenti e i servizi principali che elaborano il job computazionale 400, saranno preferibilmente previsti ulteriori componenti e servizi, come descritto di seguito. Although? the main components and services that process the computational job 400 have been described so far, further components and services will preferably be provided, as described below.
Preferibilmente, il sistema servizi interni 130 comprende un servizio di ricompensa, o rewarding, 136 configurato per applicare il tariffario prestabilito per generare un addebito alle entit? cliente 200 per l'elaborazione del job computazionale 400, e per generare un accredito alle entit? di utente 300 per l'esecuzione dei task assegnati 420. Preferably, the internal services system 130 includes a reward service 136 configured to apply the pre-established tariff to generate a charge to the entities? customer 200 for processing computational job 400, and to generate a credit to the entities? of user 300 for the execution of the assigned tasks 420.
Pi? in dettaglio, il servizio di rewarding 136 ? configurato per registrare i valori di addebito e accredito in un database di consistenza 125 del sistema di memorizzazione 120, che ? preferibilmente un database in linguaggio di interrogazione strutturato (Structured Query Language, SQL) configurato per supportare transazioni atomiche informatiche. More? in detail, the rewarding service 136 ? configured to record the debit and credit values in a consistency database 125 of the storage system 120, which is preferably a Structured Query Language (SQL) database configured to support atomic computer transactions.
Inoltre, il software lato cliente 110 comprende un servizio di addebito 114 configurato per scaricare i valori di addebito dal sistema di memorizzazione 120, e fornirli in uscita attraverso la piattaforma clienti 111. Furthermore, the customer-side software 110 includes a charging service 114 configured to download the charging values from the storage system 120, and output them through the customer platform 111.
Inoltre, il software lato utente 140 comprende un servizio di accredito 144 configurato per scaricare e fornire in uscita sul dispositivo utente 320 i valori di accredito tratti dal sistema di memorizzazione 120. Furthermore, the user-side software 140 includes a crediting service 144 configured to download and output to the user device 320 the crediting values taken from the storage system 120.
Preferibilmente, il sistema servizi interni 130 comprende un servizio di transazione 137, configurato per eseguire transazioni atomiche sul database di consistenza 125. Le transazioni atomiche eseguite includono modifiche di variabili che devono essere effettuate contemporaneamente per tutti i servizi del sistema servizi interni 120. In particolare, esempi preferiti di tali modifiche di variabili comprendono modifiche nello stato di grid, modifiche nello stato di assegnazione dei task 420, modifiche nello stato dei job computazionali 400, e modifiche nello stato delle piattaforme clienti 111. Preferably, the internal services system 130 includes a transaction service 137, configured to perform atomic transactions on the consistency database 125. The performed atomic transactions include variable modifications that must be performed simultaneously for all the services of the internal services system 120. In particular , preferred examples of such variable changes include changes in the state of grids, changes in the state of task assignment 420, changes in the state of computational jobs 400, and changes in the state of client platforms 111.
Claims (11)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IT102021000029084A IT202100029084A1 (en) | 2021-11-17 | 2021-11-17 | Method and system for high-throughput distributed computing of computational jobs |
EP22207884.2A EP4184325A1 (en) | 2021-11-17 | 2022-11-16 | Method and system for high-throughput distributed computing of computational jobs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IT102021000029084A IT202100029084A1 (en) | 2021-11-17 | 2021-11-17 | Method and system for high-throughput distributed computing of computational jobs |
Publications (1)
Publication Number | Publication Date |
---|---|
IT202100029084A1 true IT202100029084A1 (en) | 2023-05-17 |
Family
ID=79601625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
IT102021000029084A IT202100029084A1 (en) | 2021-11-17 | 2021-11-17 | Method and system for high-throughput distributed computing of computational jobs |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP4184325A1 (en) |
IT (1) | IT202100029084A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2025183549A1 (en) * | 2024-02-28 | 2025-09-04 | Chan Kong Hing | A computer-implemented method for generating a response to a user input |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091747A1 (en) * | 1998-05-28 | 2002-07-11 | James Mathew Rehg | System for integrating task and data parallelism in dynamic applications |
US20140136779A1 (en) * | 2012-11-12 | 2014-05-15 | Datawise Systems | Method and Apparatus for Achieving Optimal Resource Allocation Dynamically in a Distributed Computing Environment |
EP2882140A1 (en) * | 2013-12-06 | 2015-06-10 | Tata Consultancy Services Ltd. | Data partitioning in internet-of-things (IOT) network |
US10691464B1 (en) * | 2019-01-18 | 2020-06-23 | quadric.io | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit |
-
2021
- 2021-11-17 IT IT102021000029084A patent/IT202100029084A1/en unknown
-
2022
- 2022-11-16 EP EP22207884.2A patent/EP4184325A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091747A1 (en) * | 1998-05-28 | 2002-07-11 | James Mathew Rehg | System for integrating task and data parallelism in dynamic applications |
US20140136779A1 (en) * | 2012-11-12 | 2014-05-15 | Datawise Systems | Method and Apparatus for Achieving Optimal Resource Allocation Dynamically in a Distributed Computing Environment |
EP2882140A1 (en) * | 2013-12-06 | 2015-06-10 | Tata Consultancy Services Ltd. | Data partitioning in internet-of-things (IOT) network |
US10691464B1 (en) * | 2019-01-18 | 2020-06-23 | quadric.io | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit |
Also Published As
Publication number | Publication date |
---|---|
EP4184325A1 (en) | 2023-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Peng et al. | Optimus: an efficient dynamic resource scheduler for deep learning clusters | |
CN111324445B (en) | Task scheduling simulation system | |
Hu et al. | Flutter: Scheduling tasks closer to data across geo-distributed datacenters | |
CN108090225B (en) | Database instance running method, device and system and computer readable storage medium | |
Zeng et al. | An integrated task computation and data management scheduling strategy for workflow applications in cloud environments | |
Li et al. | Pricing and repurchasing for big data processing in multi-clouds | |
CN103946802A (en) | Method, computer program and apparatus for allocating information resources of a cluster to perform work submitted to the cluster | |
CN112567359B (en) | A system for optimizing storage replication in distributed data analysis systems using historical data access patterns | |
CN112463390A (en) | Distributed task scheduling method and device, terminal equipment and storage medium | |
Zhang et al. | Online scheduling of heterogeneous distributed machine learning jobs | |
CN109614227A (en) | Task resource allocation method, apparatus, electronic device, and computer-readable medium | |
CN106101213A (en) | Information-distribution type storage method | |
Li et al. | MapReduce delay scheduling with deadline constraint | |
CN113094406A (en) | Power marketing data management method and system | |
WO2015019538A1 (en) | Virtual resource control system and virtual resource control method | |
Bouhouch et al. | Dynamic data replication and placement strategy in geographically distributed data centers | |
Monniot et al. | Supporting dynamic allocation of heterogeneous storage resources on HPC systems | |
IT202100029084A1 (en) | Method and system for high-throughput distributed computing of computational jobs | |
US12061607B2 (en) | Method and system for high-throughput distributed computing of computational jobs | |
CN103713852A (en) | Method for processing information, service platform and electronic devices | |
CN103778223B (en) | Pervasive word-reciting system based on cloud platform and construction method thereof | |
Ruiz et al. | Formal performance evaluation of the Map/Reduce framework within cloud computing | |
CN109255515A (en) | A kind of task exploitation cloud platform based on page metering and unit time distribution | |
CN105827744A (en) | Data processing method of cloud storage platform | |
CN106254452A (en) | The big data access method of medical treatment under cloud platform |