[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Feature Request: Low Priority IO with Vista

From: Steffen Binas <steffen.binas_at_aquasoft.de>
Date: 2007-02-23 10:57:08 CET

Hi,

I'm using TortoiseSVN daily. I like it very much. But after a an
update or checkout it needs a long time to scan the files in my
workfolder. This would be no problem if there where no other
applications running. But the disc access slows down all other
applications (especially my IDE). I read from a new feature in
Windows Vista to let an application do low priority IO. This is very
good for all kind of background applications (indexers, virus
scanners, etc.). This has to be done by the application. Here are
some specs from microsoft:

http://download.microsoft.com/download/a/f/7/af7777e5-7dcd-4800-8a0a-b18336565f5b/Priorityio.doc

I think this would be a very useful improvement to illiminate the
felt slowdown of tortoise.

Here is an extract from the spec:

----------------->
With Vista, a new background priority class has been added. Two
values control this class: the first sets the mode of the process to
background and the second returns it to its original priority.

The following call starts background mode for the current process:
result = SetPriorityClass( GetCurrentProcess(),
                            PROCESS_MODE_BACKGROUND_BEGIN);

The following call exits background mode:
result = SetPriorityClass( GetCurrentProcess(),
                            PROCESS_MODE_BACKGROUND_END);

While the target process is in background mode, its CPU, page, and
I/O priorities are reduced. From an I/O perspective, each request
that this process issues is marked with an idle priority hint (very
low priority).

A similar function for threads, SetThreadPriority, can be used to
cause only specific threads to run at low priority:
BOOL
WINAPI
SetThreadPriority( __in HANDLE hThread,
                    __in int nPriority);

Finally, the SetFileInformationByHandle function can be used to
associate a priority for I/O on a file-handle basis. In addition to
the idle priority (very low), this function allows normal priority
and low priority. Whether these priorities are supported and honored
by the underlying drivers depends on their implementation (which is
why they are referred as hints).
FILE_IO_PRIORITY_HINT_INFO priorityHint;

priorityHint.PriorityHint = IoPriorityHintLow;

result = SetFileInformationByHandle( hFile,
                                      FileIoPriorityHintInfo,
                                      &priorityHint,
                                      sizeof(PriorityHint));
<-------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org
Received on Fri Feb 23 11:12:20 2007

This is an archived mail posted to the TortoiseSVN Dev mailing list.