US20120216112A1 - Adaptive Synchronization Techniques - Google Patents
Adaptive Synchronization Techniques Download PDFInfo
- Publication number
- US20120216112A1 US20120216112A1 US13/459,637 US201213459637A US2012216112A1 US 20120216112 A1 US20120216112 A1 US 20120216112A1 US 201213459637 A US201213459637 A US 201213459637A US 2012216112 A1 US2012216112 A1 US 2012216112A1
- Authority
- US
- United States
- Prior art keywords
- time
- synchronization
- time value
- value
- data
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 230000003044 adaptive effect Effects 0.000 title abstract description 32
- 230000008859 change Effects 0.000 claims description 27
- 230000004044 response Effects 0.000 claims description 11
- 230000001960 triggered effect Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 2
- 230000001360 synchronised effect Effects 0.000 abstract description 8
- 230000003111 delayed effect Effects 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 25
- 230000006870 function Effects 0.000 description 16
- 239000011800 void material Substances 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000000737 periodic effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000005267 amalgamation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
Definitions
- the subject matter of the present disclosure generally relates to techniques for controlling operation (e.g., synchronization or up-dating) of a process related to a node in response to changes made to the node that can cause the process to perform labor intensive work. More particularly, the subject matter of the present disclosure relates to techniques for updating a graphical user interface (GUI) display of a file system directory by adaptively synchronizing the directory and the application having the GUI display when notifications of a change made to the directory are received.
- GUI graphical user interface
- a file system 2 of a computing environment is schematically represented as a tree of directories 4 and files 6 .
- a directory 4 is a special type of file maintained by the file system 2 that contains a list of entries.
- a Finder 8 is an application of the computing environment that has a graphical user interface (GUI). The graphical user interface of the Finder 8 allows the user to view the directories 4 and files 6 in the file system 2 .
- GUI graphical user interface
- the window of the Finder 8 typically displays icons and file names and can display other information about the files, such as file size, application, date last saved, etc.
- entries of a directory 4 appear as folders or files having the file names and other related information in the Finder 8 .
- each entry of a directory 4 is a pointer pointing directly to a file 6 or to an entry in another directory 4 .
- Various processes in the computing environment can access and change directories 4 and files 6 of the file system 2 .
- the Finder 8 is open, for example, other processes of the computing environment (e.g., operators, tools, or applications) can manipulate the file system 2 (e.g., add, delete, or edit files 6 ) so that the directory 4 of files 6 displayed in the Finder 8 is not current. Maintaining an up-to-date display of directories 4 and files 6 of the file system 2 in the Finder 8 can be important. To keep the representation of the file system 2 up-to-date in the Finder 8 , some methods for synchronizing the Finder 8 with changes to the directories 2 are used in the art.
- One synchronizing method known in the art involves periodically polling a directory 4 at regular intervals to keep the representation of the directory 4 up-to-date in the Finder 8 .
- the periodic polling involves rereading all the data from the directory 4 and updating the display of the Finder 8 according to some schedule.
- intensive input and output operations e.g., touching the disk of the hard drive and re-reading directories
- polling may do unnecessary and intensive work.
- polling can be ineffective because the Finder 8 is not updated between intervals when an operator, tool, or application may need an up to date directory.
- Another synchronizing method involves detecting specific triggers that indicate the user's current interests in files 6 of the directory 4 and possible changes to those files 6 .
- This synchronizing method is similar to what is performed in Mac OS X Panther and earlier versions of Mac OS X.
- the triggers can be generated by opening the attached folder, closing the window of the attached folder, moving or resizing the window of the attached folder, placing items into the attached folder, or removing items from the attached folder.
- the triggers can trigger re-reading of a directory to update the Finder 8 .
- This synchronizing method has the advantage of limiting the polling of the directory 4 and updating the Finder 8 only when the user indicates interest. Unfortunately, changes will not be noticed until there is user-action.
- the Finder 8 cannot notice a change in a directory 4 unless a trigger is assigned to a particular action, and other processes (users on a network, tools, or applications) lacking triggers may operate in the background of the computer system and may not trigger the update of the finder.
- the subject matter of the present disclosure is directed to overcoming, or at least reducing the effects of, one or more of the problems set forth above.
- an apparatus and method of handling a notification with a service in a computing environment has a process and a node.
- the service performs an operation between the process and the node in response to one or more notifications.
- the notifications can be generated in response to a change at least potentially made to the node, generated when another process performs an action related to the node, or generated in response to a triggered timer.
- the node can be a directory of a file system
- the process can be a graphical user interface for displaying contents of the directory.
- a notification can be generated when a change is made to the directory.
- the operation can involve synchronizing the graphical user interface and the directory by updating the display of the directory in the graphical user interface.
- the node can be a property store in which an attribute of an object resides, and the process can be capable of changing the attribute of the object.
- a notification can be generated when a change is made to an attribute of an object.
- the operation between the process and the property store can involve updating the attribute of the object in the property store.
- the disclosed apparatus and method involves obtaining a current time value of a notification and calculating a preferred time value for responding to the notification.
- the current time value is then compared to the preferred time value, and the operation between the process and the node is initiated based on the comparison of the current time value to the preferred time value.
- the preferred time value can be calculated by adding an incremental value to the previous time value.
- the incremental value can be calculated by weighting a previous duration value, where the previous duration value substantially represents an amount of time for performing at least one previous operation on the node.
- the previous duration value can substantially represent a discrete amount of time for performing one previous operation on the node.
- the previous duration value can substantially represent an average amount of time for performing a plurality of previous operations on the node.
- Weighting the duration value can involve multiplying a factor times the duration value. The factor can be based on a defined threshold or on a priority assigned to the node.
- the operation can be initiated when the current time value is at least greater than the preferred time value.
- the operation can be delayed until the preferred time value when the current time value is at least less than the preferred time value.
- a timer can be set to trigger at the preferred time value.
- an apparatus and method of performing an operation on a node in a computing environment includes generating a notification related to the node and obtaining a current time value of the notification.
- the method further involves calculating a preferred time value for responding to the notification and comparing the current time value to the preferred time value.
- The, the operation on the node is initiated based on the comparison of the current time value to the preferred time value.
- an apparatus and method of handling a notification with a service in a computing environment has a process and a node.
- the service performs an operation between the process and the node in response to one or more notifications.
- a latency value and a duration value are determined.
- the latency value substantially represents an expanse of time from a time value of one previous operation performed on the node to a current time value of the notification.
- the duration value substantially represents an amount of time for performing at least one previous operation on the node.
- a ratio of the duration value to the latency value is determined. If the ratio is at least greater than a defined threshold, then operation between the process and the node is initiated. However, the operation between the process and the node can be delayed if the ratio is at least less than the defined threshold.
- a service for performing an operation between a process and a node in a computing environment receives one or more notifications related to the node, and the service handles the one or more notification according to a method.
- the method of handling the one or more notifications involves obtaining a previous time value, and a previous duration value.
- the previous time value is from a previous operation performed on the node.
- the previous duration value substantially represents an amount of time for performing at least one previous operation on the node.
- An incremental value is then calculated by multiplying a weighted criterion times the previous duration value.
- a trigger time for responding to the notification is calculated by adding the incremental value to the previous time value.
- a current time value is compared to the trigger time. If the current time value is at least greater than the trigger time, the operation is initiated. If the current time value is at least less than the trigger time, then the operation is delayed until the preferred time value.
- FIG. 1 illustrates a schematic tree of a file system and illustrates a Finder according to the prior art.
- FIG. 2 illustrates a software stack having an adaptive synchronizing service and data structures according to certain teachings of the present disclosure.
- FIG. 3 schematically illustrates an embodiment of the adaptive synchronizing service and data structures according to certain teachings of the present disclosure.
- FIG. 2 an example of a software stack 10 is illustrated having an adaptive synchronizing service, system, or process 100 according to certain teachings of the present disclosure.
- Embodiments of the service 100 disclosed herein include software.
- the software stack 10 of FIG. 1 expresses an embodiment of common computing software architecture in a plurality of layers 20 , 30 , and 40 .
- These layers 20 , 30 , and 40 are not intended to be exclusive in any way but rather illustrative. This is especially true for layer-type diagrams of software stacks, which software developers tend to express in somewhat differing ways.
- Some layers of software and firmware are omitted from the software stack 10 of FIG. 1 .
- the illustrated software stack 10 is intended to imply that software elements shown in a layer use resources from the layers below and provide services to layers above. However, in practice, not all components of a particular software element may behave entirely in that manner.
- the software stack 10 includes a file system layer 20 , an application frameworks and services layer 30 , and an application layer 40 .
- the file system layer 20 includes a plurality of directories 22 , which are maintained by the file system 20 of the computing environment.
- the directories 22 contain entries (not shown) that are pointers pointing to files or to entries in other directories.
- Layer 30 is an amalgamation of functions typically expressed as two layers (e.g., applications frameworks layer and application services layer). For purposes of our discussion, both these layers provide high-level and often functional support for application programs that reside in the highest layer 40 .
- One application in the application layer includes a finder application (“Finder”) 42 .
- the Finder 42 is a software application having a graphical user interface for displaying contents of the file system 20 .
- the Finder 42 can display files in the directories 22 with icons and can give various information on the file, such as name, file size, last update, creating application, etc.
- the data structure 70 can be a table, tree, or other data file attached to the frameworks and service layer 30 and residing in memory of the computing environment.
- the data structures 70 store data on the directories 22 for the service 100 .
- the data stored in the data structures 70 includes a token identifying a specific directory 22 , a time representing when the last synchronization of the specific directory 22 was performed, a duration representing the amount of time or average time required to perform the last synchronization(s) on the specific directory 22 , and a Boolean value representing whether a self-generated synchronization has been requested for the directory 22 as described below.
- the adaptive synchronizing service 100 is a service within the application frameworks and services layer 30 .
- the service 100 performs adaptive techniques for handling notifications according to certain teachings of the present disclosure.
- the service 100 updates the representation of the directories 22 in the Finder 42 when files (not shown) in the directories 22 of the file system 20 are changed.
- a notification 62 from a notification system 60 is generated when something in the file system 20 , such as contents of the directory 22 have been changed.
- the synchronizing service 100 then adaptively determines whether to respond directly to the notification 62 by synchronizing the Finder 42 and the directory 22 or whether to delay synchronization until a later time.
- the adaptive determination by the service 100 can depend on the priority of the directory 22 or on the available resources of the computing environment.
- a notification 62 is generated from the notification system 60 .
- directories 22 of the file system 20 are registered so that changes to them prompt the notification system 60 to generate a notification 62 .
- the notification 62 is generated when an application changes something in the directory 22 , or the notification 62 is self-generated by the service 100 .
- the notification 62 only notifies the service 100 that something in the directory 22 has been changed and does not indicate what has been changed in the directory 22 , which maintains efficiency of the computer system by limiting memory and processing usage.
- the notification system 60 is preferably an open source notification system, and the notification system 60 and notifications 62 can be similar to notifications for a computing environment that are known in the art.
- the notification system 60 and notifications 62 can be based on the kqueue mechanism, which is a generic event delivery facility known in the art. Teachings of the kqueue mechanism can be found in the paper, “Kqueue: A Scalable and Generic Event Delivery Facility,” which was presented at the BSDCon 2000 conference in Monterey, Calif. by Jonathan Lemon and which is incorporated herein by reference.
- the notifications 62 can communicate kernel-to-application and application-to-application events. Kernel-based notifications provide the opportunity for significant performance gains, by eliminating the need for time-consuming polling and making it easy for tools and services to find out about such items as changed directory files and network disconnects.
- the service 100 synchronizes the directory 22 and the Finder 42 by accessing ( 66 ) the specified directory 22 and updating ( 68 ) the contents of the specified directory 22 in the Finder 42 .
- the amount of work needed to synchronize a directory 22 is substantially proportional to the contents in the directory 22 because the entire contents of the directory 22 must be re-read when synchronizing. If the service 100 were to directly synchronize the directory 22 and the Finder 42 after each notification 62 , the service 100 could very quickly perform nothing other than synchronizing a large directory 22 that is changing frequently. Therefore, the service 100 is preferably designed to handle potentially large sizes and/or frequently changing directories 22 . To improve effectiveness and efficiency, the service 100 preferably includes adaptive techniques for tracking the history of previous synchronizations of the directories 22 and for synchronizing the directories 22 according to defined criteria based on that tracked history.
- the notification 62 simply notifies the service 100 that something in the directory 22 has been changed or that synchronization of the directory is due.
- the adaptive service 100 accesses ( 64 ) data in a specified data structure 71 for the directory indicated in the notification 62 .
- the data structure 71 is tagged for a specific directory 22 using a pointer or other token.
- the notification 62 is given the token of the registered directory 22 when generated so that the specific data structure 71 for the registered directory 22 can be readily accessed.
- the service 100 obtains a previous synchronization time and obtains a duration of one or more synchronizations previously performed on the registered directory 22 .
- the duration can simply be the last duration taken to synchronize the directory 20 , can be a moving average of the last few synchronizations of the directory 22 , or can be a total time spent synchronizing all directories 22 .
- the service 100 compares a current time to the previous synchronization time to calculate a latency period (i.e., the time between the present notification 62 and the last synchronization of the directory 22 ).
- the service 100 uses the duration of the last synchronization to estimate what a current duration would be required to read the same directory 22 .
- the service 100 calculates estimates a percentage of resources, such as CPU usage, that would be used if the directory 22 and the Finder 42 were immediately synchronized.
- the calculated percentage is then compared to a predefined threshold to determine whether synchronization can be done immediately or be delayed.
- the following equation may be used to determine whether the calculated percentage is below a predefined threshold:
- “Duration” is the amount of time or average time for performing the last synchronization on the directory 22 and where “Latency” is the difference between the current time and the time of the last synchronization was performed on the directory 22 . If the percentage of “Duration over Latency” is below the predefined threshold, then the synchronization proceeds. For example, suppose the “Duration” of the last synchronization task of reading the directory 22 was one second. If the predefined threshold value is set to be 10%, then the service 100 will preferably respond to the current notification only after a “Latency” period of 10seconds to maintain the threshold value of 10%.
- the service 100 will read ( 66 ) the directory 22 to update ( 68 ) the Finder 42 . Every time the service 100 performs a synchronization, the service 100 updates the data in the data structure 70 to reflect the most recent time of last synchronization and most recent duration for performing the synchronization on the node.
- the service 100 would either ignore the current notification 62 or delay synchronization. If the threshold is exceeded, it is possible to invert the calculation and determine at what future time the synchronization would cause the CPU usage to drop below the threshold value. As noted in the above example, if the “Duration” of the last synchronization is one second and the predefined threshold value is 10%, then the service 100 would preferably respond to a notification only after ten seconds.
- the threshold value e.g. 10%
- a timer can be set to trigger synchronization at the appropriate time (e.g., within ten seconds) and defer the synchronization until then. If a notification is received in the interim and the timer is still pending on that directory, the interim notification can simply be ignored.
- the net effect is that if the service 100 receives change notifications 62 at a low rate, then the service 100 performs the synchronizations immediately. Yet, if the service 100 receives notifications 60 more frequently, the amount of effort the service 100 devotes to synchronizing the directories 22 is essentially capped. There may be some lag in changes reflected in the Finder 42 because the changes will be synchronized in batches. However, this adaptive technique will never lose changes to the directory 22 , because synchronization between the directory 22 and the Finder 42 at any particular time will reflect all intervening changes of the directory 22 .
- This adaptive synchronizing technique overcomes some of the problems of periodic polling techniques and user-triggered polling techniques described above in the Background Section of the present disclosure.
- the adaptive technique of the service 100 overcomes the inefficiencies that can cause repeated up-dates of the directories 22 in Finder 42 when changes have not even occurred in the directories 22 .
- the adaptive technique of the service 100 overcomes the inefficiencies by placing a cap on the total percentage of available resources that are devoted to synchronizing.
- the service 100 includes a Notification Handler 110 , an Adjusted Sync Function 120 , a Synchronize Function 130 , and a Timer Function 140 .
- the data structure 70 includes a representation or token of a node (“node” field 72 ), a time for the last synchronization (“Last Sync Time”) field 74 , a Boolean value, e.g., TRUE or FALSE, indicating whether a future synchronization is requested for the node (“Sync Requested” field 76 ), and a duration of the synchronizations performed on the node (“Duration” field 78 ).
- a node represents a class of object to be synchronized.
- a node may be a directory, a property store, the visible contents of a window, or any data structure that needs to be updated from external data.
- time represents some unit of time measurement, such as clock time, CPU cycles, or other time measure.
- the Notification Handler 110 receives a change notification 62 when something has been at least potentially changed in a node (e.g., directory of the file system).
- a node e.g., directory of the file system
- the notification system 60 can generate the notification 62 when a process, action, application, or the like 61 alters or manipulates the node.
- an application or some other process making a change to a registered directory can cause the notification system 60 to generate the change notification 62 .
- the Notification Handler 110 can be called when a set timer triggers and causes the notification system 60 to generate a notification 62 , such as discussed below.
- the notification 62 simply indicates that a change has been made and carries no “payload” or additional information related to the change.
- the Notification Handler 110 obtains the Last Sync Time from field 74 of the data structure 70 and calculates an Adjusted Sync Quanta or incremental time value using the Adjusted Sync Function 120 .
- the Adjusted Sync Quanta is used to calculate a preferred time value or Trigger Time, which is then used to determine whether synchronization of the node is due.
- the Adjusted Sync Function 120 the Adjusted Sync Quanta is a time value calculated using available data in the data structure 70 and a weighted criterion for the specific node. In particular, the Adjusted Sync Quanta is calculated by multiplying an adjustment factor (weighted criterion) with the Duration from the field 78 of the data structure 70 for the node.
- the adjustment factor can be fixed.
- the adjustment factor can be dynamic and can be changed in accordance with changes in the computing environment.
- the changes in the computing environment can include, but are not limited to, changes in an application associated with the node, fluctuations in available processing resources, varying interests of the user, operations of various processes on the specific node, the traffic of a network system, availability of a server, or input/output operations performed on a hard disk or other memory device.
- the adjustment factor can be based on a priority or importance of a specified node (e.g., directory).
- a GUI application in the computing environment can display multiple windows with each window showing the contents of a different directory. To better allocate available processing time, it is preferred to synchronize a foreground window more frequently than a background window. Therefore, the different nodes (e.g., directories) can be assigned priorities based on their importance (i.e., whether the directory is displayed in a foreground window or a background window of the GUI application). Priority of a node can be fixed or can be dynamically assigned based on changes in the computing environment.
- the adjustment factor can be a threshold value based on a preferred consumption of processing recourses used to synchronize the node.
- the threshold value can be based on the time required to synchronize the node relative to the time between synchronizations performed on the node.
- the threshold value can be fixed for all nodes or can be dynamically assigned in a given instance based on changes in the computing environment.
- the calculated Adjusted Sync Quanta is preferably greater than or equal to a predefined minimum value. Therefore, the Adjusted Sync Quanta is compared to a minimum quanta value. If the Adjusted Sync Quanta is greater than the minimum quanta value, then the Adjusted Sync Quanta is returned to the Notification Handler 110 . If the Adjusted Sync Quanta is not less than the minimum quanta value, then the Adjusted Sync Quanta is set to the minimum quanta value and is returned to the Notification Handler 110 . Making the Adjusted Sync Quanta not less than minimum quanta value ensures that the same node is never synchronized any more often than specified by the minimum quanta.
- the Notification Handler 110 calculates a Trigger Time by adding the Last Sync Time in field 74 of the data structure 70 using the Adjusted Sync Quanta returned from the Adjusted Sync Function 120 .
- the Trigger Time represents the preferred time from the last synchronization of the node at which synchronizing the node would best meet the preferred priority of the node or the preferred usage of processing resources.
- the Notification Handler 110 then obtains a current time and compares the Trigger Time to the current time. If the current time is greater than the Trigger Time, the Notification Handler 110 sets a Sync Request in field 76 of the data structure 70 to FALSE, and the node is synchronized using the Synchronize Function 130 described below.
- a synchronization is not already scheduled to occur at a set trigger time (i.e., the Sync Request in field 76 of the data structure 70 is not TRUE), then the Sync Request is set to TRUE.
- a timer for handling the synchronization request is set to the Trigger Time using the Timer Function 140 described below.
- the Notification Handler 110 accesses the Synchronize Function 130 if the current time is greater than the Trigger Time, which means synchronizing the node is currently warranted.
- the Synchronize Function 130 actually does the necessary synchronization of the node (e.g., directory) and is only called from Notification Handler 110 .
- a start time is set to a current time obtained.
- a routine then does the actual synchronization on the node.
- the synchronization can involve reading a directory of a file system and updating a graphical user interface to reflect the new reading of the directory, as described in previous examples.
- the adaptive techniques of the present invention can involve operations other than synchronizing.
- the other operations can include, but are not limited to, updating the attributes in a property store, or redrawing the contents of a window in response to changes in the underlying data that it displays.
- an end time is set to a subsequent current time obtained.
- the start time determined previously is then stored in the data structure 70 as the Last Sync Time in field 74 , and the difference between the end time and the start time is applied to the Duration in field 78 of the data structure 70 for the node.
- the difference can directly substitute a previous value for the Duration in field 78 .
- the difference can be added to a value of previous synchronizations stored in an accumulative field (not shown) of the data structure 70 and divided by a total number of synchronizations stored in another field (not shown) to determine a running average for storing as the Duration in field 78 .
- the Notification Handler 110 accesses the Timer Function 140 if the Sync Requested in field 76 of the data structure 70 was previously not TRUE.
- the Timer Function 140 sets a timer for handling the requested synchronization. If the Notification Handler 110 receives an interim notification 62 while the timer is pending, the Notification Handler 110 can first determine if a Sync Request in field 76 of the data structure is TRUE. If the request is TRUE, then the Notification Handler 110 recognizes that a timer and a request for performing synchronization are already pending. Therefore, the Notification Handler 110 can ignore the interim notification 62 .
- the timer triggers when a current time equals the stored Trigger Time, causing the Notification Handler 110 to perform its algorithm. For example, triggering of the timer can cause the notification system 60 to generate a new notification 62 that is received by the Notification Handler 110 .
- Exemplary or pseudo code for performing adaptive techniques for handling notifications and synchronizing according to certain teachings of the present disclosure is provided below.
- multiple threads are used, and techniques known in the art involving locking primitives are used to ensure correct behavior of the multiple threads.
- the exemplary code omits details that can be inferred from the present disclosure or that can be specific to a particular implementation. Such details fall within the purview of a person skilled in the art of programming.
- a node represents a class of object to be synchronized (e.g., directory or property store).
- time which is also used for durations, represents some unit of time measurement. For example, time can be clock time, CPU cycles, or other time measurement used in computing.
- Node represents the class of the object to be // synchronized. Time represents some unit of time // measurement and is also used for durations. //----------------------Get-Set last SyncTime------------- // Get and set the last sync time for node. This time is // considered a field of node. void SetLastSyncTime( Node node, Time time ); Time GetLastSyncTime( Node ); //----------------------Get-Set Last SyncDuration------------- // Get and Set the last SyncDuration.
- the Duration returned // may in fact be the actual duration for the last sync of // node or it could be running average of the last few syncs // of node or it could even be a duration which is a running // average of all syncs of all nodes.
- This information is // considered a stored field, either of node or globally // available. void SetLastSyncDuration( Node node, Time time ); Time GetLastSyncDuration( Node ); //------------------------------------------Get-Set SynchRequest-------------------- // Get and set a flag that indicates that a sync timer // already exists. This is considered a field of node.
- the returned // quanta is always greater than or equal to a pre specified // minimum quanta.
- the disclosed adaptive techniques for handling notifications are not restricted to synchronizing or updating directories of a file system and a graphical user interface as disclosed in the exemplary implementation of the present disclosure. Rather, the disclosed adaptive techniques for handling notifications can be applied to any system where low-level notifications can cause a recipient (e.g., process, user interface, etc.) of the notifications to perform unbounded work.
- a recipient e.g., process, user interface, etc.
- the adaptive techniques for handling notifications of the present disclosure can be used when attributes associated with a file or object are changed.
- the attributes typically reside in a property store of the computing environment.
- the property store is a database that contains various attributes of the objects.
- the adaptive techniques of the present disclosure can be useful to prevent unbounded, inefficient work in updating or writing out the properties store.
- a notification can be generated in response.
- the adaptive techniques of the present disclosure can determine whether to write out the property store immediately or to delay responding to the changed attribute until a later time.
- the time required (duration) for writing of the property store the last time an attribute was changed can be stored in a data structure for the property store.
- the adaptive techniques can then calculate the amount of time (latency) between the currently requested attribute change and the last time the property store was written out. Then, the adaptive techniques can determine the ratio of the duration over the latency and compare the ratio to a predefined threshold. If the requested change is premature (i.e., the ratio exceeds the predefined threshold), the attribute change can be stored in memory and writing out the property store can be delayed.
- Subsequent changes to attributes can be stored until the ratio does not exceed the predefined threshold or until a set timer triggers the process of writing out the property file.
- the property store is written out with all of the changed attributes.
- the CPU usage can be controlled and any repeated, expensive writing out of the property store can be minimized when small changes or frequent changes are made to the attributes of the property store.
- the present disclosure amply illustrates to a computer programmer of skill how to make and use the disclosed adaptive techniques for handling notifications and the accompanying user interfaces and other functional aspects. Therefore, programming such techniques, accompanying user interfaces, and other functional aspects is a routine matter to a computer programmer of skill and can be accomplished using many different programming languages and within the context of many different operating systems.
- the disclosed techniques would be ultimately coded into a computer code and stored on a computer-readable media, such as a compact disk, a tape, stored in a volatile or non-volatile memory, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Adaptive techniques for handling notifications and updating a directory of a file system in a graphical user interface of a computing environment. Adaptive techniques include determining that something has been potentially changed in the node. A time of the notification is obtained, and a preferred time value or trigger time for responding to the notification is calculated. The preferred time value may be calculated by adding an adjustment to a recorded time of the last synchronization performed on the directory. The adjustment may be calculated by weighting duration of synchronizations performed on the directory. Adaptive techniques may then compare the time value to the trigger time. If the time value is less than the trigger time, the display and directory are synchronized. Otherwise, a timer may be set to the trigger time, and synchronization of the display and directory may be delayed until the trigger time.
Description
- This Application is a Continuation of application Ser. No. 10/877,125 filed 25 Jun. 2004 by Peter McInerney having the same title as the instant application. This application claims priority to application Ser. No. 10/877,125 and incorporates it by reference in its entirety for all purposes.
- The subject matter of the present disclosure generally relates to techniques for controlling operation (e.g., synchronization or up-dating) of a process related to a node in response to changes made to the node that can cause the process to perform labor intensive work. More particularly, the subject matter of the present disclosure relates to techniques for updating a graphical user interface (GUI) display of a file system directory by adaptively synchronizing the directory and the application having the GUI display when notifications of a change made to the directory are received.
- Referring to
FIG. 1 , afile system 2 of a computing environment is schematically represented as a tree ofdirectories 4 and files 6. Adirectory 4 is a special type of file maintained by thefile system 2 that contains a list of entries. A Finder 8 is an application of the computing environment that has a graphical user interface (GUI). The graphical user interface of the Finder 8 allows the user to view thedirectories 4 and files 6 in thefile system 2. For example, the window of the Finder 8 typically displays icons and file names and can display other information about the files, such as file size, application, date last saved, etc. To a user, entries of adirectory 4 appear as folders or files having the file names and other related information in the Finder 8. Actually, each entry of adirectory 4 is a pointer pointing directly to a file 6 or to an entry in anotherdirectory 4. - Various processes in the computing environment can access and change
directories 4 and files 6 of thefile system 2. While the Finder 8 is open, for example, other processes of the computing environment (e.g., operators, tools, or applications) can manipulate the file system 2 (e.g., add, delete, or edit files 6) so that thedirectory 4 of files 6 displayed in the Finder 8 is not current. Maintaining an up-to-date display ofdirectories 4 and files 6 of thefile system 2 in the Finder 8 can be important. To keep the representation of thefile system 2 up-to-date in the Finder 8, some methods for synchronizing the Finder 8 with changes to thedirectories 2 are used in the art. - One synchronizing method known in the art involves periodically polling a
directory 4 at regular intervals to keep the representation of thedirectory 4 up-to-date in the Finder 8. The periodic polling involves rereading all the data from thedirectory 4 and updating the display of the Finder 8 according to some schedule. Unfortunately, such polling is inefficient because intensive input and output operations (e.g., touching the disk of the hard drive and re-reading directories) must be performed even if no files 6 have been changed in thedirectory 4. Thus, the periodic polling may do unnecessary and intensive work. In addition, polling can be ineffective because the Finder 8 is not updated between intervals when an operator, tool, or application may need an up to date directory. - Another synchronizing method involves detecting specific triggers that indicate the user's current interests in files 6 of the
directory 4 and possible changes to those files 6. This synchronizing method is similar to what is performed in Mac OS X Panther and earlier versions of Mac OS X. The triggers can be generated by opening the attached folder, closing the window of the attached folder, moving or resizing the window of the attached folder, placing items into the attached folder, or removing items from the attached folder. The triggers can trigger re-reading of a directory to update the Finder 8. This synchronizing method has the advantage of limiting the polling of thedirectory 4 and updating the Finder 8 only when the user indicates interest. Unfortunately, changes will not be noticed until there is user-action. The Finder 8 cannot notice a change in adirectory 4 unless a trigger is assigned to a particular action, and other processes (users on a network, tools, or applications) lacking triggers may operate in the background of the computer system and may not trigger the update of the finder. - The subject matter of the present disclosure is directed to overcoming, or at least reducing the effects of, one or more of the problems set forth above.
- In one embodiment of the present disclosure, an apparatus and method of handling a notification with a service in a computing environment is disclosed. The computing environment has a process and a node. The service performs an operation between the process and the node in response to one or more notifications. The notifications can be generated in response to a change at least potentially made to the node, generated when another process performs an action related to the node, or generated in response to a triggered timer.
- In one example, the node can be a directory of a file system, and the process can be a graphical user interface for displaying contents of the directory. A notification can be generated when a change is made to the directory. Thus, the operation can involve synchronizing the graphical user interface and the directory by updating the display of the directory in the graphical user interface.
- In another example, the node can be a property store in which an attribute of an object resides, and the process can be capable of changing the attribute of the object. A notification can be generated when a change is made to an attribute of an object. Thus, the operation between the process and the property store can involve updating the attribute of the object in the property store.
- In the present embodiment, the disclosed apparatus and method involves obtaining a current time value of a notification and calculating a preferred time value for responding to the notification. The current time value is then compared to the preferred time value, and the operation between the process and the node is initiated based on the comparison of the current time value to the preferred time value.
- The preferred time value can be calculated by adding an incremental value to the previous time value. The incremental value can be calculated by weighting a previous duration value, where the previous duration value substantially represents an amount of time for performing at least one previous operation on the node. For example, the previous duration value can substantially represent a discrete amount of time for performing one previous operation on the node. Alternatively, for example, the previous duration value can substantially represent an average amount of time for performing a plurality of previous operations on the node. Weighting the duration value can involve multiplying a factor times the duration value. The factor can be based on a defined threshold or on a priority assigned to the node.
- Accordingly, the operation can be initiated when the current time value is at least greater than the preferred time value. In contrast, the operation can be delayed until the preferred time value when the current time value is at least less than the preferred time value. To delay the operation until the preferred time value, a timer can be set to trigger at the preferred time value.
- This and other embodiments of the present disclosure can be implemented as a computer-readable medium having computer executable instructions.
- In another embodiment of the present discloser, an apparatus and method of performing an operation on a node in a computing environment is disclosed. The method includes generating a notification related to the node and obtaining a current time value of the notification. The method further involves calculating a preferred time value for responding to the notification and comparing the current time value to the preferred time value. The, the operation on the node is initiated based on the comparison of the current time value to the preferred time value.
- In another embodiment of the present disclosure, an apparatus and method of handling a notification with a service in a computing environment is disclosed. The computing environment has a process and a node. The service performs an operation between the process and the node in response to one or more notifications. When a notification is received, a latency value and a duration value are determined. The latency value substantially represents an expanse of time from a time value of one previous operation performed on the node to a current time value of the notification. The duration value substantially represents an amount of time for performing at least one previous operation on the node. Then, a ratio of the duration value to the latency value is determined. If the ratio is at least greater than a defined threshold, then operation between the process and the node is initiated. However, the operation between the process and the node can be delayed if the ratio is at least less than the defined threshold.
- In another embodiment of the present disclosure, a service for performing an operation between a process and a node in a computing environment is disclosed. The service receives one or more notifications related to the node, and the service handles the one or more notification according to a method. The method of handling the one or more notifications involves obtaining a previous time value, and a previous duration value. The previous time value is from a previous operation performed on the node. The previous duration value substantially represents an amount of time for performing at least one previous operation on the node. An incremental value is then calculated by multiplying a weighted criterion times the previous duration value. In addition, a trigger time for responding to the notification is calculated by adding the incremental value to the previous time value. Then, a current time value is compared to the trigger time. If the current time value is at least greater than the trigger time, the operation is initiated. If the current time value is at least less than the trigger time, then the operation is delayed until the preferred time value.
- The foregoing summary is not intended to summarize each disclosed or potential embodiment or every aspect of the present disclosure.
- The foregoing summary, preferred embodiments, and other aspects of subject matter of the present disclosure will be best understood with reference to a detailed description of specific embodiments, which follows, when read in conjunction with the accompanying drawings, in which:
-
FIG. 1 illustrates a schematic tree of a file system and illustrates a Finder according to the prior art. -
FIG. 2 illustrates a software stack having an adaptive synchronizing service and data structures according to certain teachings of the present disclosure. -
FIG. 3 schematically illustrates an embodiment of the adaptive synchronizing service and data structures according to certain teachings of the present disclosure. - While the disclosed adaptive synchronizing service and techniques are susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and are herein described in detail. The figures and written description are not intended to limit the scope of the inventive concepts in any manner. Rather, the figures and written description are provided to illustrate the inventive concepts to a person skilled in the art by reference to particular embodiments, as required by 35 U.S.C. §112.
- Referring to
FIG. 2 , an example of asoftware stack 10 is illustrated having an adaptive synchronizing service, system, orprocess 100 according to certain teachings of the present disclosure. Embodiments of theservice 100 disclosed herein include software. As such, thesoftware stack 10 ofFIG. 1 expresses an embodiment of common computing software architecture in a plurality oflayers layers software stack 10 ofFIG. 1 . The illustratedsoftware stack 10 is intended to imply that software elements shown in a layer use resources from the layers below and provide services to layers above. However, in practice, not all components of a particular software element may behave entirely in that manner. - With those caveats, the
software stack 10 includes afile system layer 20, an application frameworks andservices layer 30, and anapplication layer 40. Thefile system layer 20 includes a plurality ofdirectories 22, which are maintained by thefile system 20 of the computing environment. Thedirectories 22 contain entries (not shown) that are pointers pointing to files or to entries in other directories.Layer 30 is an amalgamation of functions typically expressed as two layers (e.g., applications frameworks layer and application services layer). For purposes of our discussion, both these layers provide high-level and often functional support for application programs that reside in thehighest layer 40. One application in the application layer includes a finder application (“Finder”) 42. TheFinder 42 is a software application having a graphical user interface for displaying contents of thefile system 20. For example, theFinder 42 can display files in thedirectories 22 with icons and can give various information on the file, such as name, file size, last update, creating application, etc. - In addition,
data structures 70 are illustrated inFIG. 2 . Thedata structure 70 can be a table, tree, or other data file attached to the frameworks andservice layer 30 and residing in memory of the computing environment. Thedata structures 70 store data on thedirectories 22 for theservice 100. As described in more detail below, the data stored in thedata structures 70 includes a token identifying aspecific directory 22, a time representing when the last synchronization of thespecific directory 22 was performed, a duration representing the amount of time or average time required to perform the last synchronization(s) on thespecific directory 22, and a Boolean value representing whether a self-generated synchronization has been requested for thedirectory 22 as described below. - The
adaptive synchronizing service 100 is a service within the application frameworks andservices layer 30. Theservice 100 performs adaptive techniques for handling notifications according to certain teachings of the present disclosure. Using the adaptive techniques, theservice 100 updates the representation of thedirectories 22 in theFinder 42 when files (not shown) in thedirectories 22 of thefile system 20 are changed. In the adaptive techniques, anotification 62 from anotification system 60 is generated when something in thefile system 20, such as contents of thedirectory 22 have been changed. Thesynchronizing service 100 then adaptively determines whether to respond directly to thenotification 62 by synchronizing theFinder 42 and thedirectory 22 or whether to delay synchronization until a later time. The adaptive determination by theservice 100 can depend on the priority of thedirectory 22 or on the available resources of the computing environment. - 1. Notification System
- When something in a
directory 22 is changed by a process, action, application, or the like 61, anotification 62 is generated from thenotification system 60. Preferably,directories 22 of thefile system 20 are registered so that changes to them prompt thenotification system 60 to generate anotification 62. For example, thenotification 62 is generated when an application changes something in thedirectory 22, or thenotification 62 is self-generated by theservice 100. Thenotification 62 only notifies theservice 100 that something in thedirectory 22 has been changed and does not indicate what has been changed in thedirectory 22, which maintains efficiency of the computer system by limiting memory and processing usage. - The
notification system 60 is preferably an open source notification system, and thenotification system 60 andnotifications 62 can be similar to notifications for a computing environment that are known in the art. In one embodiment, for example, thenotification system 60 andnotifications 62 can be based on the kqueue mechanism, which is a generic event delivery facility known in the art. Teachings of the kqueue mechanism can be found in the paper, “Kqueue: A Scalable and Generic Event Delivery Facility,” which was presented at the BSDCon 2000 conference in Monterey, Calif. by Jonathan Lemon and which is incorporated herein by reference. Thenotifications 62 can communicate kernel-to-application and application-to-application events. Kernel-based notifications provide the opportunity for significant performance gains, by eliminating the need for time-consuming polling and making it easy for tools and services to find out about such items as changed directory files and network disconnects. - In general, the
service 100 synchronizes thedirectory 22 and theFinder 42 by accessing (66) the specifieddirectory 22 and updating (68) the contents of the specifieddirectory 22 in theFinder 42. The amount of work needed to synchronize adirectory 22 is substantially proportional to the contents in thedirectory 22 because the entire contents of thedirectory 22 must be re-read when synchronizing. If theservice 100 were to directly synchronize thedirectory 22 and theFinder 42 after eachnotification 62, theservice 100 could very quickly perform nothing other than synchronizing alarge directory 22 that is changing frequently. Therefore, theservice 100 is preferably designed to handle potentially large sizes and/or frequently changingdirectories 22. To improve effectiveness and efficiency, theservice 100 preferably includes adaptive techniques for tracking the history of previous synchronizations of thedirectories 22 and for synchronizing thedirectories 22 according to defined criteria based on that tracked history. - 2. Responding to Notifications
- As noted above, the
notification 62 simply notifies theservice 100 that something in thedirectory 22 has been changed or that synchronization of the directory is due. Before automatically synchronizing thedirectory 22, however, theadaptive service 100 accesses (64) data in a specifieddata structure 71 for the directory indicated in thenotification 62. Thedata structure 71 is tagged for aspecific directory 22 using a pointer or other token. Thenotification 62 is given the token of the registereddirectory 22 when generated so that thespecific data structure 71 for the registereddirectory 22 can be readily accessed. From thedata structure 71, theservice 100 obtains a previous synchronization time and obtains a duration of one or more synchronizations previously performed on the registereddirectory 22. The duration can simply be the last duration taken to synchronize thedirectory 20, can be a moving average of the last few synchronizations of thedirectory 22, or can be a total time spent synchronizing alldirectories 22. - The
service 100 then compares a current time to the previous synchronization time to calculate a latency period (i.e., the time between thepresent notification 62 and the last synchronization of the directory 22). Theservice 100 uses the duration of the last synchronization to estimate what a current duration would be required to read thesame directory 22. Given this data, theservice 100 calculates estimates a percentage of resources, such as CPU usage, that would be used if thedirectory 22 and theFinder 42 were immediately synchronized. The calculated percentage is then compared to a predefined threshold to determine whether synchronization can be done immediately or be delayed. The following equation may be used to determine whether the calculated percentage is below a predefined threshold: -
- where “Duration” is the amount of time or average time for performing the last synchronization on the
directory 22 and where “Latency” is the difference between the current time and the time of the last synchronization was performed on thedirectory 22. If the percentage of “Duration over Latency” is below the predefined threshold, then the synchronization proceeds. For example, suppose the “Duration” of the last synchronization task of reading thedirectory 22 was one second. If the predefined threshold value is set to be 10%, then theservice 100 will preferably respond to the current notification only after a “Latency” period of 10seconds to maintain the threshold value of 10%. Thus, if the current notification is received ten seconds or more from the time the last synchronization was performed, theservice 100 will read (66) thedirectory 22 to update (68) theFinder 42. Every time theservice 100 performs a synchronization, theservice 100 updates the data in thedata structure 70 to reflect the most recent time of last synchronization and most recent duration for performing the synchronization on the node. - However, suppose the “Duration” of the last synchronization task of reading the
directory 22 is one second and the “Latency” (time since last reading the directory) is two seconds, then responding to thenotification 62 would give a response value of 50%, which is well above the threshold value (e.g., 10%) preferred by theservice 100. In this case, theservice 100 would either ignore thecurrent notification 62 or delay synchronization. If the threshold is exceeded, it is possible to invert the calculation and determine at what future time the synchronization would cause the CPU usage to drop below the threshold value. As noted in the above example, if the “Duration” of the last synchronization is one second and the predefined threshold value is 10%, then theservice 100 would preferably respond to a notification only after ten seconds. In this case, a timer can be set to trigger synchronization at the appropriate time (e.g., within ten seconds) and defer the synchronization until then. If a notification is received in the interim and the timer is still pending on that directory, the interim notification can simply be ignored. - The net effect is that if the
service 100 receiveschange notifications 62 at a low rate, then theservice 100 performs the synchronizations immediately. Yet, if theservice 100 receivesnotifications 60 more frequently, the amount of effort theservice 100 devotes to synchronizing thedirectories 22 is essentially capped. There may be some lag in changes reflected in theFinder 42 because the changes will be synchronized in batches. However, this adaptive technique will never lose changes to thedirectory 22, because synchronization between thedirectory 22 and theFinder 42 at any particular time will reflect all intervening changes of thedirectory 22. - This adaptive synchronizing technique overcomes some of the problems of periodic polling techniques and user-triggered polling techniques described above in the Background Section of the present disclosure. In particular, the adaptive technique of the
service 100 overcomes the inefficiencies that can cause repeated up-dates of thedirectories 22 inFinder 42 when changes have not even occurred in thedirectories 22. Moreover, the adaptive technique of theservice 100 overcomes the inefficiencies by placing a cap on the total percentage of available resources that are devoted to synchronizing. - Referring to
FIG. 3 , an embodiment of theadaptive synchronizing service 100 and adata structure 70 according to certain teachings of the present disclosure are schematically illustrated. Theservice 100 includes aNotification Handler 110, anAdjusted Sync Function 120, a SynchronizeFunction 130, and aTimer Function 140. Thedata structure 70, schematically shown in tabular form, includes a representation or token of a node (“node” field 72), a time for the last synchronization (“Last Sync Time”)field 74, a Boolean value, e.g., TRUE or FALSE, indicating whether a future synchronization is requested for the node (“Sync Requested” field 76), and a duration of the synchronizations performed on the node (“Duration” field 78). In the discussion that follows, a node represents a class of object to be synchronized. For example, a node may be a directory, a property store, the visible contents of a window, or any data structure that needs to be updated from external data. In the discussion that follows, time represents some unit of time measurement, such as clock time, CPU cycles, or other time measure. - 1. Calling Notification Handler
- The
Notification Handler 110 receives achange notification 62 when something has been at least potentially changed in a node (e.g., directory of the file system). As noted above, thenotification system 60 can generate thenotification 62 when a process, action, application, or the like 61 alters or manipulates the node. For example, an application or some other process making a change to a registered directory can cause thenotification system 60 to generate thechange notification 62. Alternatively, theNotification Handler 110 can be called when a set timer triggers and causes thenotification system 60 to generate anotification 62, such as discussed below. Thenotification 62 simply indicates that a change has been made and carries no “payload” or additional information related to the change. - 2. Calculating an Adjusted Sync Quanta
- When called, the
Notification Handler 110 obtains the Last Sync Time fromfield 74 of thedata structure 70 and calculates an Adjusted Sync Quanta or incremental time value using the AdjustedSync Function 120. The Adjusted Sync Quanta is used to calculate a preferred time value or Trigger Time, which is then used to determine whether synchronization of the node is due. In the AdjustedSync Function 120, the Adjusted Sync Quanta is a time value calculated using available data in thedata structure 70 and a weighted criterion for the specific node. In particular, the Adjusted Sync Quanta is calculated by multiplying an adjustment factor (weighted criterion) with the Duration from thefield 78 of thedata structure 70 for the node. The adjustment factor (weighted criterion) can be fixed. Alternatively, the adjustment factor (weighted criterion) can be dynamic and can be changed in accordance with changes in the computing environment. The changes in the computing environment can include, but are not limited to, changes in an application associated with the node, fluctuations in available processing resources, varying interests of the user, operations of various processes on the specific node, the traffic of a network system, availability of a server, or input/output operations performed on a hard disk or other memory device. - In one embodiment, the adjustment factor can be based on a priority or importance of a specified node (e.g., directory). For example, a GUI application in the computing environment can display multiple windows with each window showing the contents of a different directory. To better allocate available processing time, it is preferred to synchronize a foreground window more frequently than a background window. Therefore, the different nodes (e.g., directories) can be assigned priorities based on their importance (i.e., whether the directory is displayed in a foreground window or a background window of the GUI application). Priority of a node can be fixed or can be dynamically assigned based on changes in the computing environment.
- In an alternative embodiment, the adjustment factor can be a threshold value based on a preferred consumption of processing recourses used to synchronize the node. For example, the threshold value can be based on the time required to synchronize the node relative to the time between synchronizations performed on the node. The threshold value can be fixed for all nodes or can be dynamically assigned in a given instance based on changes in the computing environment.
- The calculated Adjusted Sync Quanta is preferably greater than or equal to a predefined minimum value. Therefore, the Adjusted Sync Quanta is compared to a minimum quanta value. If the Adjusted Sync Quanta is greater than the minimum quanta value, then the Adjusted Sync Quanta is returned to the
Notification Handler 110. If the Adjusted Sync Quanta is not less than the minimum quanta value, then the Adjusted Sync Quanta is set to the minimum quanta value and is returned to theNotification Handler 110. Making the Adjusted Sync Quanta not less than minimum quanta value ensures that the same node is never synchronized any more often than specified by the minimum quanta. - 3. Calculating a Trigger Time
- The
Notification Handler 110 calculates a Trigger Time by adding the Last Sync Time infield 74 of thedata structure 70 using the Adjusted Sync Quanta returned from the AdjustedSync Function 120. The Trigger Time represents the preferred time from the last synchronization of the node at which synchronizing the node would best meet the preferred priority of the node or the preferred usage of processing resources. TheNotification Handler 110 then obtains a current time and compares the Trigger Time to the current time. If the current time is greater than the Trigger Time, theNotification Handler 110 sets a Sync Request infield 76 of thedata structure 70 to FALSE, and the node is synchronized using the SynchronizeFunction 130 described below. Otherwise, if a synchronization is not already scheduled to occur at a set trigger time (i.e., the Sync Request infield 76 of thedata structure 70 is not TRUE), then the Sync Request is set to TRUE. In addition, a timer for handling the synchronization request is set to the Trigger Time using theTimer Function 140 described below. - 4. Synchronize Function
- As noted above, the
Notification Handler 110 accesses the SynchronizeFunction 130 if the current time is greater than the Trigger Time, which means synchronizing the node is currently warranted. The SynchronizeFunction 130 actually does the necessary synchronization of the node (e.g., directory) and is only called fromNotification Handler 110. During synchronization, a start time is set to a current time obtained. A routine then does the actual synchronization on the node. For example, the synchronization can involve reading a directory of a file system and updating a graphical user interface to reflect the new reading of the directory, as described in previous examples. Although the present embodiment involves a synchronizing operation (e.g., reading a directory and updating a graphical user interface), the adaptive techniques of the present invention can involve operations other than synchronizing. For example, the other operations can include, but are not limited to, updating the attributes in a property store, or redrawing the contents of a window in response to changes in the underlying data that it displays. - When synchronization is complete, an end time is set to a subsequent current time obtained. The start time determined previously is then stored in the
data structure 70 as the Last Sync Time infield 74, and the difference between the end time and the start time is applied to the Duration infield 78 of thedata structure 70 for the node. For example, the difference can directly substitute a previous value for the Duration infield 78. Alternatively, the difference can be added to a value of previous synchronizations stored in an accumulative field (not shown) of thedata structure 70 and divided by a total number of synchronizations stored in another field (not shown) to determine a running average for storing as the Duration infield 78. - 5. Timer Function
- As noted above, the
Notification Handler 110 accesses theTimer Function 140 if the Sync Requested infield 76 of thedata structure 70 was previously not TRUE. TheTimer Function 140 sets a timer for handling the requested synchronization. If theNotification Handler 110 receives aninterim notification 62 while the timer is pending, theNotification Handler 110 can first determine if a Sync Request infield 76 of the data structure is TRUE. If the request is TRUE, then theNotification Handler 110 recognizes that a timer and a request for performing synchronization are already pending. Therefore, theNotification Handler 110 can ignore theinterim notification 62. In theTimer Function 140, the timer triggers when a current time equals the stored Trigger Time, causing theNotification Handler 110 to perform its algorithm. For example, triggering of the timer can cause thenotification system 60 to generate anew notification 62 that is received by theNotification Handler 110. - 6. Exemplary Code
- Exemplary or pseudo code for performing adaptive techniques for handling notifications and synchronizing according to certain teachings of the present disclosure is provided below. In the implementation disclosed herein for synchronizing file systems, multiple threads are used, and techniques known in the art involving locking primitives are used to ensure correct behavior of the multiple threads. For clarity, the exemplary code omits details that can be inferred from the present disclosure or that can be specific to a particular implementation. Such details fall within the purview of a person skilled in the art of programming. In the exemplary code, a node represents a class of object to be synchronized (e.g., directory or property store). In the exemplary code, time, which is also used for durations, represents some unit of time measurement. For example, time can be clock time, CPU cycles, or other time measurement used in computing.
-
// Node represents the class of the object to be // synchronized. Time represents some unit of time // measurement and is also used for durations. //-------------------Get-Set last SyncTime------------- // Get and set the last sync time for node. This time is // considered a field of node. void SetLastSyncTime( Node node, Time time ); Time GetLastSyncTime( Node ); //-------------------Get-Set Last SyncDuration------------- // Get and Set the last SyncDuration. The Duration returned // may in fact be the actual duration for the last sync of // node or it could be running average of the last few syncs // of node or it could even be a duration which is a running // average of all syncs of all nodes. This information is // considered a stored field, either of node or globally // available. void SetLastSyncDuration( Node node, Time time ); Time GetLastSyncDuration( Node ); //---------------------Get-Set SynchRequest----------------- // Get and set a flag that indicates that a sync timer // already exists. This is considered a field of node. Boolean GetSyncRequested( Node node ); void SetSyncRequested( Node node, Boolean requested ); //--------------------GetAdjustedSyncQuanta---------------- // Return a time based on available data and the specific // node that specifies the adjusted quanta. The returned // quanta is always greater than or equal to a pre specified // minimum quanta. Time GetAdjustedSyncQuanta( Node node ) { //---------------------GetAdjustment------------------- // GetAdjustment may return a simple constant such as // 10 which would correspond to a 10% threshold or it // could return a different value depending on whether // the node was considered high priority or not. For // example, if the active window was showing node it // could be higher priority than if node was shown in a // background window. int factor = GetAdjustment( node ); Time adjustedQuanta = factor * GetLastSyncDuration( node ); return ( adjustedQuanta > minimumQuanta) ? adjustedQuanta : minimumQuanta; } //---------------------Timer----------------------- // Set a timer to call NotificationHandler at the // triggerTime. This will ultimately cause Synchronize( node // ) to be called at that time. void SetTimerToHandleSyncRequest( Node node, Time triggerTime ); //--------------------Synchronize--------------------------- // Synchronize does the necessary synchronization. It is // only ever called from NotificationHandler void Synchronize( Node node ) { Time startTime = GetCurrentTime( ); DoSync( node ); // does the actual syncing Time endTime = GetCurrentTime( ); SetLastSyncTime( node, startTime ); SetLastSyncDuration( node, endTime − startTime ); } //----------------NotificationHandler----------------------- // NotificationHandler is called when a lower level change // notification occurs or as a result of a self generated // notification that occurs when the set timer fires. void NotificationHandler( Node node ) { Time lastSyncTime = GetLastSyncTime( node ); Time adjustedSyncQuanta = GetAdjustedSyncQuanta(node); Time triggerTime = lastSyncTime + adjustedSyncQuanta; Time currentTime = GetCurrentTime( ); //----------------------------------------------------- // If we have exceeded the trigger threshold then sync // right away // ---------------------------------------------------- if( currentTime > triggerTime ) { SetSyncRequested( node, false ); Synchronize( node ); } //---------------------------------------------------- // Otherwise if we haven't already got a sync scheduled // set one to fire at the trigger time //---------------------------------------------------- else if( !GetSyncRequested( node ) ) { SetSyncRequested( node, true ); SetTimerToHandleSyncRequest( node, triggerTime ); } } - The disclosed adaptive techniques for handling notifications are not restricted to synchronizing or updating directories of a file system and a graphical user interface as disclosed in the exemplary implementation of the present disclosure. Rather, the disclosed adaptive techniques for handling notifications can be applied to any system where low-level notifications can cause a recipient (e.g., process, user interface, etc.) of the notifications to perform unbounded work.
- In another example implementation, the adaptive techniques for handling notifications of the present disclosure can be used when attributes associated with a file or object are changed. The attributes typically reside in a property store of the computing environment. The property store is a database that contains various attributes of the objects. When a user changes an attribute, such as the label color, of an object, the entire property store typically must be updated (i.e., “written out”). Therefore, making a small attribute change can result in an intensive response by a recipient process because the property store is often large. Certainly, the property store encompasses more than the attribute that has been changed. In this situation, the adaptive techniques of the present disclosure can be useful to prevent unbounded, inefficient work in updating or writing out the properties store.
- When a user sets a label color, for example, a notification can be generated in response. When receiving the notification, the adaptive techniques of the present disclosure can determine whether to write out the property store immediately or to delay responding to the changed attribute until a later time. The time required (duration) for writing of the property store the last time an attribute was changed can be stored in a data structure for the property store. The adaptive techniques can then calculate the amount of time (latency) between the currently requested attribute change and the last time the property store was written out. Then, the adaptive techniques can determine the ratio of the duration over the latency and compare the ratio to a predefined threshold. If the requested change is premature (i.e., the ratio exceeds the predefined threshold), the attribute change can be stored in memory and writing out the property store can be delayed. Subsequent changes to attributes can be stored until the ratio does not exceed the predefined threshold or until a set timer triggers the process of writing out the property file. In this way, the property store is written out with all of the changed attributes. In addition, the CPU usage can be controlled and any repeated, expensive writing out of the property store can be minimized when small changes or frequent changes are made to the attributes of the property store.
- The present disclosure amply illustrates to a computer programmer of skill how to make and use the disclosed adaptive techniques for handling notifications and the accompanying user interfaces and other functional aspects. Therefore, programming such techniques, accompanying user interfaces, and other functional aspects is a routine matter to a computer programmer of skill and can be accomplished using many different programming languages and within the context of many different operating systems. Of course, the disclosed techniques would be ultimately coded into a computer code and stored on a computer-readable media, such as a compact disk, a tape, stored in a volatile or non-volatile memory, etc.
- The foregoing description of preferred and other embodiments in the present disclosure is not intended to limit or restrict the scope or applicability of the inventive concepts conceived by the Applicant. In exchange for disclosing the inventive concepts contained herein, the Applicant desires all patent rights afforded by the appended claims. Therefore, it is intended that the appended claims include all modifications and alterations to the full extent that they come within the scope of the following claims or the equivalents thereof.
Claims (20)
1. A method of synchronizing a display representation of data with changes associated with the data, the method comprising:
determining a change to data, the data associated with a graphical representation of the data;
calculating a preferred time value for synchronizing the graphical representation with the determined change to data, the preferred time value based at least partially on a duration of time taken to perform at least one previous synchronization of the graphical representation;
comparing a current time value to the preferred time value; and
determining a synchronization time based on results of the comparison, the synchronization time identifying a time to initiate a synchronization of the graphical representation.
2. The method of claim 1 , wherein the data comprises attributes of files in a file system.
2. The method of claim 1 , wherein the data comprises attributes of objects in a property store.
3. The method of claim 3 , wherein the property store comprises a registry.
4. The method of claim 4 , wherein the registry comprises a registry of a computer operating system.
5. The method of claim 1 , wherein determining a change comprises receiving a notification regarding a potential change to the graphical representation.
7. The method of claim 1 , wherein determining a change comprises receiving a notification generated in response to a triggered timer.
8. The method of claim 1 , wherein calculating a preferred time value is based on a previous time value when the at least one previous synchronization operation was completed.
9. The method of claim 8 , wherein calculating the preferred time value based on the previous time value comprises adding an incremental value to the previous time value, wherein the incremental value comprises a value calculated by weighting a previous duration value.
10. The method of claim 1 , wherein the duration of time taken to perform at least one previous synchronization represents an average amount of time taken to perform a plurality of data synchronization operations.
11. The method of claim 1 , wherein determining a synchronization time further comprises initiating the synchronization immediately if the current time value is at least equal to the preferred time value.
12. The method of claim 1 , wherein determining a synchronization time further comprises initiating the synchronization after a delay until the preferred time value, when the current time value is at least less than the preferred time value.
13. A non-transitory computer readable medium comprising executable instructions stored thereon to cause a processor to:
determine a change to data, the data associated with a graphical representation of the data;
calculate a preferred time value for synchronizing the graphical representation with the determined change to data, the preferred time value based at least partially on a duration of time taken to perform at least one previous synchronization of the graphical representation;
compare a current time value to the preferred time value; and
determine a synchronization time based on results of the comparison, the synchronization time identifying a time to initiate a synchronization of the graphical representation.
14. The non-transitory computer readable medium of claim 13 , wherein the data comprises attributes of files in a file system.
15. The non-transitory computer readable medium of claim 13 , wherein the data comprises attributes of objects in a property store.
16. The non-transitory computer readable medium of claim 15 , wherein the property store comprises a registry.
17. The non-transitory computer readable medium of claim 16 , wherein the registry comprises a registry of a computer operating system.
18. The non-transitory computer readable medium of claim 13 , wherein the instructions to cause the processor to determine a change comprise instructions to cause the processor to receive a notification regarding a potential change to the graphical representation.
19. The non-transitory computer readable medium of claim 13 , wherein the instructions to cause the processor to determine a change comprise instructions to cause the processor to receive a notification generated in response to a triggered timer.
20. The non-transitory computer readable medium of claim 13 , wherein the instructions to cause the processor to calculate a preferred time value comprise instructions to calculate the preferred time value based on a previous time value when the at least one previous synchronization operation was completed.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/459,637 US20120216112A1 (en) | 2004-06-25 | 2012-04-30 | Adaptive Synchronization Techniques |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/877,125 US8171498B2 (en) | 2004-06-25 | 2004-06-25 | Adaptive service for handling notifications and synchronizing directories of a file system |
US13/459,637 US20120216112A1 (en) | 2004-06-25 | 2012-04-30 | Adaptive Synchronization Techniques |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/877,125 Continuation US8171498B2 (en) | 2004-06-25 | 2004-06-25 | Adaptive service for handling notifications and synchronizing directories of a file system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120216112A1 true US20120216112A1 (en) | 2012-08-23 |
Family
ID=35507396
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/877,125 Expired - Fee Related US8171498B2 (en) | 2004-06-25 | 2004-06-25 | Adaptive service for handling notifications and synchronizing directories of a file system |
US13/459,637 Abandoned US20120216112A1 (en) | 2004-06-25 | 2012-04-30 | Adaptive Synchronization Techniques |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/877,125 Expired - Fee Related US8171498B2 (en) | 2004-06-25 | 2004-06-25 | Adaptive service for handling notifications and synchronizing directories of a file system |
Country Status (1)
Country | Link |
---|---|
US (2) | US8171498B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140379648A1 (en) * | 2013-06-25 | 2014-12-25 | Box, Inc. | Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform |
US8941863B1 (en) * | 2010-11-29 | 2015-01-27 | Symantec Corporation | Techniques for image duplication optimization |
CN107122001A (en) * | 2017-03-31 | 2017-09-01 | 武汉斗鱼网络科技有限公司 | A kind of application program method and device synchronous with server time |
US10795747B2 (en) * | 2018-05-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | File synchronizing service status monitoring and error handling |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040024910A1 (en) | 2001-06-01 | 2004-02-05 | Marl Coyle B. | Adaptive synchronization of service data |
US7275073B2 (en) * | 2003-05-07 | 2007-09-25 | Good Technology, Inc. | System and method for notifying mobile devices based on device type and network capabilities |
US7716247B2 (en) * | 2006-12-18 | 2010-05-11 | Microsoft Corporation | Multi-protocol access to files and directories |
EP1936554A1 (en) * | 2006-12-22 | 2008-06-25 | PRB S.r.l. | Method for the automatic recording of the time needed to carry on activities and for the creation of specific work maps |
US8621093B2 (en) * | 2007-05-21 | 2013-12-31 | Google Inc. | Non-blocking of head end initiated revocation and delivery of entitlements non-addressable digital media network |
US8086565B2 (en) * | 2008-02-18 | 2011-12-27 | Microsoft Corporation | File system watcher in the presence of different file systems |
JP2009237843A (en) * | 2008-03-27 | 2009-10-15 | Brother Ind Ltd | File management system, mobile terminal, and mobile terminal program |
JP5321277B2 (en) * | 2009-06-19 | 2013-10-23 | 富士通株式会社 | Terminal device, setting notification system, notification method |
US8886597B2 (en) * | 2009-10-28 | 2014-11-11 | Sandisk Il Ltd. | Synchronizing changes in a file system which are initiated by a storage device and a host device |
US20110252125A1 (en) * | 2010-04-09 | 2011-10-13 | Microsoft Corporation | Dynamic Syncing |
US20130283283A1 (en) * | 2011-01-13 | 2013-10-24 | Htc Corporation | Portable electronic device and control method therefor |
US8655321B2 (en) | 2011-04-11 | 2014-02-18 | Microsoft Corporation | Adaptive notifications |
CN104933079B (en) * | 2014-03-21 | 2018-07-20 | 阿里巴巴集团控股有限公司 | A kind of browser clocking method and system |
US9942118B1 (en) * | 2015-09-28 | 2018-04-10 | Amazon Technologies, Inc. | Sentinel network devices and sentinel marker |
CN112162964B (en) * | 2020-10-15 | 2024-04-05 | 苏州交驰人工智能研究院有限公司 | Self-adaptive data synchronization method, device, computer equipment and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105619A1 (en) * | 2001-12-04 | 2003-06-05 | Koninklijke Philips Electronics N.V. | Synchronized simulation of software and hardware in the analog domain |
US20040204085A1 (en) * | 2002-11-05 | 2004-10-14 | Microsoft Corporation | Scheduling of synchronization operation on a mobile device based on predetermined subset of user actions |
US20040205206A1 (en) * | 2003-02-19 | 2004-10-14 | Naik Vijay K. | System for managing and controlling storage access requirements |
US20050091287A1 (en) * | 1999-02-18 | 2005-04-28 | Eric Sedlar | Database-managed file system |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6125369A (en) * | 1997-10-02 | 2000-09-26 | Microsoft Corporation | Continuous object sychronization between object stores on different computers |
US5991792A (en) * | 1998-01-02 | 1999-11-23 | International Business Machines Corporation | Method, apparatus and computer program product for dynamically managing a thread pool of reusable threads in a computer system |
US6901145B1 (en) * | 1999-04-08 | 2005-05-31 | Lucent Technologies Inc. | Generation of repeatable cryptographic key based on varying parameters |
US7216289B2 (en) * | 2001-03-16 | 2007-05-08 | Microsoft Corporation | Method and apparatus for synchronizing multiple versions of digital data |
CA2440056C (en) * | 2001-03-19 | 2006-05-09 | Diebold, Incorporated | Automated banking machine processing system and method |
JP2003132361A (en) * | 2001-10-29 | 2003-05-09 | Sharp Corp | Object selecting device and method |
US8166101B2 (en) * | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US7573870B2 (en) * | 2003-09-25 | 2009-08-11 | Lsi Logic Corporation | Transmit prioritizer context prioritization scheme |
US8385985B2 (en) * | 2003-11-25 | 2013-02-26 | Qualcomm Incorporated | Method for reducing power consumption in a multi-mode device |
-
2004
- 2004-06-25 US US10/877,125 patent/US8171498B2/en not_active Expired - Fee Related
-
2012
- 2012-04-30 US US13/459,637 patent/US20120216112A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091287A1 (en) * | 1999-02-18 | 2005-04-28 | Eric Sedlar | Database-managed file system |
US20030105619A1 (en) * | 2001-12-04 | 2003-06-05 | Koninklijke Philips Electronics N.V. | Synchronized simulation of software and hardware in the analog domain |
US20040204085A1 (en) * | 2002-11-05 | 2004-10-14 | Microsoft Corporation | Scheduling of synchronization operation on a mobile device based on predetermined subset of user actions |
US20040205206A1 (en) * | 2003-02-19 | 2004-10-14 | Naik Vijay K. | System for managing and controlling storage access requirements |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8941863B1 (en) * | 2010-11-29 | 2015-01-27 | Symantec Corporation | Techniques for image duplication optimization |
US20140379648A1 (en) * | 2013-06-25 | 2014-12-25 | Box, Inc. | Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform |
US10229134B2 (en) * | 2013-06-25 | 2019-03-12 | Box, Inc. | Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform |
CN107122001A (en) * | 2017-03-31 | 2017-09-01 | 武汉斗鱼网络科技有限公司 | A kind of application program method and device synchronous with server time |
US10795747B2 (en) * | 2018-05-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | File synchronizing service status monitoring and error handling |
Also Published As
Publication number | Publication date |
---|---|
US20050289243A1 (en) | 2005-12-29 |
US8171498B2 (en) | 2012-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20120216112A1 (en) | Adaptive Synchronization Techniques | |
JP6553203B2 (en) | Idle time software garbage collection | |
US7376698B2 (en) | System for preserving scripting objects and cloning the objects to a new document in response to a reload of the new document | |
US20130166507A1 (en) | Declarative synchronization of shared data | |
US10565226B2 (en) | Application program interface managing synchronized data replication | |
US9202143B2 (en) | Automatic photo grouping by events | |
US20150006466A1 (en) | Multiversion concurrency control for columnar database and mixed OLTP/OLAP workload | |
US11080146B2 (en) | System and method for storage unavailability tolerant backup | |
US11687595B2 (en) | System and method for searching backups | |
JP2005056420A (en) | Method and system for managing object stored in cache | |
US10089372B2 (en) | Data visualization using level of detail magnification | |
US20140237024A1 (en) | Network communication devices and file tracking methods thereof | |
US20210256063A1 (en) | Ad-hoc graph definition | |
CN110968279B (en) | Message degradation method and related device | |
WO2021040838A1 (en) | Point in time blob restore | |
US11625305B2 (en) | Method and system for indexing fragmented user data objects | |
US7395386B2 (en) | Method and apparatus for data versioning and recovery using delta content save and restore management | |
CN111736975A (en) | Request control method and device, computer equipment and computer readable storage medium | |
US11507473B2 (en) | System and method for efficient backup generation | |
US10503752B2 (en) | Delta replication | |
US8224898B2 (en) | Relevance-based expiration of data | |
US11281542B2 (en) | System and method for backup generation for deployments | |
CN114816586B (en) | Visible data loading method and device, computer equipment and storage medium | |
US20240202078A1 (en) | Intelligent backup scheduling and sizing | |
US20170364417A1 (en) | Flexible per-request data durability in databases and other data stores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION |