On Tue, Jul 7, 2009 at 1:10 PM, Mark Spiegel<mspie...@vipmail.com> wrote:

> This should give you a picture of who is opening the file and with what
> flags.  In particular, how is your SQLite app and Explorer opening the file?

Thanks for the pointer to Filemon; I'm always happy to learn about a
new tool. Apparently its functionality has been integrated into
Procmon, so that's what I used to follow your debugging steps.

To address some of the points you mention earlier:

* I'm running as Administrator, and I can see SYSTEM-owned processes
in Task Manager. Not sure if that means I can see all processes or
not, but I suspect that I can.

* I was actually wrong about VM going up. In fact, the Pagefile
doesn't seem to grow much. Physical Memory (as reported by Resource
Monitor) is what's growing. Once it peaks (at around 99%) the page
fault rate goes through the roof.

* When this situation occurs, the system is most definitely not
CPU-bound, as the CPU usage hovers around 1%. The high page fault rate
is what seems to be making other applications unresponsive.

* Working Set Size and Peak Working Set size of all processes in Task
Manager are very modest; the memory appears to be going to some sort
of caching mechanism in the OS.

Using procmon, I filtered on "Path" for my particular sqlite file and
repeated my experiments from the original post. I verified that
sqlite3.exe and Explorer.EXE are the only processes opening the
file.The thing that stands out in the pathological cases is the
presence of SHARING VIOLATION result code. Whichever one of sqlite or
Explorer attempts to open the file second will throw this error, and
that's when I see physical memory begin to grow.

Here's a trace of sqlite accessing the file, then Explorer copying it
(CSV format):

"Time of Day","Process Name","PID","Operation","Path","Result","Detail"
"6:01:46.1439881
PM","sqlite3.exe","11088","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SUCCESS","Desired
Access: Read Attributes, Disposition: Open, Options: Open For Backup,
Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete,
AllocationSize: n/a, Impersonating: TESTBED9\Administrator,
OpenResult: Opened"
"6:01:46.1446133
PM","sqlite3.exe","11088","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SUCCESS","Desired
Access: Read Attributes, Disposition: Open, Options: Open For Backup,
Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete,
AllocationSize: n/a, Impersonating: TESTBED9\Administrator,
OpenResult: Opened"
"6:01:46.1448474
PM","sqlite3.exe","11088","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SUCCESS","Desired
Access: Generic Read/Write, Disposition: OpenIf, Options: Synchronous
IO Non-Alert, Non-Directory File, Random Access, Attributes: N,
ShareMode: Read, Write, AllocationSize: 0, Impersonating:
TESTBED9\Administrator, OpenResult: Opened"
"6:01:56.1737399
PM","Explorer.EXE","3272","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SHARING
VIOLATION","Desired Access: Generic Read, Write Data/Add File,
Disposition: Open, Options: Sequential Access, Synchronous IO
Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read,
AllocationSize: n/a"
"6:01:56.1738486
PM","Explorer.EXE","3272","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SUCCESS","Desired
Access: Generic Read, Write Data/Add File, Disposition: Open, Options:
Sequential Access, Synchronous IO Non-Alert, Non-Directory File,
Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a,
OpenResult: Opened"

And Explorer copying the file then sqlite3 opening it:

"6:30:23.1071085
PM","Explorer.EXE","3272","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SUCCESS","Desired
Access: Generic Read, Write Data/Add File, Disposition: Open, Options:
Sequential Access, Synchronous IO Non-Alert, Non-Directory File,
Attributes: n/a, ShareMode: Read, AllocationSize: n/a, OpenResult:
Opened"
"6:30:41.0615955
PM","sqlite3.exe","1988","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SUCCESS","Desired
Access: Read Attributes, Disposition: Open, Options: Open For Backup,
Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete,
AllocationSize: n/a, Impersonating: TESTBED9\Administrator,
OpenResult: Opened"
"6:30:41.2108393
PM","sqlite3.exe","1988","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SUCCESS","Desired
Access: Read Attributes, Disposition: Open, Options: Open For Backup,
Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete,
AllocationSize: n/a, Impersonating: TESTBED9\Administrator,
OpenResult: Opened"
"6:30:41.2687134
PM","sqlite3.exe","1988","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SHARING
VIOLATION","Desired Access: Generic Read/Write, Disposition: OpenIf,
Options: Synchronous IO Non-Alert, Non-Directory File, Random Access,
Attributes: N, ShareMode: Read, Write, AllocationSize: 0,
Impersonating: TESTBED9\Administrator"
"6:30:41.2837648
PM","sqlite3.exe","1988","IRP_MJ_CREATE","C:\inetpub\wwwroot\Vivisimo\bin\fake-cache.sqlt","SUCCESS","Desired
Access: Generic Read, Disposition: OpenIf, Options: Synchronous IO
Non-Alert, Non-Directory File, Random Access, Attributes: N,
ShareMode: Read, Write, AllocationSize: 0, Impersonating:
TESTBED9\Administrator, OpenResult: Opened"


Just to be clear, I think Windows is really the one that is at fault
here; the behavior seems very broken to me. Unfortunately, I need the
app to work on Windows without this happening, so I need to figure out
some kind of workaround in a.) Windows settings b.) the sqlite source
or c.) how my app is using sqlite.

Thanks for your help,
-Stan


>
> Filemon can generate a painful amount of output, but it may be worth it
> to see what is going on.
>
> Do you have task manager set to show processes from all users?
>
> When you say "huge amount of virtual memory", what exactly do you mean?
> What statistic in task manager are you referring to?
>
> When you get in this situation, what process is using the most CPU?  Is
> the system CPU bound or I/O bound?
>
> Don't forget the perfmon tool.  It can be helpful in figuring out these
> kinds of problems as well.
>
> When you say the system is sluggish, does that mean the mouse is
> sluggish?  Apps won't start?  IE is unresponsive?  Can you be a little
> more specific?  Note that when copying or even using big files like
> this, you can overrun the cache manager.  It will be filled with data
> from your file forcing out everything else of use.  It can take awhile
> for the system to recover from this.  Some AV products will create this
> situation when they do a system wide scan for example.
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to