Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  PIdleScheduler.ipdl   Sprache: unbekannt

 
/* -*- tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

include protocol PBackground;
using mozilla::TimeDuration from "mozilla/TimeStamp.h";
[MoveOnly] using mozilla::ipc::SharedMemoryHandle from "mozilla/ipc/SharedMemory.h";
namespace mozilla {
namespace ipc {

/**
 * PIdleScheduler is the protocol for cross-process idle scheduling.
 * Only child processes participate in the scheduling and parent process
 * can run its idle tasks whenever it needs to.
 *
 * The scheduler keeps track of the following things.
 * - Activity of the main thread of each child process. A process is active
 *   when it is running tasks. Because of performance cross-process
 *   counters in shared memory are used for the activity tracking. There is
 *   one counter counting the activity state of all the processes and one
 *   counter for each process. This way if a child process crashes, the global
 *   counter can be updated by decrementing the per process counter from it.
 * - Child processes running prioritized operation. Top level page loads is an
 *   example of a prioritized operation. When such is ongoing, idle tasks are
 *   less likely to run.
 * - Idle requests. When a child process locally has idle tasks to run, it
 *   requests idle time from the scheduler. Initially requests go to a wait list
 *   and the scheduler runs and if there are free logical cores for the child
 *   processes, idle time is given to the child process, and the process goes to
 *   the idle list. Once idle time has been consumed or there are no tasks to
 *   process, child process informs the scheduler and the process is moved back
 *   to the default queue.
 */
async protocol PIdleScheduler {
  manager PBackground;

child:
  async IdleTime(uint64_t id, TimeDuration budget);

parent:
  async InitForIdleUse() returns (SharedMemoryHandle? state, uint32_t childId);
  async RequestIdleTime(uint64_t id, TimeDuration budget);
  async IdleTimeUsed(uint64_t id);

  // Child can send explicit Schedule message to parent if it thinks parent
  // process might be able to let some other process to use idle time.
  async Schedule();

  // Note, these two messages can be sent even before InitForIdleUse.
  async RunningPrioritizedOperation();
  async PrioritizedOperationDone();

  // Ask if now would be a good time to GC
  async RequestGC() returns(bool may_gc);

  // Let the parent know when we start a GC without asking first.
  async StartedGC();

  // Called for ending any kind of GC.
  async DoneGC();

  // This message is never sent. Each PIdleScheduler actor will stay alive as
  // long as its PBackground manager.
  async __delete__();
};

}  // namespace ipc
}  // namespace mozilla

[ Dauer der Verarbeitung: 0.24 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge