A method facilitates providing appropriate quality of service guarantees to a plurality of virtual hosts on a single physical host computer. A server application program and its child processes service communication requests made to the plurality of virtual hosts. Quality of service parameters associated with the virtual hosts are stored. Communication requests made to a specific one of the virtual hosts are detected. The quality of service parameters associated with the specific virtual host are obtained. Operating system resources are utilized to guarantee, to a child process of the server application program, a quality of service according to the obtained quality of service parameters associated with the virtual host. Communication between the virtual host and the client is allowed to proceed, the communication being managed by the child process.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A computer-implemented method for providing a quality of service guarantee to a child process of an application program, wherein the application program and its child process service requests made to a plurality of network addresses, a network address indicating a virtual host, a virtual host comprising a virtualized server application program the method comprising: storing a quality of service parameter associated with a network address; intercepting a system call, made by the child process, that establishes a communication channel between a client and the network address, wherein intercepting the system call comprises: saving a copy of a first pointer, which Points to object code of the system call; and replacing the first pointer with a second pointer, which points to different object code, such that making the system call causes the different object code to execute; and enabling communication between the network address and the client, the communication being managed by the child process; wherein execution of the different object code comprises: using the saved copy of the first pointer to transfer execution to the intercepted system call, thereby establishing a communication channel; determining that the established communication channel is to one of the plurality of network addresses serviced by the application program and its child process; obtaining a quality of service parameter associated with the network address; and utilizing an operating system resource to request a guarantee, to the child process, of a quality of service according to the obtained quality of service parameter.
2. A computer-implemented method for providing a quality of service guarantee to a child process of an application program, wherein the application program and its child process service requests made to a plurality of network addresses, a network address indicating a virtual host, a virtual host comprising a virtualized server application program, the method comprising: storing a quality of service parameter associated with a network address; intercepting a system call which establishes a communication channel between a client and the network address; allowing establishment of the communication channel; storing an indicator of an association between an application program that made the intercepted system call, the established communication channel, and the network address; intercepting a system call which creates a child process; allowing creation of the child process; storing an indicator of an association between an application program that made the intercepted system call and the created child process; intercepting a system call which creates a copy of a file descriptor; allowing creation of the copy of the file descriptor; storing an indicator of an association between the file descriptor and the created copy of the file descriptor; intercepting a system call which transports data through a communication channel; determining, by examining the stored association indicators, that an application that made the intercepted system call is a child process of a parent application that established a communication channel to one the network address; determining, by examining the stored association indicators, that the communication channel through which the intercepted system call transports data is the communication channel established by the parent application to the network address; obtaining the quality of service parameter associated with the network address; utilizing an operating system resource to request a guarantee, to the child process that called the intercepted system call, of a quality of service according to the obtained quality of service parameter associated with the network address; and allowing data to be transported through the communication channel.
3. The method of claim 2 wherein storing the quality of service parameter associated with the network address comprises modifying an operating system to include a quality of service parameter table comprising the quality of service parameter associated with the network address.
4. The method of claim 3 wherein modifying the operating system comprises linking a module to an operating system kernel, the module comprising the quality of service parameter table.
5. The method of claim 2 further comprising: saving a copy of a first pointer, which points to object code of the system call to intercept; and wherein intercepting the system call comprises replacing the first pointer with a second pointer, which points to different object code, such that making the system call causes the different object code to execute.
6. The method of claim 5 , wherein the intercepted system call comprises a system call which establishes a communication channel between a client and a network address, and wherein execution of the different object code comprises: allowing establishment of the communication channel by using the saved copy of the first pointer to transfer execution to the intercepted system call; and storing an association between the application program and the established communication channel by storing, in an association table, an entry indicating an association between a process identification number of the application program that made the system call, a file descriptor describing the established communication channel, and the network address to which the channel was established.
7. The method of claim 5 , wherein the intercepted system call comprises a system call which creates a child process, and wherein execution of the different object code comprises: allowing creation of the child process by using the saved copy of the first pointer to transfer execution to the intercepted system call; and storing an association between the application program that called the system call and the created child process by storing, in an association table, an entry indicating an association between a process identification number of the application program that made the system call and a process identification number of the created child process.
8. The method of claim 5 further comprising inserting the different object code into the operating system.
9. The method of claim 7 wherein inserting the different object code into the operating system comprises linking a module to an operating system kernel, the module comprising the different object code.
10. A computer-readable medium storing a computer program product for providing a quality of service guarantee to a child process of an application program, wherein the application program and its child process service requests made to a plurality of network addresses, a network address indicating a virtual host, a virtual host comprising a virtualized server application program, the computer program product comprising: program code for storing a quality of service parameter associated with a network address; program code for intercepting a system call, made by the child process, that establishes a communication channel between a client and the network address, wherein the program code for intercepting the system call comprises: program code for saving a copy of a first pointer, which points to object code of the system call; and program code for replacing the first pointer with a second pointer, which points to different object code, such that making the system call causes the different object code to execute; and program code for enabling communication between the network address and the client, the communication being managed by the child process; wherein the different object code comprises: program code for using the saved copy of the first pointer to transfer execution to the intercepted system call, thereby establishing a communication channel; program code for determining that the established communication channel is to one of the plurality of network addresses serviced by the application program and its child process: program code for obtaining a quality of service parameter associated with the network address; and program code for utilizing an operating system resource to request a guarantee, to the child process, of a quality of service according to the obtained quality of service parameter.
11. A computer-readable medium storing a computer program product for providing a quality of service guarantee to a child process of an application program, wherein the application program and its child process service requests made to a plurality of network addresses, a network address indicating a virtual host, a virtual host comprising a virtualized server application program, the computer program product comprising: program code for storing a quality of service parameter associated with a network address; program code for intercepting a system call which establishes a communication channel between a client and the network address; program code for allowing establishment of the communication channel; program code for storing an indicator of an association between an application program that made the intercepted system call, the established communication channel, and the network address; program code for intercepting a system call which creates a child process; program code for allowing creation of the child process; program code for storing an indicator of an association between an application program that made the intercepted system call and the created child process; program code for intercepting a system call which creates a copy of a file descriptor; program code for allowing creation of the copy of the file descriptor; program code for storing an indicator of an association between the file descriptor and the created copy of the file descriptor; program code for intercepting a system call which transports data through a communication channel; program code for determining, by examining the stored association indicators, that an application that called the intercepted system call is a child process of a parent application that established a communication channel to the network address; program code for determining, by examining the stored association indicators that the communication channel through which the intercepted system call transports data is the communication channel established by the parent application to the network address; program code for obtaining the quality of service parameter associated with the network address; utilizing an operating system resource to request a guarantee to the child process that called the intercepted system call, of a quality of service according to the obtained quality of service parameter associated with the network address; and program code for allowing data to be transported through the communication channel.
12. The computer-readable medium of claim 11 wherein the program code for storing the quality of service parameter associated with the network address comprises program code for modifying an operating system to include a quality of service parameter table comprising the quality of service parameter associated with the network address.
13. The computer-readable medium of claim 12 wherein the program code for modifying the operating system comprises program code for linking a module to an operating system kernel, the module comprising the quality of service parameter table.
14. The computer-readable medium of claim 11 wherein the computer program product further comprises program code for saving a copy of a first pointer, which points to object code of the system call to intercept; and wherein the program code for intercepting the system call comprises program code for replacing the first pointer with a second pointer which points to different object code, such that making the system call causes the different object code to execute.
15. The computer-readable medium of claim 14 wherein the intercepted system call comprises a system call which establishes a communication channel between a client and a network address, and wherein the different object code comprises: program code for allowing establishment of the communication channel by using the saved copy of the first pointer to transfer execution to the intercepted system call; and program code for storing an association between the application program and the established communication channel by storing in an association table an entry indicating an association between a process identification number of the application program that made the system call, a file descriptor describing the established communication channel, and the network address to which the channel was established.
16. The computer-readable medium of claim 14 , wherein the intercepted system call comprises a system call which creates a child process, and wherein the different object code comprises: program code for allowing creation of the child process by using the saved copy of the first pointer to transfer execution to the intercepted system call; and program code for storing an association between the application program that called the system call and the created child process by storing, in an association table, an entry indicating an association between a process identification number of the application program that made the system call and a process identification number of the created child process.
17. The computer-readable medium of claim 14 wherein the computer program product further comprises program code for inserting the different object code into the operating system.
18. The computer-readable medium of claim 17 wherein the program code for inserting the different object code into the operating system comprises program code for linking a module to an operating system kernel, the module comprising the different object code.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
November 30, 1999
December 13, 2005
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.