DE102016222375A1 - Vorrichtung und Verfahren zum Bearbeiten von Aufträgen - Google Patents

Vorrichtung und Verfahren zum Bearbeiten von Aufträgen Download PDF

Info

Publication number
DE102016222375A1
DE102016222375A1 DE102016222375.5A DE102016222375A DE102016222375A1 DE 102016222375 A1 DE102016222375 A1 DE 102016222375A1 DE 102016222375 A DE102016222375 A DE 102016222375A DE 102016222375 A1 DE102016222375 A1 DE 102016222375A1
Authority
DE
Germany
Prior art keywords
task
computer system
value
processing
processed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102016222375.5A
Other languages
English (en)
Inventor
Sebastian Stuermer
Elmar Ott
Simon Kramer
Michael Pressler
Juergen Bregenzer
Jascha Friedrich
Bjoern Saballus
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102016222375.5A priority Critical patent/DE102016222375A1/de
Priority to CN201780070284.3A priority patent/CN109964206B/zh
Priority to US16/349,863 priority patent/US11275621B2/en
Priority to PCT/EP2017/078580 priority patent/WO2018091329A1/de
Publication of DE102016222375A1 publication Critical patent/DE102016222375A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Abstract

Vorrichtung und Verfahren zum Betreiben eines Rechnersystems (100), wobei ein vom Rechnersystem (100) abzuarbeitender Auftrag zur Bearbeitung einem Task (120) aus einer Mehrzahl von Tasks (120) zuordenbar ist, wobei der abzuarbeitende Auftrag in Abhängigkeit von einem Ergebnis eines Vergleichs zugeordnet wird, wobei im Vergleich ein erster Wert mit einem zweiten Wert verglichen wird, wobei der erste Wert einen ersten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags in einem ersten Task (120) der Mehrzahl von Tasks (120) zu erwarten ist, wobei der zweite Werte einen zweiten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags in einem zweiten Task (120) der Mehrzahl von Tasks (120) zu erwarten ist.

Description

  • Stand der Technik
  • In eingebetteten Rechnersystemen mit mehreren Rechenkernen und harten Echtzeitanforderungen werden Aufträgen zur Bearbeitung durch das eingebettete Rechnersystem Tasks nach statischen Vorgaben zugewiesen. Ein auszuführender Task wird einem der Rechenkerne mit ausreichender Rechenleistung zugewiesen. Dem auszuführenden Task wird zudem auf dem Rechenkern ausreichend Rechenzeit zur Verfügung gestellt. Anstehende Aufträge werden entweder einzeln oder nacheinander in jeweiligen Tasks abgearbeitet.
  • Beispielsweise können bekannte wiederkehrende interne Ereignisse derartige Aufträge auslösen. Zur Bearbeitung dieser Aufträge werden Tasks beispielsweise periodisch gestartet. Bekannte dringende oder wichtige interne Ereignisse können Aufträge auch über Interrupts oder sporadisch auslösen. Diese Aufträge können in extra für die Bearbeitung derartiger Aufträge gestarteten Tasks abgearbeitet werden. Intern bedeutet in diesem Fall dass die Ereignisse Abläufe im eingebetteten Rechnersystem betreffen, und das Auftreten der Ereignisse planbar oder zumindest statistisch vorhersehbar ist. Die Zuweisung der Rechenzeit und der Rechenkerne zu den Tasks ist damit ebenfalls planbar oder zumindest statistisch vorhersehbar.
  • Um in eingebetteten Rechnersystemen die Echtzeitanforderungen erfüllen, werden Aufträge, die asynchron durch externe Ereignisse angestoßenen werden, ebenfalls durch statische Vorgaben vorhergeplant. Echtzeitanforderungen sind beispielsweise Anforderungen an die Zeitdauer, bis ein Auftrag abgearbeitet ist. Wenn das eingebettete Rechnersystem eine Maschine ansteuert, richtet sich diese Zeitdauer beispielsweise nach der Dynamik die zur Maschinenansteuerung erforderlich ist.
  • Um in eingebetteten Rechnersystemen die Echtzeitanforderungen zu erfüllen wird eine dynamische Zuweisung asynchron auftretender Aufträge vermieden, da ohne statische Vorhersagbarkeit die Echtzeitanforderungen möglicherweise nicht mehr erfüllbar sind. Kritisch sind hinsichtlich der Ausführung von Tasks eine gegenseitige Störung in der Abarbeitung echtzeitkritischer Tasks und/oder ein zusätzlicher Rechenzeitbedarf, der durch gegebenenfalls zum Starten eines zusätzlichen echtzeitkritischen Tasks erforderlichen Overhead verursacht wird.
  • In High-Performance Systemen mit mehreren Rechenkernen, beispielsweise für Server, werden dynamisch Tasks gestartet und auf die Rechenkerne verteilt um Aufträge abzuarbeiten. Allerdings wird dabei weder der zusätzliche Rechenzeitbedarf für das Starten eines zusätzlichen Tasks noch die für die Abarbeitung eines Auftrags benötigte Zeit Rücksicht genommen.
  • Dieses führt zwar zu durchschnittlich guten Ausführungszeiten, erfüllt aber nicht die Anforderungen eines Echtzeitsystems.
  • Offenbarung der Erfindung
  • Daher ist eine Verbesserung in der Bearbeitung von Aufträgen wünschenswert.
  • Diese Verbesserung wird durch ein Verfahren nach Anspruch 1 und ein Rechnersystem nach Anspruch 10 erreicht.
  • Bezüglich des Verfahrens zum Betreiben eines Rechnersystems in dem ein vom Rechnersystem abzuarbeitender Auftrag zur Bearbeitung einem Task aus einer Mehrzahl von Tasks zuordenbar ist, wobei der abzuarbeitende Auftrag in Abhängigkeit von einem Ergebnis eines Vergleichs zugeordnet wird, wobei im Vergleich ein erster Wert mit einem zweiten Wert verglichen wird, wobei der erste Wert einen ersten Rechenaufwand charakterisiert, der im Rechnersystem durch die Bearbeitung des abzuarbeitenden Auftrags in einem ersten Task der Mehrzahl von Tasks zu erwarten ist, wobei der zweite Werte einen zweiten Rechenaufwand charakterisiert, der im Rechnersystem durch die Bearbeitung des abzuarbeitenden Auftrags in einem zweiten Task der Mehrzahl von Tasks zu erwarten ist. Zur Bearbeitung eines Auftrags können unterschiedliche Tasks bereits auf dem Rechnersystem ablaufen, oder dazu gestartet werden. Unterschiedliche Tasks können unterschiedlichen Rechenaufwand im Rechnersystem verursachen. Der Zusätzliche Rechenaufwand, den unterschiedliche Tasks zur Bearbeitung eines Auftrags voraussichtlich verursachen, wird mittels des Vergleichs bei der Zuordnung neuer Aufträge berücksichtigt. Eine für die Ausführungszeit der Bearbeitung von Aufträgen im Rechnersystem verbesserte Zuordnung ist somit einfach wählbar.
  • Vorzugsweise ist dem Task eine Mehrzahl von Rechenkernen zuordenbar, wobei einer der Rechenkerne in Abhängigkeit von dem Ergebnis eines weiteren Vergleichs zugeordnet wird, wobei im weiteren Vergleich ein dritter Wert mit einem vierten Wert verglichen wird, wobei der dritte Wert einen dritten Rechenaufwand charakterisiert, der im Rechnersystem durch die Bearbeitung des abzuarbeitenden Auftrags auf einem ersten Rechenkern der Mehrzahl von Rechenkernen zu erwarten ist, wobei der vierte Wert einen vierten Rechenaufwand charakterisiert, der im Rechnersystem durch die Bearbeitung des abzuarbeitenden Auftrags auf einem zweiten Rechenkern der Mehrzahl von Rechenkernen zu erwarten ist. Dieser zusätzliche Vergleich ermöglicht es, einen für die Erfüllung der Echtzeitanforderung gut geeigneten Rechenkern einfach zu wählen. Dadurch kann die Ausführungszeit der Bearbeitung von Aufträgen im Rechnersystem weiter verbessert werden.
  • Vorzugsweise sind der erste Wert, der zweite Wert, der dritte Wert und/oder der vierte Wert abhängig von einer durch die Ausführung eines jeweiligen Tasks im Rechnersystem zu erwartenden Last, einem durch eine Initialisierung des Tasks im Rechnersystem zu erwartenden Rechenaufwand, einer zu erwartenden Ausführungsdauer des Auftrags, und/oder einer statistischen Verteilung von Ankunftszeiten von Aufträgen beim Rechnersystem. Diese Kenngrößen eignen sich besonders gut um die Zuordnung von Aufträgen zu Tasks dynamisch zu verändern. Zu erwartender Rechenaufwand, zu erwartende Ausführungszeit oder Ausführungsdauer werden beispielsweise statistisch erfasst. Der zur Initialisierung, d.h. das Starten des Tasks erforderliche Rechenaufwand ist bekannt, da er beispielsweise vom Rechnersystem abhängt. Es kann auch jeweils eine Annahme über einen Maximalwert verwendet werden. Diese Werte werden beispielsweise im Betrieb des Verfahrens ermittelt oder vorgegeben.
  • Vorzugsweise wird Information über eine Anzahl laufender Tasks mit Information über eine Anzahl abzuarbeitender Aufträge verglichen. Die abzuarbeitenden Aufträge werden in diesem Fall abhängig vom Ergebnis des Vergleichs auf laufende Tasks verteilt. Zusätzlich oder alternativ dazu wird abhängig vom Ergebnis des Vergleichs mindestens ein Task zur Bearbeitung mindestens eines Auftrags gestartet. Die Anzahl laufender Tasks kann der Anzahl abzuarbeitender Aufträge entsprechen. Dann ist es möglich jedem Auftrag einen Task zuzuordnen. Wenn die Anzahl laufender Tasks geringer ist, als die Anzahl der laufenden Tasks, kann entweder ein neuer Task gestartet werden oder gewartet werden, bis der neue Auftrag in einem bereits laufenden Task bearbeitet wird. Abhängig von der aktuellen Auslastung eines oder mehrerer der Rechenkerne und dem Overhead, der zum Starten eines neuen Tasks erforderlich ist, kann somit die eine oder die andere Vorgehensweise gewählt werden. Dadurch kann das Rechnersystem flexibel abhängig von unterschiedlicher Auftragslage und Auslastung angepasst werden.
  • Vorzugsweise wird ein Task zur Bearbeitung eines abzuarbeitenden Auftrags gestartet, wenn eine durchschnittliche Laufzeit zur Abarbeitung von Aufträgen durch das Rechnersystem einen durchschnittlichen Abstand zwischen Ankunftszeiten der Aufträge beim Rechnersystem überscheitet, und/oder wenn eine Abarbeitung von einem Task oder mehreren Tasks zu Antwortzeiten des Rechnersystems führt, die nicht vorgegebenen Anforderungen entsprechen. Durchschnittliche Laufzeit und durchschnittlicher Abstand werden beispielsweise während des Verfahrens ermittelt. Die vorgegebenen Anforderungen werden abhängig von einem anzusteuernden System bestimmt. Durch die Berücksichtigung dieser Anforderungen bei der Entscheidung, ob ein Task gestartet wird oder nicht, ist das Rechnersystem an das anzusteuernde System anpassbar.
  • Vorzugsweise wird durch mindestens einen Task überprüft, ob ein Auftrag zur Bearbeitung durch den Task vorgesehen ist. Ein Task kann so ohne auf Signale von außerhalb des Rechnersystems zu warten, beispielsweise nach dem Abarbeiten eines Auftrags, einen neuen Auftrag erkennen. Dieser kann dann ohne Zeitverlust bearbeitet werden.
  • Vorzugsweise überprüft der Task, ob ein Auftrag zur Bearbeitung durch den Task in einer dem Task zugeordneten Warteschlange oder einer mehreren Tasks zugeordneten Liste mit Aufträgen enthalten ist. Es kann entweder ein bereits zuvor dem Task zugeordneter Auftrag aus der Warteschlange des Tasks, oder ein neuer noch nicht dem Task zugeordneter Auftrag aus einer allgemeinen systemweiten Liste von Aufträgen aufgefunden werden. Dieser Auftrag kann dann ohne Zeitverlust bearbeitet werden.
  • Vorzugsweise wird mindestens ein Signal zur Zuordnung eines Auftrags zu einem Task verwendet, wobei das mindestens eine Signal ausgebildet ist, für die Ausführung eines Auftrages einen Task zur Bearbeitung festzulegen. Ein Signal, beispielsweise ein Semaphor, ist eine Datenstruktur zur Synchronisation von Tasks im Rechnersystem. Das Semaphor ist eine besonders gut geeignete Implementierung zur einstufigen Zuordnung eines Auftrags zu einem Task.
  • Vorzugsweise ist das mindestens eine Signal ausgebildet einen Startzeitpunkt der Bearbeitung festzulegen, wobei das mindestens eine Signal entweder individuell, insbesondere binär, für jeden Task strukturiert ist, oder global für alle laufenden Tasks strukturiert ist. Dadurch wird zusätzlicher Overhead zur Festlegung der Startzeitpunkte sowohl bei Verwendung eines Signals das einen bestimmten Task zugeordnet ist, als auch für ein systemweites Signal vermieden. Das Signal ist vorzugsweise das Semaphor.
  • Das Rechnersystem weist einen Dispatcher auf, der ausgebildet ist, einen vom Rechnersystem abzuarbeitenden Auftrag einem Task aus einer Mehrzahl von Tasks zur Bearbeitung zuzuordnen, wobei der abzuarbeitende Auftrag in Abhängigkeit von dem Ergebnis eines Vergleichs zugeordnet wird, wobei im Vergleich ein erster Wert mit einem zweiten Wert verglichen wird, wobei der erste Wert einen ersten Rechenaufwand charakterisiert, der im Rechnersystem durch die Bearbeitung des abzuarbeitenden Auftrags in einem ersten Task der Mehrzahl von Tasks zu erwarten ist, wobei der zweite Werte einen zweiten Rechenaufwand charakterisiert, der im Rechnersystem durch die Bearbeitung des abzuarbeitenden Auftrags in einem zweiten Task der Mehrzahl von Tasks zu erwarten ist. Der Dispatcher selbst ist passiv realisiert. D.h. der Dispatcher braucht keine eigene Task und läuft im Kontext des Tasks, der den Dispatcher aufruft. Dadurch benötigt der Dispatcher keine eigenen Task-Ressourcen und es entfällt zusätzlicher Aufwand zur Synchronisation bzw. Koordination.
  • Vorzugsweise umfasst das Rechnersystem eine Mehrzahl von Rechenkernen, wobei dem Task die Mehrzahl von Rechenkernen zuordenbar ist, wobei einer der Rechenkerne in Abhängigkeit von dem Ergebnis eines weiteren Vergleichs zugeordnet wird, wobei im weiteren Vergleich ein dritter Wert mit einem vierten Wert verglichen wird, wobei der dritte Wert einen dritten Rechenaufwand charakterisiert, der im Rechnersystem durch die Bearbeitung des abzuarbeitenden Auftrags auf einem ersten Rechenkern der Mehrzahl von Rechenkernen zu erwarten ist, wobei der vierte Wert einen vierten Rechenaufwand charakterisiert, der im Rechnersystem durch die Bearbeitung des abzuarbeitenden Auftrags auf einem zweiten Rechenkern der Mehrzahl von Rechenkernen zu erwarten ist.
  • Ein Computerprogramm das ausgebildet ist zum Ausführen des Verfahrens und ein maschinenlesbarer Speicher umfassend das Computerprogramm sind ebenfalls vorgesehen.
  • Weitere vorteilhafte Ausgestaltungen ergeben sich aus den abhängigen Ansprüchen, der folgenden Beschreibung und der Zeichnung. In der Zeichnung zeigen
    • 1 schematisch Teile eines Rechnersystems und eines Verfahrens zum Bearbeiten von Aufträgen,
    • 2 schematisch Teile eines Programmablaufs gemäß eines ersten Beispiels,
    • 3 schematisch Teile eines Programmablaufs gemäß eines zweiten Beispiels.
  • 1 zeigt schematisch Teile eines Rechnersystems 100 zum Bearbeiten von Aufträgen. In 1 sind schematisch auch Schritte eines Verfahrens zum Bearbeiten von Aufträgen dargestellt. Das Rechnersystem 100 ist vorzugsweise ein eingebettetes Rechnersystem 100, das Echtzeitanforderungen erfüllt. Vorzugsweise ist das Rechnersystem Teil eines Steuergeräts.
  • Das Rechnersystem 100 umfasst einen Mikroprozessor, der ausgebildet ist, das Verfahren auszuführen. Der Mikroprozessor weist einen Rechenkern oder mehrere Rechenkerne auf. Der Mikroprozessor umfasst einen Dispatcher 110, der ausgebildet ist, Aufträge auf Tasks 120 zu verteilen. Der Dispatcher 110 steuert beispielsweise den optimalen Einsatz der zur Verfügung stehenden Tasks 120 und gewährleistet den entsprechenden Informationsfluss zur Bearbeitung von Aufträgen. Im Rahmen der Taskverwaltung eines Betriebssystems, das auf dem Mikroprozessor abläuft, wird einzelnen Tasks 120 Rechenzeit des Mikroprozessors zugewiesen. Dabei dient der Dispatcher 110 dazu, einem derzeit aktiven Task 120 den Zugriff auf die Rechenzeit zu entziehen und anschließend dem nächsten Task 120 Rechenzeit zuzuteilen. Die Entscheidung, welcher Task 120 der nächste ist, wird beispielsweise von einem Scheduler getroffen, der dazu vom Dispatcher 110 aufgerufen wird. Der Scheduler kann Tasks 120 Rechenzeit zuweisen. Wenn mehrere Rechenkerne vorgesehen sind, kann der Scheduler einem Task 120 einen bestimmten Rechenkern zuweisen.
  • Das Rechnersystem 100 wird beispielsweise zur Ansteuerung einer Maschine eingesetzt. Bei dem Rechnersystem 100 für die Maschine sind beispielsweise zur Ansteuerung der Maschine periodisch auszuführende Aufträge vorgesehen. Diese Aufträge werden durch das Abarbeiten in einem oder mehreren Tasks 120 ausgeführt. Ein Task 120 läuft auf einem Rechenkern ab. Das bedeutet, ein Programm mit einer Folge von Anweisungen um eine bestimmte Funktion oder Aufgaben mithilfe des Mikroprozessors zu bearbeiten wird in einem Prozess ausgeführt, der zum Ablauf einem Rechenkern zugeordnet ist. Verschiedene Tasks 120 können auf demselben Rechenkern oder auf mehreren Rechenkernen ablaufen.
  • Das Rechnersystem 100 ist im Beispiel mit einer Schnittstelle 101 für Benutzerinteraktion verbunden. Die Schnittstelle 101 ist insbesondere ausgebildet Aufträge 102 von einem Benutzer 103 zu empfangen. Ein Benutzer 103 ist dabei beispielsweise ein Mensch, die die Maschine bedient. Die Schnittstelle 101 ist beispielsweise ein Rechner mit Bildschirm, Maus und/oder Tastatur zur Interaktion mit dem Rechnersystem 100. Auf dem Rechner laufen beispielsweise ein weiteres Betriebssystem und ein Programm, das die Interaktion ermöglicht.
  • Zum Beispiel ist das Rechnersystem 100 ausgebildet eine Maschine anzusteuern.
  • Ein erster Auftrag 102a ist beispielsweise das Erstellen einer Statistik über Betriebszustände der Maschine. Dazu werden beispielsweise interne Daten des Mikroprozessors oder Daten eines an der Maschine angeordneten Sensors vom Rechnersystem 100 erfasst und abgespeichert.
  • Ein zweiter Auftrag 102b ist beispielsweise eine Abfrage von Information über die Statistik. Dazu wird auf gespeicherte Daten der Statistik zugegriffen.
  • Die Verbindung zwischen der Schnittstelle 101 und Rechnersystem 100 kann über ein drahtloses oder drahtgebundenes Telekommunikationsnetzwerk, insbesondere mittels des Transmission Control Protokolls und des Internet Protokolls hergestellt werden. Vorzugsweise ist dazu im Rechnersystem 100 eine Hyper Text Transfer Protokoll Schnittstelle vorgesehen, die ausgebildet ist, Hyper Text Transfer Protokoll Anfragen zu empfangen, die einen oder mehrere Aufträge enthalten. Die Hyper Text Transfer Protokoll Schnittstelle kann auch ausgebildet sein, Hyper Text Transfer Protokoll Antworten zu senden. Beispielsweise werden Daten der Statistik als Hyper Text Transfer Protokoll Antwort gesendet. Aufträge 102 können auch von einem mit dem Rechnersystem 100 verbundenen Touchscreen an das Rechnersystem 100 gesendet werden. Die Ausgabe der Daten kann in diesem Fall auf dem Touchscreen erfolgen.
  • Der Dispatcher 110 ist ausgebildet, Aufträge 102 entgegenzunehmen, die von der Schnittstelle 101 empfangen werden. Der Rechenkern oder die Rechenkerne sind ausgebildet Tasks 120, die zur Ausführung von Aufträgen abgearbeitet werden müssen auszuführen. Ein Task 120 kann bereits vor Empfang eines Auftrags gestartet worden sein oder erst bei Bedarf gestartet werden. Bereits laufende Tasks 120 können vom Dispatcher 110 für einen Task freigeschaltet werden. Das bedeutet, der Tasks 120 wird vom Dispatcher 110 zur Bearbeitung von Aufträgen berechtigt. Dies bedeutet nicht unbedingt, dass der Task 120 bereits unmittelbar Aufträge bearbeitet. Der Scheduler kann ausgebildet sein nur freigeschalteten Tasks 120 Rechenzeit zuweisen. Wenn mehrere Rechenkerne vorgesehen sind, kann der Scheduler ausgebildet sein nur einem freigeschalteten Task 120 einen bestimmten Rechenkern zuweisen.
  • Der Dispatcher 110, der Scheduler und die Tasks 120 sind beispielsweise in Software oder Firmware implementierte Programme mit Instruktionen, die der Mikroprozessor ausführt. Die Software oder Firmware ist im Rechnersystem 100 ausführbar gespeichert.
  • Das Verfahren zum Bearbeiten von Aufträgen beginnt im Beispiel mit dem Empfang eines Auftrags 102 von der Schnittstelle 101. Das Verfahren wird im Folgenden mittels des Dispatchers 110 und eines Tasks 120 erläutert. Eine Anwendung des Verfahrens mit mehreren Tasks 120 ist ebenfalls möglich. Die im Folgenden für einen Task 120 beschriebene Verteilung von Aufträgen 102 auf Tasks 120 erfolgt in diesem Fall analog.
  • In einer Nachricht 104 wird der erste Auftrag 102a vom Dispatcher 110 empfangen. Der erste Auftrag 102a ist beispielsweise durch den Benutzer 103 oder eine andere externe Quelle veranlasst.
  • Der erste Auftrag 102a wird in einem Schritt 105 vom Dispatcher 110 entgegengenommen. Das bedeutet, Information über den ersten Auftrag 102a, die in der Nachricht 104 enthalten ist, wird beispielsweise im Rechnersystem 100 gespeichert. Zudem kann ein Verweis auf die Information, beispielsweise auf den Speicherort der Information, in einer Liste von Aufträgen gespeichert werden.
  • Die Liste von Aufträgen kann bereits Verweise auf andere Aufträge als den ersten Auftrag 102a enthalten. In diesem Fall wird der Verweis auf den ersten Auftrag 102a beispielsweise am Ende der Liste angefügt. Beispielsweise enthält die Liste bereits Verweise auf Aufträge, die über Interrupts bereits vor Empfang des ersten Auftrags 102a ausgelöst wurden. Es kann sich auch um Verweise auf periodisch auszuführende Aufträge oder andere sporadisch auszuführende Aufträge handeln.
  • Der Schritt 105 wird wiederholt, wenn weitere Aufträge 102 empfangen werden. Beispielsweise werden der zweiter Auftrag 102b und ein dritter Auftrag 102c empfangen. Dadurch entstehen entsprechende Verweise in der Liste.
  • Mit einer Nachricht 106 wird einer der abzuarbeitenden Aufträge vom Dispatcher 110 einem Task 120 zugewiesen. Bevorzugt wird der Auftrag, der in der am Anfang der Liste steht zuerst zugewiesen. Die Zuweisung bedeutet im Beispiel auch die Zuweisung an einen Rechenkern, zur Bearbeitung des Auftrags. Entsprechend werden eine Vielzahl von Aufträgen vom Dispatcher 110 auf Tasks 120 verteilt. Dazu kann vorgesehen sein, einen Auftrag auf einen von mehreren zur Verfügung stehenden Tasks 120 bzw. Rechnerkerne zu verteilen. Wenn ein Auftrag zur Bearbeitung einem Task 120 zugewiesen wurde, wird der Verweis auf den Auftrag in der Liste entsprechend markiert.
  • Der Dispatcher 110 steuert die Verteilung der Aufträge an die Tasks 120 beispielsweise über Signale, insbesondere Semaphoren. Als Signal, insbesondere als Semaphor, wird im Beispiel eine Datenstruktur zur Synchronisation von Tasks 120 im Rechnersystem 100 verwendet. Aufträge können beispielsweise durch einen Task 120 bearbeitet werden, wenn ein Zähler in der Datenstruktur Anzeigt, dass der Task 120 zur Bearbeitung freigegeben ist. Dazu kann ein ganzzahliger Zähler verwendet werden, der einem bestimmten Task 120 zugeordnet ist, auf einen maximalen Wert initialisiert wird und bei jeder Zuordnung eines Auftrags an den Task 120 um eins reduziert wird. In diesem Fall ist der Task 120 nicht zur Bearbeitung freigegeben oder nicht mehr zuordenbar, wenn der Zähler Null ist. Sobald der Auftrag abgearbeitet ist, kann der Zähler wieder um ein erhöht werden. Beispielsweise ist der Dispatcher 110 ausgebildet die entsprechenden Operationen auf der Datenstruktur auszuführen. Der Dispatcher 110 ist beispielsweise ausgebildet, dabei eine aktuellen Systemlast eines Rechenkerns der einen Task 120 ausführt, eine aktuelle Systemlast anderer zur Verfügung stehender Rechenkerne die Tasks 120 ausführen, Information über sich bereits in Abarbeitung befindende Task 120 oder Information über neu zu startende Tasks 120 dazu zu verwenden, die Aufträge an die Tasks 120 zu verteilen. Es kann auch aus einer Historie Information über vergleichbare Situationen bezüglich der Abarbeitung der Tasks 120 zur Entscheidung herangezogen werden. Zur Historie zählen beispielsweise die statistische oder zeitliche Verteilung der Ankunftszeiten neuer Aufträge sowie deren Ausführungsdauer. Die Historie wird beispielsweise zur Laufzeit des Rechnersystems 100 ermittelt.
  • Beispielsweise werden je nach Systemlast oder Historie verschiedene Strategien angewandt, um den Mikroprozessor optimal auszulasten.
  • Ein vom Rechnersystem 100 abzuarbeitender Auftrag ist, wie beschrieben, einem Task 120 aus einer Mehrzahl von Tasks 120 zuordenbar. Der Dispatcher 110 ist ausgebildet einen bestimmten Auftrag genau einem Task 120 aus der Mehrzahl von Tasks 120 zur Bearbeitung zuzuordnen. Dazu werden Kenngrößen eingesetzt, die einen jeweiligen Rechenaufwand im Rechnersystem 100 charakterisieren. Für einen ersten Task wird ein erster Rechenaufwand ermittelt, der durch die Bearbeitung des abzuarbeitenden Auftrags in dem ersten Task zu erwarten ist. Für einen zweiten Task wird ein zweiter Rechenaufwand ermittelt, der durch die Bearbeitung des abzuarbeitenden Auftrags in dem zweiten Task zu erwarten ist Für einen Vergleich zwischen dem ersten Rechenaufwand und dem zweiten Rechenaufwand werden ein erster Wert, der den ersten Rechenaufwand charakterisiert, mit einem zweiten Wert, der den zweiten Rechenaufwand charakterisiert, verglichen. Der erste Wert charakterisiert auch den ersten Task, der zweite Wert charakterisiert auch den zweiten Task.
  • Die Mehrzahl von Tasks 120 kann auch einer Mehrzahl von Rechenkernen zuordenbar sein. In diesem Fall können zusätzlich oder alternativ Kenngrößen eingesetzt werden, die einen jeweiligen Rechenaufwand im Rechnersystem 100 charakterisieren, der durch die Bearbeitung des abzuarbeitenden Auftrags in einem jeweiligen Task 120 auf einem jeweiligen Rechenkern zu erwarten ist. Für einen weiteren Vergleich zwischen einem dritten Rechenaufwand, der bei Abarbeiten auf einem ersten Rechenkern und einem vierten Rechenaufwand, der bei Abarbeiten auf einem zweiten Rechenkern entsteht, wird ein dritter Wert mit einem vierten Wert verglichen. Der dritte Wert charakterisiert den dritten Rechenaufwand bzw. den ersten Rechenkern, der vierte Wert charakterisiert den vierten Rechenaufwand bzw. den zweiten Rechenkern. Das bedeutet, in Abhängigkeit vom Ergebnis des weiteren Vergleichs, wird einer der Rechenkerne dem Task zugeordnet, dem der abzuarbeitende Auftrag zur Bearbeitung zugeordnet wurde. Dazu kann als dritter Wert oder vierter Wert auch der passende erste Wert oder zweite Wert erneut verwendet werden.
  • Die Zuordnung erfolgt beispielsweise in Abhängigkeit vom Ergebnis eines Vergleichs von Kenngrößen verschiedener Tasks 120 und/oder in Abhängigkeit vom Ergebnis eines Vergleichs von Kenngrößen verschiedener Tasks 120. Für mehrere Tasks und/oder mehrere Rechenkerne werden jeweilige Werte bestimmt und verglichen. Vorzugsweise wird ein Task oder ein Rechenkern durch bestimmen des Maximums oder des Minimums aller bestimmten Werte ermittelt und dem abzuarbeitenden Auftrag zugeordnet.
  • Die Kenngrößen, d.h. der erste Wert, der zweite Wert, der dritte Wert und/oder der vierte Wert, können abhängig sein von einer durch die Ausführung eines jeweiligen Tasks 120 im Rechnersystem 100 zu erwartenden Last, einem durch eine Initialisierung des Tasks 120 im Rechnersystem 100 zu erwartenden Rechenaufwand, einer zu erwartenden Ausführungsdauer des Auftrags, und/oder einer statistischen Verteilung von Ankunftszeiten von Aufträgen beim Rechnersystem 100.
  • Es kann auch vorgesehen sein, dass der Dispatcher 110 und ein Task 120 zur Verteilung der Aufträge zusammenwirken. Anhand der 2 und 3 wird das Zusammenwirken im Folgenden beschrieben.
  • Die Abarbeitung des Auftrags in einem Task 120 erfolgt nach der Verteilung in einem Schritt 107, im Beispiel in dem Task 120, dem der Auftrag zur Bearbeitung zugewiesen wurde. Für die Abarbeitung des ersten Auftrags 102a werden im Beispiel die für die Statistik erforderlichen Daten erfasst und gespeichert. Für die Abarbeitung des zweiten Auftrags 102b wird im Beispiel auf die gespeicherten Daten der Statistik zugegriffen und Information über die Statistik ausgegeben.
  • Im Rechnersystem 100 ist durch den ersten Auftrag 102a, den zweien Auftrag 102b und/oder den dritten Auftrag 102c eine Verteilung zusätzlicher Aufträge 102 auf Tasks 120 erforderlich. Diese Aufträge 102 entstehen zusätzlich zu den bereits vorhandenen Aufträgen, die periodisch abzuarbeiten sind. Diese zusätzlichen Aufträge 102 sind asynchron zu den bereits vorhandenen Aufträgen. Diese zusätzlichen Aufträge 102 sind nicht statistisch vorhersehbar und nicht planbar.
  • Um auf derartige sporadische Anfragen angemessen zu reagieren können Tasks 120 und Dispatcher 110 zusammenwirken.
  • Im Folgenden werden zwei Verfahren zum Zusammenwirken von Task 120 und Dispatcher 110 beschrieben.
  • Anhand 2 wird ein Verfahren zum Zusammenwirken von Task 120 und Dispatcher 110 beschrieben, in dem ein Task 120 nach jeder erfolgreichen Abarbeitung eines Auftrags über ein Semaphor überprüft, ob ein weiterer Auftrag für ihn zur Verfügung steht. Im linken Pfad von 2 ist schematisch der Ablauf des Verfahrens auf dem Dispatcher 110 dargestellt. Im rechten Pfad von 2 ist schematisch der Ablauf des Verfahrens das in dem Task 120 abläuft dargestellt.
  • Der Task 120 wird beispielsweise in einem Schritt 201 gestartet. Der Dispatcher 110 wird im Beispiel bereits ausgeführt, wenn der Task 120 startet. Zuvor, während der Task 120 gestartet wird, oder danach, wird vom Dispatcher 110 in einem Schritt 211 ein Auftrag zur Liste der Aufträge hinzugefügt. Information über anstehende Aufträge ist beispielsweise in der Liste enthalten. Im Beispiel ist ein Verweis auf einen Auftrag in der Liste gespeichert. Als Aufträge werden beispielsweise der erste Auftrag 102a oder der zweite Auftrag 102b der Liste hinzugefügt.
  • Nach Schritt 201 wird in einem Schritt 202 geprüft, ob ein Auftrag für den Task 120 verfügbar ist. Dazu wird beispielsweise überprüft, ob in einer Warteschlange für Aufträge, die der Task 120 bearbeiten soll, ein Auftrag enthalten ist. Die Warteschlange enthält dann einen Auftrag, wenn dieser vom Dispatcher 110 dem Task 120 zur Bearbeitung zugewiesen wurde. Im Beispiel wurde der erste Auftrag 102a bereits zugewiesen. Die Zuweisung selbst wird im Folgenden beschrieben. Wenn in der Warteschlange ein Auftrag enthalten ist, wird ein Schritt 203 ausgeführt, anderenfalls wird ein Schritt 204 ausgeführt.
  • Im Schritt 203 wird der Auftrag ausgeführt. Beispielsweise wird der erste Auftrag 102a ausgeführt. Anschließend, insbesondere wenn der erste Auftrag 102a ausgeführt ist, wird der Schritt 204 ausgeführt.
  • Im Schritt 204 wird vom Task 120 ein neuer Auftrag angefordert. Dazu wird beispielsweise das Semaphor verwendet. Beispielsweise ist der Wert des Zählers im Semaphor das Signal für den Dispatcher 110 dem Task 120 einen Auftrag aus der Liste von Aufträgen zur Bearbeitung zuzuweisen. Anschließend wird der Task 120 in mit Schritt 202 fortgesetzt.
  • Der Dispatcher 110 erkennt in einem Schritt 212 das Semaphor als Signal anzeigt, dass dem Task 120 ein Auftrag aus der Liste der Aufträge zur Bearbeitung zuzuweisen ist. Im Beispiel wird der zweite Auftrag 102a zugewiesen. Dazu wird beispielsweise das Semaphor verwendet, um den Wert des Zählers um eins zu erhöhen. Dem Task 120 wird ein Auftrag aus der Liste der Aufträge beispielsweise zugewiesen indem seine Warteschlange mit dem Auftrag gefüllt wird. Es kann vorgesehen sein, die Warteschlange mit mehreren Aufträgen zu füllen, sofern die Kapazität der Warteschlange dies zulässt und in der Liste ausreichend Aufträge enthalten sind. Die Schritte 211 und 212 werden im Beispiel wiederholt, wenn ein neuer Auftrag den Dispatcher 110 erreicht, oder das oder das Semaphor ein entsprechendes Signal gibt.
  • Im Folgenden wird anhand der 3 ein anderes Verfahren zum Zusammenwirken von Dispatcher 110 und Task 120 beschrieben, in dem ein Task 120 einen Auftrag ohne den Umweg über das Semaphor aus der Liste der Aufträge entnehmen kann, solange die Liste Aufträge enthält. Im linken Pfad von 3 ist schematisch der Ablauf des Verfahrens auf dem Dispatcher 110 dargestellt. Im rechten Pfad von 3 ist schematisch der Ablauf des Verfahrens das im Task 120 abläuft dargestellt.
  • Der Task 120 wird beispielsweise in einem Schritt 301 gestartet. Der Dispatcher 110 wird im Beispiel bereits ausgeführt, wenn der Task 120 startet.
  • Nach Schritt 301 wird in einem Schritt 302 geprüft, ob ein Auftrag für den Task 120 verfügbar ist. Dazu wird beispielsweise überprüft, ob in der Liste der Aufträge ein Auftrag enthalten ist, der vom Task 120 bearbeiten soll. Die Liste enthält dann einen Auftrag für den Task 120, wenn dieser vom Dispatcher 110 dem Task 120 oder dem Tasktyp zur Bearbeitung zugewiesen wurde. Wenn in der Liste ein Auftrag enthalten ist, wird ein Schritt 303 ausgeführt, anderenfalls wird ein Schritt 304 ausgeführt.
  • Im Schritt 303 wird der Auftrag ausgeführt. Beispielsweise wird der erste Auftrag 102a ausgeführt. Anschließend, insbesondere wenn der Auftrag ausgeführt ist, wird der Schritt 302 ausgeführt.
  • Im Schritt 304 wird vom Task 120 ein neuer Auftrag angefordert. Dazu wird beispielsweise das Semaphor verwendet. Das Semaphor enthält wie beschrieben das Signal für den Dispatcher 110 dem Task 120 einen Auftrag aus der Liste von Aufträgen zur Bearbeitung zuzuweisen. Anschließend wird der Task 120 in mit Schritt 302 fortgesetzt.
  • Zuvor, während der Task 120 in Schritt 301 gestartet wird, oder danach, wird vom Dispatcher 110 in einem Schritt 311 ein Auftrag wie im Beispiel von 1 zur Liste der Aufträge hinzugefügt. Information über die Aufträge ist beispielsweise in der Liste enthalten. Im Beispiel ist ein Verweis auf einen Auftrag in der Liste gespeichert. Die Aufträge in der Liste werden in diesem Beispiel vom Dispatcher einem bestimmten Tasktyp oder einem bestimmten Task 120 zugeordnet. Die Zuordnung zum Tasktyp erlaubt es verschiedenen Tasks 120, die parallel ablaufen, und denselben Auftrag ausführen können, auf dieselbe Liste zuzugreifen. Eine Zuordnung erfolgt beispielsweise durch einen entsprechenden zusätzlichen Eintrag in ein Listenelement, das den jeweiligen Auftrag definiert.
  • Nach Schritt 311 wird in einem optionalen Schritt 312 geprüft, ob bereits genauso viele oder mehr Tasks 120 ablaufen, als Aufträge in der Liste gespeichert sind. Vorzugsweise wird geprüft, ob mehr Tasks 120 ablaufen, die einen bestimmten Tasktyp haben, als Aufträge die diesen Tasktyp erfordern. Falls bereits genauso viele oder mehr Tasks 120 ablaufen, als Aufträge in der Liste gespeichert sind, wird Schritt 311 ausgeführt. Anderenfalls wird ein Schritt 313 ausgeführt. Im Schritt 312 vergleicht der Dispatcher 110 so die Anzahl laufender Tasks 120 mit der Anzahl der Aufträge und verteilt die Aufträge abhängig vom Ergebnis des Vergleichs. Wenn Schritt 312 optional ist, wird Schritt 313 nach Schritt 311 ausgeführt.
  • Im Schritt 313 wird dem Task 120 ein Auftrag aus der Liste der Aufträge insbesondere im Beispiel der zweite Auftrag 102b, zugewiesen. Es kann vorgesehen sein, mehrere Aufträgen zuzuweisen sofern in der Liste ausreichend Aufträge enthalten sind. Anschließend wird Schritt 311 ausgeführt.
  • Eine Warteschlange wie im Beispiel von 2 ist im Beispiel von 3 nicht vorgesehen. Es kann jedoch vorgesehen sein, in einem Task 120 beide Möglichkeiten des Zusammenwirkens zu implementieren. In diesem Falle können auch mehrere auf Anfrage des Tasks 120 erhaltene Aufträge in der Warteschlange zwischengespeichert werden.
  • Im Beispiel nach 2 ist der Overhead durch eine Abfrage des Semaphors zwar größer, aber die Steuerungsmöglichkeit des Dispatchers 110 ist ebenfalls größer.
  • Die Signale, insbesondere die Semaphore können unterschiedliche Struktur aufweisen. Insbesondere werden individuell, d.h. binär, strukturierte Semaphore für jeden Task 120 oder ein global strukturiertes Semaphore verwendet. Semaphore können ausgebildet sein, für die Ausführung eines Auftrages einen Task 120 zur Bearbeitung und/oder einen Startzeitpunkt der Bearbeitung festzulegen. Das bedeutet, Signale, insbesondere Semaphore, können ausgebildet sein die Ausführung einzelner Aufträge einem bestimmten Task 120 zuzuordnen, und/oder einen Startzeitpunkt für die Ausführung gezielt festzulegen.
  • Je nach Struktur des Signals, insbesondere des Semaphors, ist der Dispatcher 110 somit in der Lage die Ausführung jedes einzelnen Auftrages sowohl einem bestimmten Task zuzuordnen, als auch den Startzeitpunkt gezielt festzulegen. Der Dispatcher 110 kann entscheiden, ob Aufträge sofort weitergereicht werden, ob erst eine gewisse Anzahl von Aufträgen gesammelt wird. Der Dispatcher 110 kann festlegen wie viele Tasks 120 maximal und wie viele Aufträge hintereinander abgearbeitet werden.
  • Die Verteilung der Aufträge wird vom Dispatcher 110 vorzugsweise abhängig von der Charakteristik des Systems das vom Mikroprozessor gesteuert wird, oder von Eigenschaften der in diesem System verwendeten Aufträge festgelegt.
  • Systemeigenschaften wie ein Zeitintervall zwischen zwei Aufträgen, Laufzeiten zur Abarbeitung von Aufträgen, die Anzahl zu erwartender neuer Aufträge in einem Zeitintervall, sowie der Overhead, der durch das Betriebssystem beim Starten eines Tasks 120 generiert wird, werden beispielsweise berücksichtigt. Aufträge können auch verzögert werden, falls eine momentane Auslastung des Systems durch echtzeitkritische Tasks momentan einen Schwellwert überschreitet.
  • Beispielsweise schaltet der Dispatcher 110 in einer Konfiguration, in der die Aufträge ohne zusätzliche Semaphore nacheinander abgearbeitet werden, weitere Tasks 120 frei, wenn die durchschnittliche Laufzeit zur Abarbeitung von Aufträgen einen durchschnittlichen Abstand zwischen den Ankunftszeiten der Aufträge überscheitet.
  • Beispielsweise schaltet der Dispatcher 110 in einer Konfiguration, in der die Aufträge ohne zusätzliche Semaphore nacheinander abgearbeitet werden, weitere Tasks 120 frei, wenn eine Abarbeitung von Tasks 120 zu Antwortzeiten führt, die nicht den gewünschten oder benötigten Anforderungen entsprechen. Letzteres können auch harte Echtzeiteigenschaften sein.
  • Alternativ kann das weitere Freischalten verhindert werden, wenn die durchschnittliche Laufzeit zur Abarbeitung von Aufträgen gering und der Overhead zum Starten eines Tasks 120 sehr hoch sind. Dies verringert die unnötige Auslastung des Systems mit ungenutzten Tasks 120, reduziert die Interferenz ungenutzter Tasks 120 mit Tasks 120, die für die interne Funktionalität des Echtzeitsystems erforderlich sind, und behält trotzdem eine ausreichend schnelle Antwortzeit für asynchrone externe Aufträge bei.

Claims (13)

  1. Verfahren zum Betreiben eines Rechnersystems (100), dadurch gekennzeichnet, dass ein vom Rechnersystem (100) abzuarbeitender Auftrag zur Bearbeitung einem Task (120) aus einer Mehrzahl von Tasks (120) zuordenbar ist, wobei der abzuarbeitende Auftrag in Abhängigkeit von einem Ergebnis eines Vergleichs zugeordnet wird, wobei im Vergleich ein erster Wert mit einem zweiten Wert verglichen wird, wobei der erste Wert einen ersten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags in einem ersten Task (120) der Mehrzahl von Tasks (120) zu erwarten ist, wobei der zweite Werte einen zweiten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags in einem zweiten Task (120) der Mehrzahl von Tasks (120) zu erwarten ist.
  2. Verfahren nach Anspruch 1, wobei dem Task (120) eine Mehrzahl von Rechenkernen zuordenbar ist, wobei einer der Rechenkerne in Abhängigkeit von dem Ergebnis eines weiteren Vergleichs zugeordnet wird, wobei im weiteren Vergleich ein dritter Wert mit einem vierten Wert verglichen wird, wobei der dritte Wert einen dritten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags auf einem ersten Rechenkern der Mehrzahl von Rechenkernen zu erwarten ist, wobei der vierte Wert einen vierten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags auf einem zweiten Rechenkern der Mehrzahl von Rechenkernen zu erwarten ist.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, der erste Wert, der zweite Wert, der dritte Wert und/oder der vierte Wert abhängig sind von einer durch die Ausführung eines jeweiligen Tasks (120) im Rechnersystem (100) zu erwartenden Last, einem durch eine Initialisierung des Tasks (120) im Rechnersystem (100) zu erwartenden Rechenaufwand, einer zu erwartenden Ausführungsdauer des Auftrags, und/oder einer statistischen Verteilung von Ankunftszeiten von Aufträgen beim Rechnersystem (100).
  4. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass Information über eine Anzahl laufender Tasks (120) mit Information über eine Anzahl abzuarbeitender Aufträge verglichen wird, und abzuarbeitende Aufträge abhängig vom Ergebnis des Vergleichs auf laufende Tasks (120) verteilt werden und/oder dass abhängig vom Ergebnis des Vergleichs mindestens ein Task (120) zur Bearbeitung mindestens eines Auftrags gestartet wird.
  5. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass ein Task (120) zur Bearbeitung eines abzuarbeitenden Auftrags gestartet wird, wenn eine durchschnittliche Laufzeit zur Abarbeitung von Aufträgen durch das Rechnersystem (100) einen durchschnittlichen Abstand zwischen Ankunftszeiten der Aufträge beim Rechnersystem (100) überscheitet, und/oder wenn eine Abarbeitung von einem Task(120) oder mehreren Tasks (120) zu Antwortzeiten des Rechnersystems (100) führt, die nicht vorgegebenen Anforderungen entsprechen.
  6. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass durch mindestens einen Task (120) überprüfen wird, ob ein Auftrag zur Bearbeitung durch den Task (120) vorgesehen ist.
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass der Task (120) überprüft, ob ein Auftrag zur Bearbeitung durch den Task (120) in einer dem Task (120) zugeordneten Warteschlange oder einer mehreren Tasks (120) zugeordneten Liste mit Aufträgen enthalten ist.
  8. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, dass mindestens ein Signal zur Zuordnung eines Auftrags zu einem Task (120) verwendet wird, wobei das mindestens eine Signal ausgebildet ist, für die Ausführung eines Auftrages einen Task (120) zur Bearbeitung festzulegen.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass das mindestens eine Signal ausgebildet ist einen Startzeitpunkt der Bearbeitung festzulegen, und wobei das mindestens eine Signal entweder individuell, insbesondere binär, für jeden Task (120) strukturiert ist, oder global für alle laufenden Tasks (120) strukturiert ist.
  10. Rechnersystem (100), dadurch gekennzeichnet, dass das Rechnersystem (100) einen Dispatcher (120) aufweist, der ausgebildet ist, einen vom Rechnersystem (100) abzuarbeitenden Auftrag einem Task (120) aus einer Mehrzahl von Tasks (120) zur Bearbeitung zuzuordnen, wobei der abzuarbeitende Auftrag in Abhängigkeit von dem Ergebnis eines Vergleichs zugeordnet wird, wobei im Vergleich ein erster Wert mit einem zweiten Wert verglichen wird, wobei der erste Wert einen ersten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags in einem ersten Task (120) der Mehrzahl von Tasks (120) zu erwarten ist, wobei der zweite Werte einen zweiten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags in einem zweiten Task (120) der Mehrzahl von Tasks (120) zu erwarten ist.
  11. Rechnersystem (100), nach Anspruch 10, dadurch gekennzeichnet, dass das Rechnersystem (100) eine Mehrzahl von Rechenkernen umfasst, wobei dem Task (120) die Mehrzahl von Rechenkernen zuordenbar ist, wobei einer der Rechenkerne in Abhängigkeit von dem Ergebnis eines weiteren Vergleichs zugeordnet wird, wobei im weiteren Vergleich ein dritter Wert mit einem vierten Wert verglichen wird, wobei der dritte Wert einen dritten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags auf einem ersten Rechenkern der Mehrzahl von Rechenkernen zu erwarten ist, wobei der vierte Wert einen vierten Rechenaufwand charakterisiert, der im Rechnersystem (100) durch die Bearbeitung des abzuarbeitenden Auftrags auf einem zweiten Rechenkern der Mehrzahl von Rechenkernen zu erwarten ist.
  12. Computerprogramm ausgebildet zum Ausführen des Verfahrens nach einem der Ansprüche 1 bis 9.
  13. Maschinenlesbarer Speicher umfassend ein Computerprogramm nach Anspruch 12.
DE102016222375.5A 2016-11-15 2016-11-15 Vorrichtung und Verfahren zum Bearbeiten von Aufträgen Pending DE102016222375A1 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102016222375.5A DE102016222375A1 (de) 2016-11-15 2016-11-15 Vorrichtung und Verfahren zum Bearbeiten von Aufträgen
CN201780070284.3A CN109964206B (zh) 2016-11-15 2017-11-08 用于处理任务的设备和方法
US16/349,863 US11275621B2 (en) 2016-11-15 2017-11-08 Device and method for selecting tasks and/or processor cores to execute processing jobs that run a machine
PCT/EP2017/078580 WO2018091329A1 (de) 2016-11-15 2017-11-08 Vorrichtung und verfahren zum bearbeiten von aufträgen

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102016222375.5A DE102016222375A1 (de) 2016-11-15 2016-11-15 Vorrichtung und Verfahren zum Bearbeiten von Aufträgen

Publications (1)

Publication Number Publication Date
DE102016222375A1 true DE102016222375A1 (de) 2018-05-17

Family

ID=60515317

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016222375.5A Pending DE102016222375A1 (de) 2016-11-15 2016-11-15 Vorrichtung und Verfahren zum Bearbeiten von Aufträgen

Country Status (4)

Country Link
US (1) US11275621B2 (de)
CN (1) CN109964206B (de)
DE (1) DE102016222375A1 (de)
WO (1) WO2018091329A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022115421A1 (de) 2022-06-21 2024-01-11 Focke & Co. (Gmbh & Co. Kg) Maschine sowie Verfahren zum Betrieb derselben

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020086053A1 (en) * 2018-10-22 2020-04-30 Mentor Graphics Corporation Dynamic allocation of computing resources for electronic design automation operations

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09167141A (ja) * 1995-12-18 1997-06-24 Hitachi Ltd 負荷分散制御方法
US5872972A (en) * 1996-07-05 1999-02-16 Ncr Corporation Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited
US7167916B2 (en) * 2002-08-30 2007-01-23 Unisys Corporation Computer OS dispatcher operation with virtual switching queue and IP queues
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7793293B2 (en) * 2004-11-01 2010-09-07 Hewlett-Packard Development Company, L.P. Per processor set scheduling
US7941805B2 (en) * 2006-08-15 2011-05-10 International Business Machines Corporation Affinity dispatching load balancer with precise CPU consumption data
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US8156495B2 (en) * 2008-01-17 2012-04-10 Oracle America, Inc. Scheduling threads on processors
US20110161294A1 (en) * 2009-12-30 2011-06-30 Sun Microsystems, Inc. Method for determining whether to dynamically replicate data
US20120066683A1 (en) * 2010-09-09 2012-03-15 Srinath Nadig S Balanced thread creation and task allocation
US8621479B2 (en) * 2012-01-05 2013-12-31 The Boeing Company System and method for selecting task allocation method based on load balancing and core affinity metrics
KR101834195B1 (ko) * 2012-03-15 2018-04-13 삼성전자주식회사 다중코어 시스템 및 로드 밸런싱 방법
EP2828748A4 (de) * 2012-03-21 2016-01-13 Nokia Technologies Oy Verfahren in einem prozessor, vorrichtung und computerprogrammprodukt
US9336057B2 (en) * 2012-12-21 2016-05-10 Microsoft Technology Licensing, Llc Assigning jobs to heterogeneous processing modules
US9329899B2 (en) * 2013-06-24 2016-05-03 Sap Se Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads
US9584588B2 (en) * 2013-08-21 2017-02-28 Sap Se Multi-stage feedback controller for prioritizing tenants for multi-tenant applications
US9547521B2 (en) * 2014-09-25 2017-01-17 Oracle International Corporation System and method for supporting dynamic thread pool sizing in a distributed data grid

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Wikipedia: Shortest job next. 12. Mai 2016. <https://en.wikipedia.org/w/index.php?title=Shortest_job_next&oldid=719863518>(recherchiert am 26.7.2017) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022115421A1 (de) 2022-06-21 2024-01-11 Focke & Co. (Gmbh & Co. Kg) Maschine sowie Verfahren zum Betrieb derselben

Also Published As

Publication number Publication date
US20190340034A1 (en) 2019-11-07
WO2018091329A1 (de) 2018-05-24
CN109964206B (zh) 2024-01-09
US11275621B2 (en) 2022-03-15
CN109964206A (zh) 2019-07-02

Similar Documents

Publication Publication Date Title
EP1831786B1 (de) Verfahren zur verteilung von rechenzeit in einem rechnersystem
EP2504738B1 (de) Parallelisierte programmsteuerung
EP0851348B1 (de) Verfahren und Vorrichtung zum Implementieren eines echtzeitfähigen Steuerprogramms in einem nicht-echtzeitfähigen Betriebsprogramm
DE69923658T2 (de) Dynamische speicherplatzzuordnung
DE102010043569A1 (de) Verfahren und Vorrichtung zum Planen von Aufgaben zur Steuerung von Hardwareeinrichtungen
DE19822543A1 (de) Verfahren zum Zuteilen von Aufträgen, Datenverarbeitssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium
EP0010570A2 (de) Verfahren und Einrichtung zur selbstadaptiven Zuordnung der Arbeitslast einer Datenverarbeitungsanlage
DE112011101759B4 (de) Sampling von Leerlauftransitionen
WO2018091329A1 (de) Vorrichtung und verfahren zum bearbeiten von aufträgen
DE102016221526A1 (de) Vorrichtung und Verfahren zum Bearbeiten einer Mehrzahl Aufgaben
DE102013022564B4 (de) Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler
DE112018007428T5 (de) Vorrichtung zur informationsverarbeitung, tuningverfahren undtuningprogramm
DE102017130552B3 (de) Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung
DE102013114451B4 (de) Verfahren zum Verteilen einer Prozessorlast auf Echtzeit-Prozessorthreads
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE60037972T2 (de) Verfahren und Gerät zum Anbieten von Betriebsmitteln in einem Internet-Gerät
DE102008020782B4 (de) Verfahren zur parallelen Verarbeitung von Programmen sowie zur Durchführung des Verfahrens geeigneter Prozessor
DE10360535B4 (de) Einrichtung und Verfahren zur Steuerung und Kontrolle von Überwachungsdetektoren in einem Knoten eines Clustersystems
DE102017206626A1 (de) Verfahren und Vorrichtung zum Steuern von Prozessen
DE112018003505T5 (de) Zugriffssteuereinrichtung
DE102021101309A1 (de) Elektronische steuervorrichtung
EP3163444B1 (de) Rechnerverbund mit automatisierter anforderung und zuordnung von cloud-ressourcen
DE112021007903T5 (de) Informationsverarbeitungsvorrichtung, auftragsausführungs-system und steuerungsverfahren
DE102005051101A1 (de) Verfahren zum Implementieren von Software-Timern und Datenverarbeitungssystem
DE102022209700A1 (de) Gerät mit ausschließlicher Zuordnung von Ressourcen an neuronale Netze

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed