« Diskeeper and Vista | Main | Just install it and let 'er rip! - Diskeeper 2007 is now available! »

October 14, 2006

Invisible Software?

Below is the first part of a white paper on an amazing new technology our R&D team invented. We have big plans for this technology. I'd like to hear other venues where you think this technology could help? What programs are you running that could leverage this?

BTW: This report is a general overview of technologies in order to provide a better understanding of certain limitations inherent in modern operating systems. It is not a scientific study.

---

BACKGROUND MULTITASKING

OVERVIEW

Multitasking is a method for sharing system resources so that multiple processes can appear to run simultaneously. An example would be the ability to run both a word editor and a spreadsheet application at the same time.

However, a component in a general purpose computer, such as the CPU, can only execute one task at a given time. Multitasking presents the illusion that all execution is occurring simultaneously by implementation of a thread scheduling system. It is in essence virtualization of the CPU, designed to fool applications into believing they own the CPU exclusively. More powerful and faster CPUs can execute larger tasks or execute more in a given span of time.

Multiprocessing extends the principles of multitasking to multiple CPUs, actually allowing threads to run simultaneously, where multitasking only feigns this behavior. Multiprocessing, like multitasking, is still limited in processing capacity to one action at a time on a given CPU.

For the purposes of this paper, multitasking will be used to refer to the operating system's thread handling.

Inside Multitasking:

There are a variety of Multitasking techniques in use in operating systems today. Modern computer systems such as Windows, Linux, UNIX and Mac OS X use a form of multitasking called preemptive multitasking with varying unique differences. Pre-emptive multitasking is a more effective mechanism to guarantee resource sharing as it differentiates processes (e.g. I/O or CPU) and integrates I/O waiting so as to not delay processes that do not need I/O device responses (such as data returned from a hard drive).

Window's application of preemptive scheduling, while not a pure form, is more advanced, when compared to earlier MS-DOS based versions of Windows, in that it better separates processes by the resources they use (e.g. CPU intensive versus I/O bound). Of key importance is that it also allows processes to be prioritized. Prioritization involves implementing a system by which one process, and its associated threads, can be deemed to be more, equally, or less important than another process. An essentially "round-robin" scheduling system then assigns resource time-slices available to the active processes.

However, the prioritization value system is relatively rote in that it relies on the process to generally define how important it is. It also applies a numeric value system (values of 0-31) in which a higher number indicates greater importance. A process with a value of 8 will receive greater resource access than a process with a priority value of 4, but less than a process running at a priority of 13.

Processes that share a number value (e.g. word editor and spreadsheet that both have a value of 8) are considered equal, and must essentially "split" resources equally.

Ideal resource sharing systems would know more about unrelated processes that share a priority value, and be able to further subdivide resources. Then, based on actual needs at a given time, they could more effectively share resources, rather than relying on a relatively rote hard-coded priority value. Windows NT preemptive multitasking does not provide this.

Preemptive multitasking does provide a very basic implementation of dynamic resource assignment in order to ensure better system resource dissemination between high and low priority processes. The NT thread scheduling mechanism can dynamically adjust (increase or decrease) a priority value for a given process relative to its assigned base priority and to its I/O-CPU burst characteristics (i.e. a CPU bound process versus an I/O bound process) to afford eventual access to resources. The justification for priority changes is simply dependent upon whether a process is being starved resource time due to an influx of high priority processes. In these cases, the scheduler can dynamically reduce the priority of processes and increase the right to access resources for others.

The phenomenon related to this occurrence is that the scheduler will actually provide a lower priority I/O bound process a larger time slice than it normally would if it hadn't been starved. While the use of interrupts allows the blocking of I/O bound processes, it's important to note that a process will not be starved for more than 3-4 seconds. With processors operating in the gigahertz, a few seconds is retrospectively eons, but it will occur.

As one can see this system is beneficial to ensure that all processes get access to resources and that all processes are ordered in at least some simple form of relative importance.

However, some shortcomings can be uncovered with this design. It can be shown that some applications active on a system, that are allocated resources every 3-4 seconds, can and should be starved resources until no other process requires them. And, as suggested, prioritization amongst seemingly "equal" applications is relatively rote.

It becomes obviously inadequate when true low-priority applications that can wait indefinitely (or near-indefinitely) for resource allocation, are force-fed resources.

INVISITASKING, "True Background Processing - Delivered"

InvisiTasking is new technology designed to enhance multitasking and address some of the shortcomings related to the lack of "enough information". Having more information allows better sharing of resources. InvisiTasking is specifically designed to address the "background" application to ensure it truly does run in the background and does not interfere with higher priority processes such as transaction processing , print queuing and quite frankly, anything else other than wasteful system idle time.

Unlike multitasking, which is integrated in the operating system's kernel, InvisiTasking currently works in user-mode. This means it will not presently solve all the issues inherent in the core of multitasking for a background application, but it will mitigate the inherent shortcomings to the point they are no longer issues. It, of course, requires an application to be written to leverage this technology.

Inside InvisiTasking:

As CPU and I/O resources are almost never fully utilized, InvisiTasking's transparency is achieved by undetectably tapping into these unused system resources. Software engineers sometimes attempt to share resources by choosing lower CPU priorities to run under, and past efforts have been made at throttling disk and network I/O. However the goal of truly transparent software has never before been achieved until now.

To accomplish true transparency one needs to be able to monitor CPU, memory and the more significant hardware bottlenecks of the disk drive and network. InvisiTasking takes a pro-active approach to instantly detect resource usage while maintaining complete granular control over its own activity, ensuring that it never pre-empts users or services.

The key of course, is to prove that InvisiTasking theory holds true in practice...

---

Part two of this paper covers benchmark testing using PCMark and other methods - some really amazing results. Visit our Knowledge Center next week for the full paper (test results included).

I did a live radio interview with Computer Outlook. In between my mumbling and bumbling :-), I actually provide a few coherent comments regarding InvisiTasking (and later a bit on Diskeeper 10). It's about 30 minutes. http://www.computeroutlook.com/dailyshows.php

Posted by Michael at October 14, 2006 08:20 AM

Comments

Hi,

I still cannot find the rest of that white paper. Can you please provide the URL?

Thanks.

Posted by: Me at October 23, 2006 05:32 AM

Thanks for that kick in the rear. It will be available from the Knowledge Center in the next few days.

Posted by: Michael at October 24, 2006 07:50 AM

Here is the URL for the full report:

http://files.diskeeper.com/pdf/DKC_Newskeeper_0906.pdf

Posted by: michael at November 14, 2006 09:21 PM

Post a comment




Remember Me?