|Publication number||USRE39058 E1|
|Application number||US 09/608,372|
|Publication date||Apr 4, 2006|
|Filing date||Jun 28, 2000|
|Priority date||Dec 28, 1995|
|Also published as||US5925105|
|Publication number||09608372, 608372, US RE39058 E1, US RE39058E1, US-E1-RE39058, USRE39058 E1, USRE39058E1|
|Inventors||W. Hales II Loyde, Tyler R. Thessin|
|Original Assignee||Intel Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (12), Classifications (18), Legal Events (3)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This is a continuation of application Ser. No. 08/583,133, filed Dec. 28, 1995, now abandoned.
The present invention is related to teleconferencing systems. More specifically, the present invention is related to mechanisms for communicating data among a plurality of participants in a multipoint electronic conference system.
One of the more developing areas of computer networking is the field of electronic conferencing. Conferencing provides the ability to have an electronic on-line “meeting” between a plurality of users on computer system in a variety of locations. Users at a variety of sites may communicate with one another as if they were in the same room. Using such application programs, modem communication systems have enabled the ability to have a meeting wherein all users participate in the meeting through their individual computer systems and share data, graphics, text and other types of information. Users may communicate with one another sharing data in the form of graphical images, text or other annotations and other information represented on the computer system display. This is analogous to a meeting where participants in a face-to-face meeting may display information to one another on a whiteboard or blackboard and other participants may add annotations, delete or otherwise modify the board. It is also anticipated that as bandwidth of communication media improves and compression standards for graphical data also become more robust that recorded (or stored) video data may also be shared among a plurality of connected users during such teleconferences.
One of the requisites of an electronic conferencing system is the need to replicate the same data on all of the users' displays participating in the conference. Such systems typically implement this capability in a variety of ways. The most common is the client/server model wherein a single connected node acts as a “server” of other nodes in the system and the remaining nodes connected in the conference act as slaves or clients to the server process. Thus, each of the clients merely receive data from the central machine to update their displays. Such systems, however, are entirely dependent upon the service being provided by the server and the throughput of the communication medium. Obviously, systems wherein the clients merely act as displays and inputs for user requests suffer from severe performance problems due to resulting updates of data from the server, which is typically handled serially by the server.
Another prior art solution for maintaining all of a participant's display in a conferencing system synchronous rely on a distributed client/server system. In a distributed client/server approach a shared object structure is kept on the server and clients are made aware of changes of that distributed information through alerts of demons. This disadvantage of this approach, similar to the centralized client/server approach is the reliance on the architecture itself. This includes a data conferencing application which must be able to connect several users over a phone line from point to point without requiring access to a centralized common server.
In the client/server approach, moreover, performance suffers greatly because requests to add or delete objects such as annotations, graphical images or other information on a participant's display is entirely dependent upon communication from the server. Thus, real-time performance severely suffers in prior art client/server models since approval to act and manipulate upon objects on a participant's display is entirely dependent upon a whole set of dependent variables such as the number of requests to the server pending, the throughput of the communication medium, the number of participants connected, etc.
Yet another prior art approach for maintaining synchronicity of a plurality of participants in a conferencing system is the use of a distributed object-oriented system.
This is a generalized approach which relies upon extensions, in one prior art solution, of the SmallTalk language itself. In this prior art system, “local” objects send messages to “proxy” objects which are local representatives for objects in the “shared” object space. The proxy objects communicate with the real objects through an RPC (Remote Procedure Call) mechanism. RPC is a protocol governing the method with which an application activates processes on other nodes and retrieves the results. Such a conventional mechanism is defined by San Microsystems, Inc. and described in RFC-1057 that provides a standard for initiating and controlling processes on remote or distributed computer systems.
The problem with this approach is in its generality which requires extensive support for sharing any object while making no assumptions about the behavior of objects. This has two advantages. First, a complex “SmallTalk system” is needed to support the distribution of objects in general. Second, the concurrency problem for any object is difficult because multiple participants may have different objects in their systems and such different objects may not be able to be communicated to the remaining users.
Certain issues arise when large amounts of data, such as Binary Large OBject (BLOB) data, are transferred during an electronic conference. For example, a user's system may experience a delay in the refresh of the screen if the CPU of that system is busy transferring the BLOB. Additionally, the transfer of a BLOB may need to be reprioritized if a request for a different BLOB is received. For more information about the transfer of large object data in an electronic conferencing system, please see U.S. Pat. No. 5,452,299, entitled “Optimized Transfer of Large Object Data Blocks in a Teleconferencing System,” which is incorporated herein by reference.
The issues associated with the transfer of BLOBs are multiplied in a multipoint conference compared to a point-to-point conference. A multipoint conference is a conference in which there are three or more participants. In a point-to-point conference, only two participants are conferenced together. In a multipoint conference, for example, extra bookkeeping is required to keep track of which data has been provided to which participants. While the present invention is particularly useful in a multipoint conference, the present invention is also applicable to a point-to-point conference.
A method and apparatus for preventing processor domination of a CPU by background transfers of teleconference object data during an electronic conference is disclosed. The external time spent by the CPU executing outside a background transfer manager is monitored. Transfers of data packets of teleconference object data are performed if the external time is larger than a minimum threshold and smaller than a maximum threshold.
The present invention will be understood more fully from the detailed description given below and from the accompanying drawings of the preferred embodiments of the invention, which, however, should not be taken to limit the invention to the specific embodiments, but are for explanation and understanding only.
The present invention relates to methods and apparatus for communication between agents in an electronic conferencing system. Although present invention will be described with reference to specific signal names, formats, time intervals and other specific information, these are to be viewed to be used for illustration purposes only and not to be construed as limiting the present invention. It can be appreciated by one skilled in the art that many departures and modifications may be made without departing from the overall spirit and scope of the present invention.
As illustrated in
In one embodiment, system 100 is an IBM compatible type personal computer. Processor 102 may be one of the Intel-Architecture microprocessors, such as the 80386, 80486 or Pentium® brand microprocessor manufactured by Intel Corporation of Santa Clara, Calif.
Note that the following discussion of various embodiments discussed herein will refer specifically to a series of routines which are generated in a high-level object-oriented programming language (e.g., the Microsoft C/C++) available from Microsoft, Inc. Redmond, Wash. This series of routines is compiled, linked, and then run as object code in system 100 during run-time. It can be appreciated by one skilled in the art, however, that the following methods and apparatus may be implemented in special purpose hardware devices, such as discrete logic devices, large scale integrated circuits (LSI's), application-specific integrated circuits (ASIC's), or other specialized hardware. The description here has equal application to an apparatus having similar function.
Operative within each agent during conference run time is a series of software procedures which are organized in the manner illustrated with reference to FIG. 2.
The next higher level in the software organization 200 of a single agent is the conference manager 230 which provides all the necessary executive functionality for communication with the low level communication functions 240 and the higher level functions provided by the human interface process 210 and the object manager 220. The conference manager 230 controls the object manager 220 through a series of callbacks to commands in the conferencing system which are desired to be executed. Conference manager 230 also executes the callbacks in object manager 220 according to messages which are received from the communication process 240 and directs the creation, deletion or other action upon objects in the system. Objects within the system such as annotations, pages, commands and other objects used within the system are treated using an object-oriented system wherein hierarchies of objects are defined.
Communication from object manager 220 conference manager 230 is provided via messages which are passed to the multi-point link manager 240 for the creation of objects, arbitration between the arbitrator and the agent and communication with other agents in the conference. Moreover, conference manager 230 directs human interface process 210 via pointers to display various things on the display. Results from the display of human interface functions are passed back to the conference manager 230 via massaging.
Object manager 220 is a process which is operative during run time to keep track of the various objects used during a conference between the agent and other agents in the system. The object manager coordinates the meeting between the agents. The object manager keeps track of all objects created during the meeting, including, other agents, the various things displayed during the conference and other objects. In addition, the object manager is used for maintaining the status of the meeting and keeping all the other agents synchronized with the current agent. Contents of a meeting may be saved and retrieved from mass storage (e.g., 107 of
A Background Transfer Manager (BTM) 270 resides within the object manager 220. The BTM is responsible for sending and receiving messages associated with the transfer of background data among the various agents which are conferenced together. The BTM handles background recovery of lost data, preventing processor domination by background activity, and prioritizing background data requests, as will be described.
A free list 280 also resides within the object manager 220. The free list is used to store data temporarily, as will be described later with reference to FIG. 7.
Each object manager 220 maintains its own local copy of the meeting which is provided to human interface 210 as required. Object manager 220 informs human interface 210 about changes from other agents participating in the meeting. Human interface layer 210 then adjusts the display as directed. Human interface 210 also informs the object manager about changes that the user wishes to make to the current meeting. Object manager 220 then synchronizes the changes with all other object managers participating in the meeting. The object manager controls the human interface through massaging, as does the human interface direct the object manager to perform certain actions upon objects, according to the adjustment of the display under control of human interface 210. A brief overview of the structure of objects in one embodiment of present invention is illustrated with reference to FIG. 3.
In addition, object manager 220 maintains information about the user in classification 330 and arbitrator 340, of which there is only one during any one electronic conference and the other participants in the meeting in a participants classification 350. These are all also members of the object manager class. Object manager 300 keeps track of the participants in the meeting. For example, when new participants join the meeting, the new participants' copies of the meeting are brought into synchronization with all of the other participants'. As participants leave the meeting, all of each user's contributions are ensured to be shared before the participant leaves the meeting.
One of the agents or participants in the meeting is known as the arbitrator. This is represented in the arbitrator class 340. The arbitrator resolves conflicts between users when question of control of meeting properties arise. The arbitrator determines which participant controls an annotation, how many pages exist in the present meeting, etc. It also keeps a master copy of the meeting that all other participants synchronize to. Object managers within each agent or participant coordinate who the arbitrator is and assign a new arbitrator when the assigned arbitrator leaves the meeting or as dictated by other conference events—such as opening/merging a meeting file in which the participant opening/merging the meeting file becomes the arbitrator prior to opening/merging the file. In one implementation of the present invention, the first user to start a meeting is assigned the arbitrator.
A very rough approximation of the types of objects which may be present upon a participant's display is illustrated with reference to FIG. 4. Generally, a user will have a meeting area 400 on the display in which various information may be entered. Typically, each meeting comprises a series of pages which is analogous to a single white board or shared display which users in a room could access. Analogously, one embodiment of the present invention uses the notebook metaphor which is, in fact, a shared “note-book” among a plurality of participants in the meeting into which every participant may enter information. The shared area or notebook comprises a plurality of pages 410 onto which annotations may be made. Users may create or delete pages at will, subject to certain conditions. Annotations on the pages may comprise one of at least four types, in one embodiment of the present invention. The first three of these types are illustrated in FIG. 4. For instance, a page 410 may comprise a drawing annotation 411 which is typically an object-oriented drawing created by a single user. Such object-oriented drawing illustrations as 411 comprise a description of point positions and segments between them and are well-known to those in the prior art. Annotations may also comprise graphic annotations 412 which are generally bitmap representations of graphic image data. Textual annotations 413 may be placed upon a page. Textual annotations can be any of the users's choosing and, including in certain prior art implementations, allowing users to choose style, point size, font and other formatting information as is typical in the prior art. One other annotation which may be used in one embodiment of the present invention is the OLE annotation using the Object Linking and Embedding (OLE) protocol available from Microsoft Corporation of Redmond, Wash. OLE annotations may reference other “objects” created and/or maintained by other application programs and which may be either linked or embedded using OLE. Each of these annotations is stored as an object under an “annotation” classification which is associated with objects in the page classification.
One of the types of object data which may be transferred between participants in an electronic conference is known as a very Binary Large OBject or “BLOB.” Because of their size, BLOBs are usually broken into smaller portions, or packets and transmitted over several cycles as a background task. BLOBs typically comprise items such as very large graphic data, OLE annotations or files to be transferred. In other embodiments of the present invention, such BLOBs may include full-motion video objects such as MPEG or JPEG files and/or audio data. Using the methods and apparatus described, the BLOB data is transmitted in packets. In one embodiment, the size of each of the packets is dynamically based upon the capabilities of the transport medium, which may dynamically change as the connection between participants change. Therefore, if the speed of the connection between two participant's transport medium changes, the size of packets transmitted by the transmitter is changed. This is done dynamically during transmission time, in order to allow the most efficient use of the transport medium during the transmission of BLOBs. In addition, BLOB transmit requests are queued so that higher-priority BLOBs may be transmitted before lower-priority BLOBs. In this way, when a participant who is viewing a first page containing BLOB data switches pages to a second page also containing BLOB data, the BLOB data for the second page becomes reprioritized within the transmitter to be transmitted ahead of the BLOB for the first page.
During a typical electronic conference, BLOB data may not necessarily be transmitted to other participants upon creation of a BLOB within a local participant. In other words, transmission of the data for a BLOB may be deferred until a later time at which the transport medium may be idle, or the local participant has some idle processing time. Therefore, during creation of a BLOB, remote participants may be notified that the BLOB data is not contained within the BLOB to be created, and the remote participant(s) only create the object in their local meeting structures for the BLOB absent any data. BLOB data is transferred later via the BTM 270. A typical chronology of actions which may be performed during a BLOB creation and transmission is illustrated with reference to FIG. 5.
The steps illustrated with reference to
As already discussed, the local participant processes requests for the BLOB data at step 505. The local participant then sends to each of the remote participants the requested BLOB data packets at step 506. BLOB data packets are sent according to the transport medium between the participants. Therefore, if the remote participant is connected to a high-capacity, high-speed transport medium such as a Ethernet, then the size of the data packets will be substantially larger than if the participant were connected via modem over a telephone line. As the local participant sends the BLOB data packets at step 506, each of the remote participants receives the BLOB data and adds the BLOB data packets to the existing BLOB data structure at step 508. The local participant after completion of the transmission of all the BLOB data packets for the requested BLOB, removes the BLOB from the request queue at step 507. From block 508, the human interface process of the remote participant is notified to update the display of the previously incomplete BLOB-containing object at step 509.
A BLOB is considered missing when some or all of its data is not present in a participant's notebook and no other participant has offered to provide the data yet. This can happen as a consequence of using any background transfer strategy. Usually, data are transferred as time permits and only when requested. Therefore, any given participant has a period of time in which he knows about an annotation comprised of a BLOB but has not yet received all the data via the Background Transfer Manager (BTM). For example, assume Participant A creates a BLOB and all of the other participants are told about the annotation. Subsequently, the other participants request the data from Participant A. If Participant A's computer providing the BLOB were to fail before transferring all the data, then the data would be missing relative to the other participants. In some cases, however, all of the data may have been transferred to another participant, such as Participant C, before Participant A's computer failed. In this case, the participants who still need the data can retrieve the data from Participant C. This may occur, for example, if Participant C requested the data earlier than the other participants, or Participant C had a faster transport medium allowing data transfer to have completed sooner.
The flow diagram continues at block 603, at which a third participant replies to the first participant that it has the requested data. In one embodiment, in order to save bus bandwidth, a participant will only reply to a broadcast message seeking requested data if that participant has the requested data; if the participant does not have the requested data, it will not respond.
At block 604, the first participant assigns the third participant as the provider for the requested data. In one embodiment, the first participant maintains a request keeper list which maintains a list of all missing data of that participant. When a provider for any of the missing data is found then the request keeper list is updated to indicate the participant which is to provide the missing data. From block 604, the flow diagram continues at block 605, at which the third participant provides the requested data to the first participant.
However, if a user were to clear his notebook prior to reconnecting to the conference, either accidentally or unknowingly by a novice user, the data is saved to the free list 280, as shown by optional block 702, where it resides until it is later purged when the notebook requires more memory. In one embodiment, the free list resides within the object manager 220. Thus, the data remains available for requests by other participants. From optional block 702, the flow diagram proceeds at block 703.
At block 703, the second participant reconnects to the conference. In one embodiment, the second participant notifies the other participants that it has reconnected once it has taken care of some initial bookkeeping activities. However, one of the other participants, such as the first participant may notice that the second participant has returned before the second participant sends out its notice, as in step 704.
After steps 704 and 705, which are performed alternatively, so as to let the first participant know that a new participant has joined the conference, the first participant broadcasts a message to the second participant seeking any data still missing from the first participant at step 706.
At step 707, the second participant responds that it has the requested data, if in fact it still has the data. If, for example, the second participant's computer had failed and had to be rebooted, then the second participant may not have the data anymore.
At step 708, the first participant assigns the second participant as the keeper for its missing data which the second participant will provide, and at step 709, the second participant provides the requested data to the first participant.
In one embodiment, the entire flow diagrams of
Additionally, in one embodiment, the first participant will take the participant which replies first to be its provider of the missing data. This turns out to be the participant with either the fastest system, the fastest transport medium, or the one with the most resources to spare. Note that the present invention is also applicable to a point-to-point conference involving just two participants, if, for example, one of the participants is dropped from the conference temporarily.
Thus, a method an apparatus for recovering missing data during an electronic conference is disclosed. In one embodiment, the requests for transfer of BLOBs is prioritized as will be disclosed with respect to FIG. 11. In another embodiment, this is also combined with the method and apparatus for preventing processor domination by background tasks, to be described next.
Background transfers are handled by the Background Transfer Manager (BTM) 270. Background transfer ideally should have a minimal impact on foreground activity: users should perceive little degradation in performance while transferring data, even if they start additional applications. Three main times in which the BTM 270 may need to alter its data transfer rate occur when:
The BTM transfers data among the agents, or participants in the conference by sending packets of data and routinely processing its lists. As the number of data requests increases (or on slower computers, e.g., an Intel1486® vs. a Pentium® processor), the BTM may use more CPU cycles than is optimal, effectively stealing from foreground applications. Similarly, if the user requires more horsepower to handle additional load, the BTM must surrender its cycles to balance.
The common approach to resolving processor competition is performed by the operating system. The Microsoft Windows™ Operating System is described as “cooperative tasking.” In short, this means that the operating system does not arbitrate resources among processes. When an application is given a chance to run, i.e., CPU-time, it may continue more-or-less until it surrenders its resources; all other applications must wait. This creates a worst-case resource problem for a truly background task: it will get the CPU as often as any other task, regardless of the foreground requirements.
Operating systems such as Windows NT provide priority scheduling, where each thread (or process) has a priority, and the operating system will tend to assign the CPU to higher-priority threads more than lower-priority threads. However, even within Windows NT's priority mechanism, a background task may interfere with the performance of other tasks. For example, the background task may dominate the CPU with respect to lower-priority tasks or secure a semaphore required by a foreground task.
To resolve this problem, the BTM must perform some form of throttling to reduce the amount of time consumed by background activities based on a dynamic measure of system performance. One solution is for the BTM to back-off when it detects high local activity. The BTM uses two “stopwatches” to monitor system performance. One records the CPU time the foreground tasks are using; the other records the CPU time the BTM is using. When the BTM time is high, it obviously indicates that the system is spending too much time processing BTM actions. The BTM would be backed-off.
Ironically, when the foreground time becomes very large, the BTM is also backed-off. The very large foreground time indicates that the foreground tasks are not yielding or a sufficient number are running as to give the impression that a task is not yielding. In our cooperative tasking system, a task does not yield when it is performing a CPU-intensive operation, such as adding a complex OLE object via drag-and-drop. Therefore, the foreground requires more of the CPU than usual. The BTM backs-off by increasing an offset to the amount of time that the foreground tasks must minimally take. By using the offset, the BTM can effectively delay its servicing of background tasks by ignoring one or more of its servicing windows provided by the operating system based upon the value of the offset.
However, if the BTM is not disabled at block 802, then operation continues at block 806, in which an internal timer is activated. The internal timer measures the amount of CPU-time spent executing within the BTM operation code (internal time). Additionally, in block 806, a timer which measures the amount of time outside of the BTM (external time) is disabled. In one embodiment, a variable timeInBTM is set to the amount of time spent within the BTM during the previous servicing window of the BTM. From block 806, operation continues at block 808 in which various requests are sent by the BTM. For example, the BTM sends messages to the other participants of the conference for retrieving data, sending data, and checking out status. The requests are normally batched together and sent as a group in order to reduce the amount of bus bandwidth associated with message passing.
From the block 808, operation continues a block 810, at which the amount of time spent outside of the BTM is compared with the amount of time spent within the BTM (which was set in block 806) plus a backoff offset. If the time spent outside of the BTM is smaller than the time spent within the BTM plus the backoff offset, then the flow diagram continues at block 812, otherwise the flow diagram continues at block 814.
However, if a block 820, the time spent outside the BTM is larger than the predetermined delay plus the backoff offset, then operation continues at block 830, at which the backoff offset is adjusted. In one embodiment, the backoff offset is adjusted using a delayed stepping function with a clamped end. For example, in one embodiment, the function g(x) is used, wherein
From step 830, operation continues at block 832, which is continued in FIG. 8c.
From block 840 and block 832, the flow diagram continues at block 850, at which the external timer is reset. Additionally at block 850, the external timer is restarted, and the internal timer is stopped. Thus, any further comparisons against the time spent outside of the BTM use the new external timer values. The internal time is retained until it is saved into the variable timeInBTM (at block 806) during the next time that the flow diagram of
Returning to block 812 in
However, if from block 860, the external time is not less than the internal time, then operation continues at block 880. At block 880, the external timer is started and the internal timer is stopped. The internal time is retained until it is saved into the variable timeInBTM (at block 806) during the next time that the flow diagram of
From blocks 804, 850, and 880, the flow diagram terminates at the block 890.
The previous strategy, however, is insufficient for controlling processor domination arising from handling remotely-initiated messages. When Participant B requests data from Participant A, for example, the BTM builds a message at Participant B and sends it to Participant A. Participant A's BTM must respond to the message by providing the requested data and tracking the new request. Besides handling the request for providing data, the BTM also handles messages to stop sending data and messages to reprioritize transfers of data.
As an example, in the case of the BTM handling a request for data transfer, a problem arises when the local computer is much slower than the data provider. As data arrives, the BTM must save the data in the local copy of the BLOB, a comparatively time-consuming process. Note that this case is not covered by the flow diagram of
Common approaches for handling this problem include the use of acknowledgement messages and back-pressure. The former approach freezes transfers on the data-provider until all receivers have sent a reply indicating receipt of the last day packet. However, this approach lacks efficiency. First, the data provider loses CPU cycles waiting for a reply compared to the normal case, in which no transmission delay is required. Second, the network must carry a reply message needlessly. (An alternative is to reply to every Nth message, but the same problem exists, only slightly mitigated.)
The back-pressure approach, on the other hand, relies on the communication services of the multipoint link manager 240 to inform a message sender when a receiver has not handled the previous data packet. The communication services have a buffer where they temporarily store inbound messages; when the conference manger 230 is notified of a delivery, it asks for the message, removing it from the buffer. If the buffer is full, the communication services signal the sender's communications layer, which stops transmitting and marks the channel as “busy.”
This mechanism is used in the conference manager 230. However, it has two significant limitations. First, the communication services themselves within the multipoint link manager 240 each handle messages differently, removing them from one buffer and adding them to another. As a result, the back-pressure is non-existent or too slow. Second, too many pending messages will clog memory on the receiver, just when the receiver needs more resources.
To resolve this, the BTM overloads the previously discussed throttling mechanism to support receiver delays. On receipt of a data packet, the participant will check the backoff offset for the participant receiving the data. If that value is above an active threshold (currently 500 ms), then the receiver is spending too much time in the BTM. A message is sent to the data provider, asking it to back-off as illustrated in FIG. 9.
From block 904, operation continues at block 905, at which the backoff offset is compared with a predetermined threshold value, for example, 500 milliseconds. If the back-off offset is larger than the predetermined threshold value, the operation continues at block 906, at which the BTM sends the participant providing it with data a message to reduce the data transmission rate. From the block 906, operation continues at block 907, at which the flow diagram terminates.
If at the block 905, the backoff offset is not larger than the predetermined threshold value, then operation also continues at block 907, at which the flow diagram terminates.
Note that it is important that the time that the BTM spends receiving messages is considered time within the BTM for the purposes of the internal and external times. This allows the measurement to be accurate, indicating all of the time spend handling background transfers on a computer and throttling accordingly. When the keeper receives the back-off message, the keeper throttles back, just as if it had detected its own foreground application requiring more cycles, as shown in FIG. 10.
The flow diagram terminates a block 914. In one embodiment, the internal timer records the time spent within the BTM in adjusting the backoff offset. However, since the amount of time is minimal compared with the time to start and stop the internal and external timers, this step may be avoided.
In a multipoint conference, it is not uncommon for an application to have a priority for data delivery. For example, if a participant were expecting data for a bitmap of both pages 2 and 3, and the participant was looking at page 2 in the notebook, the participant would want to receive the data for the page he were viewing (from page 2) before the other data (from page 3).
This can be accomplished via a number of mechanisms. First, when data is first requested, the request can be inserted as the first of an outbound transfer list, implying that it will be sent before other requests. This is a LIFO approach, like a stack. Second, if the user were to change pages, the notebook would ask the object manager 220 to reprioritize the transfer, promoting the page that is currently visible.
In a multipoint conference, this becomes confused if participants are on different pages. Additionally, there are other complications with regard to more transfers since unlocking BLOBs more quickly and reducing the total number of requests must be taken into consideration.
One traditional approach for this type of problem is to maintain a priority-ordered list for the BLOBs pending outbound transfer. The priority would be computed dynamically by a weighted function, something like
This priority scheme would favor sending data for the BLOB that has the most number of concurrent requests. It also allows the application to prioritize requests, where each participant has one vote for which blob should be sent first. Finally, the time the BLOB has been in the queue is put in the formulae to prevent starvation, that is, one BLOB never being sent due to continual re-prioritization for other data.
This approach has some disadvantages. First, the mechanism does not consider the effects of keeping BLOBs on the outbound transfer lists indefinitely. In one embodiment, BLOBs are “locked” whenever data is accessed for reading or writing. The process performing the access locks the BLOB into memory 104 and prevents the BLOB from being swapped to disk or to a secondary memory.
One mechanism for keeping track of whether a BLOB is locked is by using a counting semaphore. The counting semaphore starts in an initial unlocked state with a value zero. For each access to a BLOB, the counting semaphore is incremented by one. When the access is completed, then the counting sequence is decremented by one. The BLOB is unlocked when the counting semaphore returns to the value zero. Thus, although BLOBs are swapped to disk when they aren't in use, this cannot be done while the BTM is actively sending data (accessing the BLOB). Therefore, partially transferred BLOBs take up memory resources. BLOBs are “unlocked” in order to promote another BLOB in front of it; however, this is expensive to do frequently. Thus, reducing the number of locked BLOBs is desirable.
Similar issues exist for the creating network channels to support transfers. In one embodiment, a channel is created to transfer data from one participant to another. Thus, maintaining partially transmitted BLOBs takes up network resources. A method of prioritizing or re-prioritizing, transfers that favor completing those that have already started would be beneficial.
However, if at block 952, part of the BLOB has not been sent already, then the flow diagram proceeds at block 956, at which it is determined whether there is another BLOB in the queue before the current request. If there is no other BLOB in the queue before the current request, then the flow diagram proceeds at block 962, at which the flow diagram terminates.
If at block 956, there is another BLOB in the queue before the current request, then the flow diagram continues at block 958, at which it is determined whether the BLOB has already sent over a certain amount of data. The amount of data can be represented in a variety of different ways. For example, it can be represented as a percentage of the total amount to be transferred or by measuring the time required to send the rest of the data using the data rate in the measurement. If the previous BLOB has sent over a certain amount of data already, then operation continues at block 962, at which the flow diagram terminates. Thus, the previous BLOB is allowed to maintain its priority.
However, if at block 958, the previous BLOB has not sent over a certain amount of data already, then operation moves to block 960, at which the current request is moved in front of the previous BLOB in the queue. From block 960, the flow diagram loops back to block 956.
Thus, a method and apparatus for the transfer of data in an electronic conferencing system is disclosed. The different aspects of recovering lost data, preventing processor domination, and prioritizing data requests can be used simultaneously to more efficiently transfer data. The specific arrangements and methods described herein are merely illustrative of the principles of this invention. Numerous modifications in form and detail may be made without departing from the scope of the described invention. Although this invention has been shown in relation to a particular embodiment, it should not be considered so limited. Rather, the described invention is limited only by the scope of the appended claims.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5220653 *||Oct 26, 1990||Jun 15, 1993||International Business Machines Corporation||Scheduling input/output operations in multitasking systems|
|US5247671 *||Feb 14, 1990||Sep 21, 1993||International Business Machines Corporation||Scalable schedules for serial communications controller in data processing systems|
|US5257386 *||Apr 3, 1991||Oct 26, 1993||Fujitsu Limited||Data transfer control system for virtual machine system|
|US5303243 *||Mar 6, 1991||Apr 12, 1994||Nec Corporation||Network management system capable of easily switching from an active to a backup manager|
|US5325522 *||Apr 10, 1991||Jun 28, 1994||United States Data Corporation||Apparatus and method for communicating between devices trough use of a real time data base|
|US5367635 *||Aug 29, 1991||Nov 22, 1994||Hewlett-Packard Company||Network management agent with user created objects providing additional functionality|
|US5408470 *||Oct 14, 1993||Apr 18, 1995||Intel Corporation||Deferred synchronization of distributed objects|
|US5446894 *||Jan 5, 1994||Aug 29, 1995||Brunswick Bowling & Billiards Corporation||Method for varying multi-tasking time slice to maintain system frame operating time close to desired time upon video frame refresh time|
|US5452299 *||Oct 14, 1993||Sep 19, 1995||Intel Corporation||Optimized transfer of large object data blocks in a teleconferencing system|
|US5519436 *||Jun 21, 1994||May 21, 1996||Intel Corporation||Static image background reference for video teleconferencing applications|
|US5623603 *||Nov 2, 1994||Apr 22, 1997||Fls Acquistion Corporation||Method of transferring data at adjustable levels of priorities to provide optimum response to user demands|
|US5701292 *||Dec 4, 1995||Dec 23, 1997||Lucent Technologies Inc.||Method and apparatus for controlling data transfer rates of data sources in asynchronous transfer mode-based networks|
|U.S. Classification||709/235, 709/228, 709/234, 709/225, 709/220, 709/240|
|International Classification||H04L29/06, H04L29/08, G06F11/34, G06F15/16|
|Cooperative Classification||G06F11/3419, H04L29/06, G06F2201/81, H04L69/329, H04L67/06|
|European Classification||G06F11/34C4, H04L29/08N5, H04L29/06|
|Jan 19, 2007||FPAY||Fee payment|
Year of fee payment: 8
|Nov 25, 2008||CC||Certificate of correction|
|Jan 14, 2011||FPAY||Fee payment|
Year of fee payment: 12