A method for scheduling functions for execution immediately or later in
time by the scheduling processor or another processor of a shared memory
multiprocessor computer system such as a NUMA machine. Associated with
each of the multiple processors is a data structure for scheduling the
execution of specified functions by the processor. These multiple data
structures with associated locks allow for simultaneous access by
processors to their data structures and thereby avoid the bottleneck
inherent in the prior approach of providing only a single, global data
structure for all processors. In addition, the method allows any processor
to call a scheduling function to add a specified function to the data
structure of any of the processors. Processor loads are balanced by moving
scheduled specified functions from one processor to another. Scheduled
functions can also be moved from one processor to another to allow a
processor to be taken offline for service.
Um método para programar funciona para a execução imediatamente ou mais tarde a tempo pelo processador programando ou por um outro processador de um sistema computatorizado compartilhado do multiprocessor da memória tal como uma máquina de NUMA. É associada com o cada um dos processadores múltiplos uma estrutura de dados para programar a execução de funções especificadas pelo processador. Estas estruturas de dados múltiplas com fechamentos associados permitem o acesso simultâneo por processadores a suas estruturas de dados e evitam desse modo o bottleneck inerente na aproximação prévia de fornecer somente uma única, estrutura de dados global para todos os processadores. Além, o método permite que todo o processador chame uma função programando para adicionar uma função especificada à estrutura de dados de alguns dos processadores. As cargas do processador são balançadas por funções especificadas programadas móveis de um processador a outro. As funções programadas podem também ser movidas de um processador para outro para permitir que um processador seja feito exame fora de linha para o serviço.