Depending on the programmer's familiarity with the application, and the application's own degree of complexity, adding support for DSU using Kitsune can range from mild to difficult.
Kitsune is much gentler on the host application, requiring no static analysis, and very little (potentially no) source-to-source rewriting. In our benchmarks, the time from when a program first signals that an update is required, to the time the program transfers control into Kitsune, to the time when the new version of the program has taken over and finished initializing all state, is generally less than 200ms, and less than 500ms in the worst cases.
In general, the time for a dynamic update depends on the structure of the program, and the nature of the change.
This will walk you through the practical aspects of using Kitsune and introduce you to the Kitsune runtime APIs and xfgen language.
After completing the tutorial, you should be able to use Kitsune to add dynamic updating support to other projects.
Redundancy-based updates require extra hardware resources, which may not otherwise be needed, and can require significant changes to application code.
Checkpointing to and restoring from disk can introduce a long delays (tens of seconds to minutes).
Some programs are very easy to update with Kitsune because they either have little in-flight state, or have data structures that are quick for Kitsune to traverse.
Memcached, for example, updates quickly regardless of how full its caches are.
Oct 25 pfsense php: /usr/local/pkg/snort/snort_check_for_rule_updates.php: [Snort] Building new file for INTERF2...
Oct 25 pfsense php: /usr/local/pkg/snort/snort_check_for_rule_updates.php: [Snort] Updating rules configuration for: INTERF3 ...
Kitsune doesn't change process ID's on an update, so any resources allocated by the operating system will persist after an update.