CA1296432C - Controlled dynamic load balancing for a multiprocessor system - Google Patents

Controlled dynamic load balancing for a multiprocessor system

Info

Publication number
CA1296432C
CA1296432C CA000554809A CA554809A CA1296432C CA 1296432 C CA1296432 C CA 1296432C CA 000554809 A CA000554809 A CA 000554809A CA 554809 A CA554809 A CA 554809A CA 1296432 C CA1296432 C CA 1296432C
Authority
CA
Canada
Prior art keywords
processor
processors
new program
parameters
assignment
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.)
Expired - Lifetime
Application number
CA000554809A
Other languages
French (fr)
Inventor
Thomas Patrick Bishop
Mark Henry Davis
James Stuart Peterson
Grover Timothy Surratt
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.)
NCR Voyix Corp
Original Assignee
American Telephone and Telegraph Co Inc
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 American Telephone and Telegraph Co Inc filed Critical American Telephone and Telegraph Co Inc
Application granted granted Critical
Publication of CA1296432C publication Critical patent/CA1296432C/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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

Abstract

CONTROLLED DYNAMIC LOAD BALANCING
FOR A MULTIPROCESSOR SYSTEM

Abstract An apparatus for allowing a system administrator, application programmer, and/or program user to adjust the processor assignment function in a multiprocessor system. The system administrator controls the assignment function by defining certain system variables and flags. The application programmer can adjust the assignment function by causing allocation parameters to be passed in a system call before execution of the assignment function. To adjust the assignment function, the program user executes a system command that inserts similar allocation parameters into the program object code file stored in a file system on the multiprocessor system. The program executing the assignment function is responsive to the system variables and flags as well as the allocation parameters and performs the assignment function as it has been adjusted on a system, program or user level basis.

Description

i2964~2 CONTROLLED DYNAMIC LOAD BA~ANCING
FOR A MULTIPROCESSOR SYSTEM

Technical Field The invention relates generally to multiprocessor systems and more particularly to dynamic load balancing in a multiprocessor system.
Problem In a multiprocessor system, it is desirable to distribute the processing load among the various processors in the system. This function is often referred to as dynamic load balancing or processor assignment~ Prior art systems have performed this function by utilizing fixed algorithms. one such algorithm is for all processors in the system to sequentially accept programs for execution as the programs require execution. Programs are often referred to as new jobs or processes. Another algorithm is to direct new programs to the processor that has the least amount of work. The techniques utilized by the prior art work well in certain types of processing environments. However, they suffer from the problems of not allowing the system administrator to adjust the dynamic loading algorithm to meet different conditions. In addition, the application programmer and/or user of a new program being assigned are given no control over how the processor assignments are made. The application programmer or user often have important information on which processor within a multiprocessor system should receive a particular job.
The problem then is to allow the assignment of processors for particular jobs to be adjusted by the system administrator and further to allow the application programmer or user of the program to adjust what processor or type of processor is utilized to run a particular program.
Solution This invention is directed to solving these and other problems and disadvantages of the prior art. According to the invention, in a multiprocessor system, the system ,'i i~96~32 administrator, application programmer, and/or user of a new program being assigned are given the capability of adjusting the assignment function that determines which processor of the system will execute a given program.
Advantageously, this allows the multiprocessor system to be composed of a variety of different types of processors each having different capabilities and different resources.
Further, it allows the application programmer or program user to efficiently place requirements on the processor assi~nment function to be utilized, thus allowing certain types of operations heretofore not capable of being implemented on a multiprocessor system to be so implemented in a straightforward manner.
The method controls the allocation of processor reso~rces to a new program in a multiprocessor system by performing the steps of storing object code for a new program in the system, inserting a set of processor allocation parameters into the stored object code, reading the stored object code, and allocating one of the processors in response to the processor allocation parameters in the read object code.
The step of inserting comprises the step of writing the processor allocation parameters into the stored object code in response to a user command. The method further provides that other processor allocation parameters can be made available for use in the allocation step in response to a request to execute the stored object code. In addition, the system stores a plurality of system processor allocation flags, and the allocation step is responsive to both the system flags and processor allocation parameters for performing the allocation of one of the processors to execute the read object code.
In accordance with one aspect of the invention there is provided a method for controlling the allocation of system resources in a multiprocessor system having a plurality of processors and one of said processors storing an object code file for a new program and said object code file comprising a header and code portions, comprising the steps of: inserting a set of processor allocation parameters into the header portion of said ~tored object code file; reading said stored object code file; and allocating one of said processors in response to said processor allocation parameters in said header portion of t:he read object code file to execute the code portion of said read object code file.
In accordance with another aspect of the invention there is provided an apparatus for controlling the allocation of processor resources in a multiprocessor system having a plurality of processors one of said processors storing o~ject code file for a new program and said object code file having a header and code portions, comprising: means for inserting a set of processor allocation parameters into said header portion of said stored object code file; means for reading said stored object code file; and means for allocating one of said processors in response to said processor allocation parameters in said header portion of the read object code to execute said code portion of said read object code.
These and other advantages and features of the present invention will become apparent from the following description of an illustrative embodiment of the invention taken together with the drawing.
Brief Descri~tion of the Drawinq FIG. 1 illustrates, in block diagram form, a multiprocessor system for utilizing the present invention;
FIG. 2 illustrates, in flow ~hart form, the processor assignment function as implemented by the multiprocessor system of FIG. 1;
FIG. 3 illustrates, in table form, the flag structure that contains the system flags used for the processor assignment function;
FIG. 4 illustrates, in table form, the flags and parameters transferred to PM process 108 of computer 101;
FIG. 5 illustrates, in greater detail, a portion of FIG. 4;
FIG. 6 illustrates, in greater detail, another portion of FIG. 4; and 3a FIGS. 7 through 13 illustrate, in greater detail, the functions performed by the flow chart of FIG. 2.
Detailed Description FIG. 1 shows a multiprocessor system having a plurality of computers 101 through 106 interconnected by bus 107. Each computer operates under control of an operating system which illustratively is similar to a version of the UNIX operating system described in the article by X. Thompson, "UNIX
Implementation", The Bell System Technical Journal, July-August, 1978, Volume 57, No. 6. The initiation of a new program in the system illustrated in FIG. 1 is performed by an "exec" command which results in the program being automatically assigned to one of the computers also referred to as processors and illustrated in FIG. 1. In order to make that assignment, allocation of resources and dynamic load balancing is performed by process manager (PM) function 108 being executed by the kernel of computer 101. The latter computer is designated as the host computer of the system, FIG. 1. The execution of an exec system call by any computer of FIG. 1 results in PM function 108 being executed by the kernel of computer 101. The latter function's use of flags, variables, and parameters that are specified by the system administrator, application programmer, and/or program user to control the processor assignment, is the subject of this nventlon .

trade-mark , lZ96432 The system adlllinistrator first determines which one of five distinct assignment methods is to be utilized by setting a value into the selectsw variable. The different methods that may be selected are discussed in greater detail with respect to FIGS~ 7 through 13. For the fifth method, the system 5 administrator, application programmer and1or user can specify further adjustments for the allocation of processors. The system administrator adjusts the allocation of programs within the multiprocessor system by controlling the state of the flags in the flag structure illustrated in FIG. 3. The Mag structure is maintained by the kernel of computer 101. A detailed explanation of how the 10 execution of PM function 108 utilizes that structure to allocate computer resources is given with respect to FIGS. 7 through 13.
The application programmer and the user of the program can make adjustments to the fifth method by means of a sysmulti system call or an massign shell command, respectively. The effect of these adjustments is 15 modifled by those adjustments made by the system administrator. To understand how the application programmer passes his/her adjustments to the execution PM function 108, it is necessary to understand how the execution of a new program is implemented on the multiprocessor system of FIG. 1. The application programmer first writes a requesting program that will request the 20 execution of the new program and that requesting program is presently being executed by a process on one of the processors on FIG. 1. For sake of example, assume that this processor is processor 102. The requesting program written by the application programmer first executes a fork command which replicates the executing process into a child and a parent process. These processes share the 25 same program but have different data storage. The child process then executesthe sysmulti system call. Parameters deflned in this system call specify in a standard manner the adjustments that the application programmer wishes to make to the dynamic loading function performed by the execution of PM
function 108.
After executing the sysmulti system call, the child process then executes the exec system call. More information concerning how the standard UNIX
operating system fork and exec system calls function may be found in the previously mentioned article by Thompson.

The application programmer determines the adjustments that are to be made in the dynamic loading function at the tlme the source code of the requesting program is written. Upon execution of the sysmulti system call, the parameters defining the application programmer's adjustments are initially 5 stored in the ublock of the process in a standard manner~ These parameters arethen passed to the kernel of computer 101 for use with PM function 108 during the execution of the exec system call~
The user of the program inputs the user's adjustments by the execution of the massign shell command~ For example, if a user wished to execute a word 10 processing program on a particular processor of the multiprocessor system illustrated in FIG. 1, the user would execute the massign command specifying a processor to which the program i9 to be assigned and the a.out file containing the word processing program~ The massign command then inserts in a standard manner the latter information into the a~out file~ The massign command is a 15 very powerful tool since it allows the same program to be tailored with respect to system resources to meet the needs of individual program users~
FIG. 2 illustrates the procedure for controlling the allocation of computer resources and a overall view of the assignment function itself. Block 201 allowsthe system administrator to administer the system flags and the selectsw 20 variable that are utilized in the assignment function. The selectsw variable and system flags are stored by computer 101 and are administered by the system administrator using well-known techniques. The structure that contains the system flags is illustrated in FIG. 3.
Block 202 allows the program user to utilize the massign command for 25 adjusting the assignment function. If the user executes the latter command, block 203 i9 executed, and the parameters that specify these adjustments are stored in the a.out file.
Block 204 allows the application program to execute a sysmulti system call before executing the exec system call. If the sysmulti system call has been30 executed, block 205 is executed, and the parameters specified in the sysmultisystem call are stored in the ublock of the executing child process by block 205.
Block 206 is executed by the exec system call which reads the parameters that have been specified and transmits these along with other information to the kernel of computer for use with PM process 108.

~296432 P~f function 108 then e~ecutes blocks 207 through 210~ Block ~07 checks to see if the selectsw variable specifles that the flrst four load balancing methods are to be utilized as indicated by block 209 or whether the f~fth method that uses the system flags and parameters is to be utilized a~ indicated by 208. The procedure used tc> execute blocks 207 through 210is referred to as the assignpe function.
During the execution of the exec system call, the latter system call reads the parameters from the ublock and/or from the a.out file and transfers these parameters to PM process 108. In order to make the processor assignment, the 10 kernel of computer 101 calls the assignpe procedure in PM function 108. The flags and parameters that have been determined by the system administrator, application programmer, and user are passed to the latter function in the structure illustrated in FlG. 4. The peselset and assign structures of FIG. 4 are further defined in FIGS. 5 and 6, respectively.
The assignpe procedure is shown in greater detail in FIGS. 7 through 13. Blocks 701 through 708 implement the load balancing techniques of block 20~ of FIG. 2. Block 701 examines the selectsw variable. If the contents of the selectsw variable equals 0, then block 702 is executed. The latter block uses a specific technique for assigning processors, and that technique i8 to 20 examine the contents of the selectpe variable for the identity of the processor that is to be utilized for the execution of all programs. The assignment is thengiven to the identi~led processor. The contents of the selectpe variable are determined by the system administrator.
If selectsw does not equal 0, block 703 is executed; and if selectsw equals 25 1, then block 704 is executed after block 703. For convenience of nomenclature, all computers illustrated in FIG. 1 with the exception of computer 101 which is the host computer or host processor element, PE, are designated as adjunct computers or processor elements. Block 704 implements an assignment method whereby as the programs or jobs are received for assignment, the first program 30 is assigned to the host PE and then the next is assigned to an adjunct PE with the third being assigned to a host PE with the fourth being assigned to another adjunct PE. If selectsw does not equal 1, decision block 705 is executed. If theselectsw variable equals a 2, then block 70B is executed. The latter block implements an assignment method whereby the programs are assigned to the lX9643X

host and adjunct computers in a cycling manner with each of the computers receiving the same number of assignments. If the selectsw variable does not equal 2, then decision block 707 is executed. If the selectsw variable equals 3,the~n block 708 is executed and the programs are assigned by cycling through 5 only the adjunct computers.
If the contents of the selectsw variable are greater then 3, then the remainder of FIGS. 7 through 13 is executed implementing block 208 as illustrated in FIG. 2. First, in decision block 809 of FIG. 8, the state of the PEFLAG of FIG. 5 is tested to determine whether this flag is set or not. If that10 flag is set, then a specific computer may be designated in the PE_ASSIGN
variable of FIG. 4 to execute the job. The specification of that computer is made by the application programmer or the user. If the PEFLAG flag is set, decision block 810 is executed to determine whether or not a specific computer has been designated. The contents of the PE_ASSIGN variable are utilized to 15 make that determination. If a specific computer has not been specified, block 818 is executed. If a particular computer has been designated, decision block 811 is executed to determine whether the specified computer has sufficient memory; and decision block 812 is subsequently executed to determine whether the requested computer is of the correct type. If both of the conditions20 tested for by bloclcs 811 and 812 are met, block 813 is executed which assigns the specified computer to execute the present job. If those conditions that are tested for by blocks 811 and 812 are not met, then an error is returned via block 814.
Decision block 818 checks the MAXCO~'AT flag. The latter flag being 25 set requires that every new job be assigned to the same computer that executed the exec system call. The latter computer i9 normally referred to as the oldusercomputer. If the MAXCO~AT flag is set, decision block 819 is executed to determine whether or not the olduser computer is of the correct type to execute the new job. If the olduser computer is of the correct type, decision block 820 is 30 executed to ascertain whether or not the olduser computer has sufficient memory to execute the new job. If both of the conditions that are checked for by blocks 810 and 820 are true, block 821 is executed which assigns the new job to the olduser computer. If either block 810 or 820 fails, an error is returned via block 822.

During e~;ecution, the assignpe procedure creates a table ~vhich defines which computers are available or unavailable. If the MAXCOMPAT flag is not set, block 825 is executed. Block 8~5 marks as unavailable all of the computers with insufficient memory. Then, block 826 marks as unavailable the computers 5 which are of the incorrect type.
After execution of block 828, decision block 901 of FIG. 9 is executed to determine whether or not the PRIFLAG flag is set. This flag is stored in the structure illustrated in FIG. 5. If the PRIFLAG is set, only public computers are eligible for assignment. The difference between public and private 10 computers is one of designation by the system administrator. For a variety ofreasons, the system administrator can des;gnate one or more computers as private and restrict the utilization of these computers to certain tasks or users.
If the PRIFLAG Mag is set, decision blocks 902 and 903 are executed to determine whether or not any public compùters have sufficient memory and are 15 of the correct type. If no public computers meet the two requirements tested for by blocks 902 and 903, block ~05 is executed and an error is returned. If the requirements of blocks ~02 and ~03 are satisfied, 906 is executed, and all private computers are marked as unavailable.
Next, decision block ~10 i9 executed to determine whether or not the 20 REQFLAG flag is set. The latter flag is stored in the structure illustrated in FIG 5. The latter flag being set indicates that computer assignment is to be carried out according to the parameters set by the massign command or sysmulti system call. These parameters are illustrated in FIG. 6 If the REQFLAG flag is set, the first parameters checked are those which are 25 contained in entry 607 of FIG. 6. There are five parameter flags in entrv 607:
PS CURRENT, PS_PARENT, PS_MABS, PS_FSPEC, and PS_EXPLICIT.
The PS_MABS and PS_EXPLICIT are not used as part of the processor assignment. Decision block 1011 of FIG. 10 checks the PS_CUE~RENT flag. If this latter flag is set, it indicates that the new program is to be executed on the 30 olduser processor. If the PS CURRENT flag is set, decision block 1012 is executed to see if the olduser processor is marked as available. If the olduser processor is marked available, then the program is assigned to the olduser processor by block 1013. If the olduser processor is not available, then an error is returned by block 1014.

1~964~ ~

If the PS_CURRENT flag was not set, then decision block 1018 is executed to check whether or not the PS_PARENT flag is set. If the PS_PARENT flag is set, an attempt is made to assign the new program to the processor that is running the parent process of the process that executed the 5 e~ec system call. If the PS_PARENT flag is set, decision block 1019 is executed to see if the parent processor is marked available. If the parent processor is marked available, the new program is assigned to this processor by block 1020.
Otherwise, an error is returned via block 1021.
rhe next flag to be checked is the PS_FSPEC flag which is checked by 10 decision block 1024~ This flag indicates whether the processor local to a specific file descriptor given in entry 606 of FIG. 6 is to be used as the processor to receive the assignment. If the PS_FSPEC flag is set, then decision block 1025 checks to see if the processor local to this file is available. If that processor is available, then the program is assigned to that processor by block 1026. If the 15 processor is not available, then an error is returned by block 1027.
If a processor assignment has not been made as a result of the checks performed in decision blocks 1011, 1018 and 1024 of FIG. 10, blocks 1101 through 1108 of FIG. 11 are executed to narrow down the number of processors a~ailable for receiving the program by applying the remainder of the parameters 20 specified in FIG. 6. The content~ of entries 601 and 602 specify whether certain types of processors are allowed or disallowed, respectively. There are three types of processors that can be allowed or disallowed: host computer (PS_HOSTFLAG), computation server processor (PS_CS), and file server processor (PS_FS). Decision block 1101 examines entry 601. If the contents of 25 the latter entry are not zero, block 1102 is executed marking as unavailable all processors of processor types not in the allowed set. Next, decision block 1103 determines whether the disallowed set which is in entry 602 is null, and if it is not, block 1104 marks as unavailable all processors of processor types in entry 602.
Entries 603 and 604 of FIG. 6 allow the specification of whether or not each processor of FIG. 1 is to be included or excluded from being considered forthe assignment to execute the new program. Blocks 1105 and 1106 determine the processors to be included, and blocks 1107 and 1108 determine the processors to be excluded.

i296432 After the above operations have been performed, decision block 1109 checks to see if there are any processors marked available. If no processors remain marked available, an error is returned by block 1110. If one or more processors are available, the remainder of the system flags are now utilized to 5 malce the processor assignment. Decision block 1111 checks to see if the CPUFLAG flag is set. The latter Mag indicates that the processor assignment is to be based on processor loading, and that processors having less idle time thena certain amount are marked as unavailable. If the CPUFLAG flag is set, this determination is made by finding the processor with the maximum idle time 10 (MIT). Then, block 1112 marks as unavailable those processors that have less ;dle time than given by the formula MIT - MIT/2A. The variable A represents the variable CFUZZY which is a value that is predefined by the system administrator. CFUZZY is stored in the structure illustrated in FIG. 5.
Next, the SHTXTFLAG flag is checked by decision block 1113. This flag 15 being set insures that if any of the remaining available processors have a sharable copy of the a.out file, assignment will be made to one of them. If the SHTXTFLAG flag is set, control is passed to decision block 1114 which determines whether or not there are any processors with a sharable copy of the a.out file. If there are processors with a sharable copy of the a.out file, 20 block 1115 is executed; and the processors that do not have a sharable copy of the a.out file are marked as unavailable.
Next, decision block 1201 of FIG. 12 is executed. That decision block checks whether or not the ME~LAG flag is set. When the latter flag is set, every processor with free global memory less than a specified amount is marked 25 as unavailable. This determination is made by finding the processor with the maximum free global memory and then eliminating processors that have less free global memory than the maximum free global memory minus the maximum free global memory divided by 2MFUZZy. The variable ~UZZY is a variable determined by the system administrator. If the ME~LAG flag is set, 30 block 1202 is executed which marks the processors as unavailable that have less than the required amount of free memory. In block 1202, MFM represents maximum free global memory and the variable B represents the variable MFUZZY.

129S4;~2 Next, the FILEFLAG flag is checked by decision block 1203. The latter flag when set indicates that the number and distribution of open files of the process e~ecuting the exec system call are to be used as a criterion for making the processor assignment. This decision is made in decision block 1204 by 5 determining the processor that has the most open files of the executing process and whether or not this number of files is greater than or equal to the value inthe FILELIMIT variable of the structure illustrated in FIG. 5. The latter variable is determined by the system administrator. If these conditions are met,then block 1205 is executed which assigns the new program to the processor 10 with the most open files. If these conditions are not met, then decision block 120B is executed.
Blocks 1206 through 1212 perform the following functions. If both AOUTFLAG and OLDUSERFLAG flags are set and if the number of remote processes associated with the process executing the exec system call is less than 15 or equal to STUBLIMIT variable, an attempt is first made to assign the process to the processor that is local to the a.out file commonly called the a.out processor. A remote process allows the executing process to gain access to resources of another processor. If the latter processor is not available, a second attempt is made to assign the program to the processor that executed the exec 20 system call, commonly called olduser processor. If neither of these processors are available or if the conditions tested for by 1206,1207, and 1208 are not met, then control is passed to decision block 1301 of FIG. 13. If the conditions tested for by decision blocks 1206,1207, and 1208 are met and the a.out processor is available, then the program is assigned to the a.out processor by block 1210. If25 the a.out processor is not available, decision block 1211 checks whether or not the olduser processor is available. If the olduser process is available, the program is assigned to the olduser process by decision block 1212.
If any of the conditions tested for by decision blocks 1206,1207, or 1208 were not met, decision block 1301 is executed. If the OLDUSER flag is set and 30 decision block 1302 determines that the olduser processor is available, the program is assigned to the olduser processor by block 1303. If either of the previously mentioned conditions are not met, decision block 1304 is executed. Ifthe AOUTFLAG flag is set and the a.out processor is available, decision block 130B is executed and assignment is made to the a.out processor. If ~2964~ ~

assignment is not made to either the olduser or a~out processor, block 1307 is e~cecuted, and the program is assigned to the available processor with the most iclle memory~
It is to be understood that the above-described embodiment is merely 5 illustrative of the principles of the invention and that other arrangements may be devised by those skilled in the art without departing from the spirit and scope of the invention~

Claims (36)

1. A method for controlling the allocation of system resources in a multiprocessor system having a plurality of processors and one of said processors storing an object code file for a new program and said object code file comprising a header and code portions, comprising the steps of:
inserting a set of processor allocation parameters into the header portion of said stored object code file;
reading said stored object code file; and allocating one of said processors in response to said processor allocation parameters in said header portion of the read object code file to execute the code portion of said read object code file.
2. The method of claim 1 wherein said step of inserting comprises the step of writing said processor allocation parameters into said header portion said stored object code in response to a user command.
3. The method of claim 2 further comprises the step of providing other processor allocation parameters for use by said allocating step in response to asystem call.
4. The method of claim 2 further comprises the step of storing system processor allocation flags and said allocating step further in response to said stored system and processor allocation flags allocates said one of said processors.
5. The method of claim 1 where said step of inserting comprises the step of writing a subset of said processor allocation parameters into said portion ofsaid stored object code in response to a user command;
said method further comprises the steps of storing a subset of said processor allocation parameters in response to a system call;
storing system processor allocation flags; and said allocating step further in response to said stored system processor allocation flags allocates said one of said processors.
6. The method of claim 5 wherein said allocating step further comprises the steps of:
checking one of said system flags to determine whether a specific processor assignment is allowed;

verifying that a specific processor request has been made upon said specific processor assignment being allowed; and assigning said specific processor upon said specific processor request having been made.
7. The method of claim 6 wherein said allocating step further comprises the steps of:
checking whether a second one of said system flags designating that the processor requesting the execution of a new program be assigned; and assigning said requesting processor to execute said new program upon said second one of said system flags being set.
8. The method of claim 7 wherein said processors are grouped either as public and private processors and said allocating step comprises the steps of:
checking whether a third one of said system flags indicating that only public processors are to be assigned to execute said new program;
checking to assure that at least one of said public processors are available to execute said new program; and marking all private processors of said system as unavailable upon said third one of said system flags being set and at least one of said public processors being available.
9. The method of claim 8 wherein said allocating step further comprises the steps of:
checking a fourth one of said system flags indicating that ones of said processor allocation parameters designating the type of processor to be used forassignment are to be examined;
examining a first one of said parameters designating that the processor executing the request for processor assignment be given the assignment;
assigning said executing processor to execute said new program upon said first one of said parameters being set;
examining a second one of said parameters designating that the processor that requested the execution of the program that is currently requesting assignment of said new program be utilized to execute said new program;
assigning said processor that requested the execution of the program requesting the execution of said new program to execute said new program upon said second one of said parameters being set;

checking a third one of said parameters designating that a specified processor associated with a given file is to be assigned to execute said new program;
verifying that the processor associated with the specified file is available by examining a fourth one of said parameters upon said third one of said parameters being set; and assigning said associated processor to execute said new program upon the examined fourth one of said parameters indicating the availability of said associated processor.
10. The method of claim 9 wherein a fifth one of said processor allocation parameters designates processor types allowable for processor assignment and a sixth one of said processor allocation parameters designates processor types disallowed for said processor assignment and a seventh one of said processor allocation parameters designates processors to be included in the allowable processors for said processor assignment and an eighth one of said processor allocation parameters designates processors to be excluded from allowable processors for the processor assignment and said allocating step further comprises the steps of:
marking unavailable all processors of processor types not designated in said fifth one of said processor allocation parameters;
marking unavailable all processors of said processor types designated in said sixth one of said processor allocation parameters;
marking unavailable all processors not designated in said seventh one of said processor allocation parameters; and marking unavailable all processors designated in said eighth one of said processor allocation parameters.
11. The method of claim 10 wherein said allocating step further comprises the steps of:
checking a fifth one of said system flags indicating that information concerning processor loading is to be utilized in determining the processor assignment;
determining the loading for each of said processors;

calculating a load value on the basis of the processor with the least load;
and marking as unavailable processors with loading in excess of the calculated value.
12. The method of claim 11 wherein said allocating step further comprises the steps of:
checking a sixth one of said system flags indicating that information concerning whether one of said processors is already executing another occurrence of said new program;
determining whether any of said processors are executing another occurrence of said new program upon said sixth one of said system flags being set; and marking as unavailable all processors that are not executing another occurrence of said new program upon one of said processors executing another occurrence of said new program.
13. The method of claim 12 wherein said allocating step further comprises the steps of:
checking a seventh one of said system flags indicating that the amount of free memory of each of said processors is to be utilized in making the processorassignment;
determining the amount of free memory of each of said processors;
determining the processor that has the maximum amount of free memory available;
calculating a lower value of free memory on the basis of the determined maximum amount of free memory; and marking as unavailable all processors having less than said lower value of free memory.
14. The method of claim 13 wherein said allocating step further comprises the steps of:
checking an eighth one of said system flags indicating whether or not the number of open files related to said new program on one of said processors is tobe utilized in making the processor assignment;

determining the one of said processors with the open files upon said eighth one of said system flags being set;
verifying that said one of said processors with the most open files is available; and assigning said processor with the most open files to execute said new program upon said processor with the most open files being marked available.
15. The method of claim 14 wherein said system stores a plurality of system variables and a first one of said system variables contains a maximum limit of the number of processors associated with a new program and said allocating step comprising the steps of:
checking a ninth one of said system flags indicating that the processor associated with the file containing the object code of said new program is to beutilized for processor assignment;
checking a tenth system flag indicating that the processor requesting execution of said new program is to be utilized in said processor assignment;
comparing the number of processors associated with said program requesting the execution of said new program;
assigning said processor associated with the file that contains the object code of said new program to execute said new program upon said ninth system flag being set and said tenth system flag being set and the number of processorsassociated with said program requesting the execution of said new program being less than said first one of said system variables and said processor associated with said file containing said object program being available; and assigning said processor requesting execution of said new program upon said processor associated with said file being marked unavailable and said ninthsystem flag being set and said tenth system flag being set and the number of processors associated with said program requesting the execution of said new program less than said first one of said system variables.
16. The method of claim 15 wherein said allocating step further comprises the step of assigning said requesting processor to execute said new program upon said tenth system flag being set.
17. The method of claim 16 wherein said allocating step further comprises the step of assigning said processor associated with said file having said new program to execute said new program upon said ninth system flag being set.
18. The method of claim 17 wherein said allocating step further comprises the steps of:
determining the available memory of each of the processors marked as available; and assigning the processor with the greatest amount of available memory that is marked as being available to execute said new program.
19. An apparatus for controlling the allocation of processor resources in a multiprocessor system having a plurality of processors one of said processors storing object code file for a new program and said object code file having a header and code portions, comprising;
means for inserting a set of processor allocation parameters into said header portion of said stored object code file;
means for reading said stored object code file; and means for allocating one of said processors in response to said processor allocation parameters in said header portion of the read object code to execute said code portion of said read object code.
20. The apparatus of claim 19 wherein said means of inserting comprises means for writing said processor allocation parameters into said header portion said stored object code in response to a user command.
21. The apparatus of claim 20 further comprises means for providing other processor allocation parameters for use by said allocating means in response to a system call.
22. The apparatus of claim 20 further comprises means for storing system processor allocation flags and said allocating means further responsive to said stored system and processor allocation flags for allocating said one of said processors.
23. The apparatus of claim 19 where said means for inserting comprises means for writing a subset of said processor allocation parameters into said header portion of said stored object code in response to a user command;
said apparatus further comprises means for storing a subset of said processor allocation parameters in response to a system call;
means for storing system processor allocation flags; and said allocating means further responsive to said stored system processor allocation flags for allocating said one of said processors.
24. The apparatus of claim 23 wherein said allocating means further comprises:
means for checking one of said system flags to determine whether a specific processor assignment is allowed;
means for verifying that a specific processor request has been made upon said specific processor assignment being allowed; and means for assigning said specific processor upon said specific processor request having been made.
25. The apparatus of claim 24 wherein said allocating means further comprises:
means for checking whether a second one of said system flags designating that the processor requesting the execution of a new program be assigned; and means for assigning said requesting processor to execute said new program upon said second one of said system flags being set.
26. The apparatus of claim 25 wherein said processors are grouped either as public and private processors and said allocating means comprises:
means for checking whether a third one of said system flags is set indicating that only public processors are to be assigned to execute said new program;
means for checking to assure that at least one of said public processors are available to execute said new program; and means for marking all private processors of said system as unavailable upon said third one of said system flags being set and one or more or said public processors being available.
27. The apparatus of claim 26 wherein said allocating means further comprises:
means for checking a fourth one of said system flags indicating that ones of said processor allocation parameters designating the type of processor to be used for assignment are to be examined;
mean for examining a first one of said parameters designating that the processor executing the request for processor assignment be given the assignment;

means for assigning said executing processor to execute said new program upon said first one of said parameters being set;
means for examining a second one of said parameters designating that the processor that requested the execution of the program that is currently requesting assignment of said new program be utilized to execute said new program;
means for assigning said processor that requested the execution of the program requesting the execution of said new program to execute said new program upon said second one of said parameters being set;
means for checking a third one of said parameters designating that a specified processor associated with a given file is to be assigned to execute said new program;
means for verifying that the processor associated with the specified file is available by examining a fourth one of said parameters upon said third one of said parameters being set; and means for assigning said associated processor to execute said new program upon the examined fourth one of said parameters indicating the availability of said associated processor.
28. The apparatus of claim 27 wherein a fifth one of said processor allocation parameters designates processor types allowable for processor assignment and a sixth one of said processor allocation parameters designates processor types disallowed for said processor assignment and a seventh one of said processor allocation parameters designates processors to be included in theallowable processors for said processor assignment and an eighth one of said processor allocation parameters designates processors to be excluded from allowable processors for the processor assignment and said allocating means further comprises:
means for marking unavailable all processors of processor types not designated in said fifth one of said processor allocation parameters;
means for marking unavailable all processors of said processor types designated in said sixth one of said processor allocation parameters;
means for marking unavailable all processors not designated in said seventh one of said processor allocation parameters; and means for marking unavailable all processors designated in said eighth one of said processor allocation parameters.
29. The apparatus of claim 28 wherein said allocating means further comprises:
means for checking a fifth one of said system flags indicating that information concerning processor loading is to be utilized in determining the processor assignment;
means for determining the loading for each of said processors;
means for calculating a load value on the basis of the processor with the least load; and means for marking as unavailable processors with loading in excess of the calculated value.
30. The apparatus of claim 29 wherein said allocating means further comprises:
means for checking a sixth one of said system flags indicating that information concerning whether one of said processors is already executing another occurrence of said new program;
means for determining whether any of said processors are executing another occurrence of said new program upon said sixth one of said system flags being set; and means for marking as unavailable all processors that are not executing another occurrence of said new program upon one of said processors executing another occurrence of said new program.
31. The apparatus of claim 30 wherein said allocating means further comprises:
means for checking a seventh one of said system flags indicating that the amount of free memory of each of said processors is to be utilized in making theprocessor assignment;
means for determining the amount of free memory of each of said processors;
means for determining the processor that has the maximum amount of free memory available;

means for calculating a lower value of free memory on the basis of the determined maximum amount of free memory; and means for marking as unavailable all processors having less than said lower value of free memory.
32. The apparatus of claim 31 wherein said allocating means further comprises:
means for checking an eighth one of said system flags indicating whether or not the number of open files related to said new program on one of said processors is to be utilized in making the processor assignment;
means for determining the one of said processors with the most open files upon said eight one of said system flags being set;
means for verifying that said one of said processors with the most open files is available; and means for assigning said processor with the most open files to execute said new program upon said processor with the most open files being marked available.
33. The apparatus of claim 32 wherein said system stores a plurality of system variables and a first one of said system variables contains a maximum limit of the number of processors associated with a new program and said allocating means comprising:
means for checking a ninth one of said system flags indicating that the processor associated with the file containing the object code of said new program is to be utilized for processor assignment;
means for checking a tenth system flag indicating that the processor requesting execution of said new program is to be utilized in said processor assignment;
means for comparing the number of processors associated with said program requesting the execution of said new program;
means for assigning said processor associated with the file that contains the object code of said new program to execute said new program upon said ninth system flag being set and said tenth system flag being set and the number of processors associated with said program requesting the execution of said new program being less than said first one of said system variables and said processor associated with said file containing said object program being available; and means for assigning said processor requesting execution of said new program upon said processor associated with said file being marked unavailable and said ninth system flag being set and said tenth system flag being set and the number of processors associated with said program requesting the execution of said new program less than said first one of said system variables.
34. The apparatus of claim 33 wherein said allocating means further comprises means for assigning said requesting processor to execute said new program upon said tenth system flag being set.
35. The apparatus of claim 34 wherein said allocating means further comprises means for assigning said processor associated with said file having said new program to execute said new program upon said ninth system flag being set.
36. The apparatus of claim 35 wherein said allocating means further comprises:
means for determining the available memory of each of the processors marked as available; and means for assigning the processor with the greatest amount of available memory that is marked as being available to execute said new program.
CA000554809A 1986-12-22 1987-12-18 Controlled dynamic load balancing for a multiprocessor system Expired - Lifetime CA1296432C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US94170186A 1986-12-22 1986-12-22
US941,701 1986-12-22

Publications (1)

Publication Number Publication Date
CA1296432C true CA1296432C (en) 1992-02-25

Family

ID=25476922

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000554809A Expired - Lifetime CA1296432C (en) 1986-12-22 1987-12-18 Controlled dynamic load balancing for a multiprocessor system

Country Status (9)

Country Link
US (1) US5115505A (en)
EP (1) EP0272836B1 (en)
JP (1) JPH0628053B2 (en)
KR (1) KR970008524B1 (en)
BR (1) BR8706965A (en)
CA (1) CA1296432C (en)
DE (1) DE3789215T2 (en)
HK (1) HK108094A (en)
SG (1) SG116694G (en)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5241677A (en) * 1986-12-19 1993-08-31 Nippon Telepgraph and Telehone Corporation Multiprocessor system and a method of load balancing thereof
CA2067576C (en) * 1991-07-10 1998-04-14 Jimmie D. Edrington Dynamic load balancing for a multiprocessor pipeline
IL99923A0 (en) * 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5349682A (en) * 1992-01-31 1994-09-20 Parallel Pcs, Inc. Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors
US5504894A (en) * 1992-04-30 1996-04-02 International Business Machines Corporation Workload manager for achieving transaction class response time goals in a multiprocessing system
FR2692058B1 (en) * 1992-06-09 1994-07-29 Bull Sa TRANSACTIONAL PROCESSING SYSTEM BETWEEN A COMPUTER SERVER AND A PLURALITY OF WORKSTATIONS.
JP3003440B2 (en) * 1993-01-19 2000-01-31 株式会社日立製作所 Load distribution control method and distributed processing system
JP2814880B2 (en) * 1993-06-04 1998-10-27 日本電気株式会社 Control device for computer system constituted by a plurality of CPUs having different instruction characteristics
US5495603A (en) * 1993-06-14 1996-02-27 International Business Machines Corporation Declarative automatic class selection filter for dynamic file reclassification
US5437032A (en) * 1993-11-04 1995-07-25 International Business Machines Corporation Task scheduler for a miltiprocessor system
US5630129A (en) * 1993-12-01 1997-05-13 Sandia Corporation Dynamic load balancing of applications
EP0668564A1 (en) * 1994-02-22 1995-08-23 International Business Machines Corporation Resource measurement facility in a multiple operating system complex
US5915095A (en) * 1995-08-08 1999-06-22 Ncr Corporation Method and apparatus for balancing processing requests among a plurality of servers based on measurable characteristics off network node and common application
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
US5938722A (en) * 1997-10-15 1999-08-17 Mci Communications Corporation Method of executing programs in a network
FI106507B (en) 1998-04-09 2001-02-15 Nokia Networks Oy Processing of a data message in a network element in a telecommunications network
US6947987B2 (en) * 1998-05-29 2005-09-20 Ncr Corporation Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes
JP4292693B2 (en) * 2000-07-07 2009-07-08 株式会社日立製作所 Computer resource dividing apparatus and resource dividing method
US7113900B1 (en) 2000-10-24 2006-09-26 Microsoft Corporation System and method for logical modeling of distributed computer systems
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US7191446B2 (en) * 2001-06-01 2007-03-13 Texas Instruments Incorporated Method for resource management in a real-time embedded system
US20030236813A1 (en) * 2002-06-24 2003-12-25 Abjanic John B. Method and apparatus for off-load processing of a message stream
US7594233B2 (en) * 2002-06-28 2009-09-22 Hewlett-Packard Development Company, L.P. Processing thread launching using volunteer information
KR100497230B1 (en) * 2002-07-23 2005-06-23 삼성에스디아이 주식회사 Apparatus and method for driving a plasma display panel
US7072807B2 (en) 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US20040210623A1 (en) * 2003-03-06 2004-10-21 Aamer Hydrie Virtual network topology generation
US7058864B1 (en) * 2003-05-21 2006-06-06 Hewlett-Packard Development Company, L.P. Test for processor memory cache
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7613822B2 (en) * 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US7606929B2 (en) 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US7590736B2 (en) * 2003-06-30 2009-09-15 Microsoft Corporation Flexible network load balancing
US7567504B2 (en) * 2003-06-30 2009-07-28 Microsoft Corporation Network load balancing with traffic routing
US7778422B2 (en) 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US7614055B2 (en) * 2004-06-14 2009-11-03 Alcatel-Lucent Usa Inc. Selecting a processor to run an executable of a distributed software application upon startup of the distributed software application
US7634773B2 (en) * 2004-11-24 2009-12-15 Hewlett-Packard Development Company, L.P. Method and apparatus for thread scheduling on multiple processors
US7689993B2 (en) * 2004-12-04 2010-03-30 International Business Machines Corporation Assigning tasks to processors based at least on resident set sizes of the tasks
US7707578B1 (en) * 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US20060156291A1 (en) * 2005-01-12 2006-07-13 Dell Products L.P. System and method for managing processor execution in a multiprocessor system
US8825833B2 (en) * 2005-03-30 2014-09-02 International Business Machines Corporation Tracking computer system configuration changes with corresponding message responses
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US8019873B2 (en) * 2008-09-30 2011-09-13 Microsoft Corporation Mesh platform utility computing portal
US8352952B2 (en) * 2008-12-01 2013-01-08 Citrix Systems, Inc. Systems and methods for facilitating virtualization of a heterogeneous processor pool
JP6252140B2 (en) * 2013-11-29 2017-12-27 富士通株式会社 Task allocation program and task allocation method
CN104743480B (en) * 2015-02-09 2017-05-31 长沙今朝科技股份有限公司 Integral type is vacuumized, inflated and tamponade device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3593300A (en) * 1967-11-13 1971-07-13 Ibm Arrangement for automatically selecting units for task executions in data processing systems
US4073005A (en) * 1974-01-21 1978-02-07 Control Data Corporation Multi-processor computer system
US4530051A (en) * 1982-09-10 1985-07-16 At&T Bell Laboratories Program process execution in a distributed multiprocessor system
JPS6184740A (en) * 1984-10-03 1986-04-30 Hitachi Ltd Generating system of general-use object code

Also Published As

Publication number Publication date
EP0272836A3 (en) 1988-08-31
HK108094A (en) 1994-10-14
EP0272836A2 (en) 1988-06-29
DE3789215D1 (en) 1994-04-07
JPS63239553A (en) 1988-10-05
EP0272836B1 (en) 1994-03-02
DE3789215T2 (en) 1994-06-01
SG116694G (en) 1994-11-25
KR970008524B1 (en) 1997-05-24
JPH0628053B2 (en) 1994-04-13
US5115505A (en) 1992-05-19
KR880008186A (en) 1988-08-30
BR8706965A (en) 1988-07-26

Similar Documents

Publication Publication Date Title
CA1296432C (en) Controlled dynamic load balancing for a multiprocessor system
US7784053B2 (en) Management of virtual machines to utilize shared resources
US4791554A (en) Method and apparatus for preventing deadlock in a data base management system
US8433902B2 (en) Computer system with dual operating modes
US20050246705A1 (en) Method for dynamically allocating and managing resources in a computerized system having multiple consumers
US6353844B1 (en) Guaranteeing completion times for batch jobs without static partitioning
US5421011A (en) Method and system for access and accounting control in a data processing system by using a single resource account for a user or a group of users
US7032222B1 (en) Method and system for determining resource allocation to users by granting request based on user associated different limits and resource limit
US7194739B2 (en) Multi-application execution system and method thereof
US20060282461A1 (en) Object virtualization
US7353515B1 (en) Method and apparatus for dynamic allocation and management of semaphores for accessing shared resources
US11726816B2 (en) Scheduling workloads on a common set of resources by multiple schedulers operating independently
US11561843B2 (en) Automated performance tuning using workload profiling in a distributed computing environment
US20080127194A1 (en) Job allocation program and job allocation method
US5062046A (en) Multiple processor system having a correspondence table for transferring processing control between instruction processors
JPH01209561A (en) Security managing system
JP2900438B2 (en) File recall method
JP2522388B2 (en) How to control tasks
US6643680B1 (en) Signal processing system which can reduce burden applied to a CPU or a signal processor
US20200117501A1 (en) Customizing jvm native services
JP3304445B2 (en) Program generation processing device
CN114185684A (en) Device, method and equipment for managing application permission and resources of big data platform
JP2675026B2 (en) File execution method in computer system
CN116737377A (en) Computing cluster resource scheduling method, electronic equipment and readable storage medium
JP2561306B2 (en) Control module transfer method between program modules

Legal Events

Date Code Title Description
MKLA Lapsed
MKEC Expiry (correction)

Effective date: 20121205