<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx</link><description>This is the fourth post in my Pushing the Limits of Windows series that explores the boundaries of fundamental resources in Windows. This time, I’m going to discuss the limits on the maximum number of threads and processes supported on Windows. I’ll briefly</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262342</link><pubDate>Thu, 09 Jul 2009 03:08:34 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262342</guid><dc:creator>Sanket Patel</dc:creator><description>&lt;p&gt;Hi Mark, I am looking at a VMMap snap of Notepad.exe on Win7 x64, and I am seeing a &amp;quot;Thread Stack (Wow64)&amp;quot; with a commit of 224K. Why does a 64-bit process have a Wow64 stack?&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262343</link><pubDate>Thu, 09 Jul 2009 03:15:33 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262343</guid><dc:creator>markrussinovich</dc:creator><description>&lt;p&gt;I don't see that. Email me the .mmp file and I'll take a look. &lt;/p&gt;
</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262457</link><pubDate>Thu, 09 Jul 2009 14:59:44 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262457</guid><dc:creator>James Bray</dc:creator><description>&lt;p&gt;Great article.&lt;/p&gt;
&lt;p&gt;I love the VMMap utility too. &amp;nbsp;I'm a software developer myself, and the system I help maintain runs under Interix (SUA/SFU). &amp;nbsp;We were having a problem recently whereby one of our applications was vaporizing under heavy load. &amp;nbsp;We finally discovered that it was running out of stack space because, under Interix, the maximum stack size *is* hardcoded (possibly a GCC thing). &amp;nbsp;I just reran our application using VMMap and it shows the stack growing from ~100K to 16MB. &amp;nbsp;I only wish we'd had this utility then :-) &amp;nbsp;&lt;/p&gt;
&lt;p&gt;James&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262462</link><pubDate>Thu, 09 Jul 2009 15:19:28 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262462</guid><dc:creator>zizebra</dc:creator><description>&lt;p&gt;You never cease to amaze me with interesting articles you write. I thought I was at the helm of &amp;nbsp;my profession till I discovered your articles and I discovered I was old enough but only a child. I cant seem to understand one thing though, why dont we have built alerts/counters for critical resources when they go so low before something can be done. Windows always gets the blame for poor programming out there. &lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262486</link><pubDate>Thu, 09 Jul 2009 17:44:57 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262486</guid><dc:creator>Ross Presser</dc:creator><description>&lt;p&gt;Yesterday I posted a comment showing that my Windows XP 32-bit system, running on a 64-bit capable processor but installed as 32-bit Windows XP, not booted with the /3GB or any other special switch, but with 3GB of RAM, can produce over 50,000 threads with &amp;quot;testlimit -t&amp;quot; (no -n). That comment has not shown up here. What's the explanation?&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262528</link><pubDate>Thu, 09 Jul 2009 23:25:47 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262528</guid><dc:creator>vadmyst</dc:creator><description>&lt;p&gt;zizebra,&lt;/p&gt;
&lt;p&gt;I sometimes get the an error about low virtual memory, do you mean that kind of warnings/alerts?&lt;/p&gt;
&lt;p&gt;However it would be nice to have a built-in tool that could somehow report status of particular resources on Windows. &lt;/p&gt;
&lt;p&gt;For instance, CPU is over 80% or available memory is low for considerable amount of time - issue warning &lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262530</link><pubDate>Thu, 09 Jul 2009 23:33:01 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262530</guid><dc:creator>Andrei Volkov</dc:creator><description>&lt;p&gt;I wonder what's the limit on the number of fibers? Like say if I want to use a fiber per each concurrent user session of my web app...&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262536</link><pubDate>Thu, 09 Jul 2009 23:41:08 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262536</guid><dc:creator>Spiff</dc:creator><description>&lt;p&gt;Nice article. Please forgive my amateur question, but is it possible for me to &amp;quot;Empty Working Set&amp;quot; directly in my program? Some users complain about the seemingly high Working Set usage of my program when viewed in Task Manager, and I notice that &amp;quot;Empty Working Set&amp;quot; reduces it quite nicely. :) So I thought maybe I could programmatically trim it down during program startup. &lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262615</link><pubDate>Fri, 10 Jul 2009 06:46:12 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262615</guid><dc:creator>markrussinovich</dc:creator><description>&lt;p&gt;@Ross Presser:&lt;/p&gt;
&lt;p&gt;Take a look in VMMap at the stack reserves.&lt;/p&gt;
</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262661</link><pubDate>Fri, 10 Jul 2009 11:52:18 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262661</guid><dc:creator>Tony</dc:creator><description>&lt;p&gt;I always thought that ASLR stands for &amp;quot;Address Space Layout Randomization&amp;quot; not &amp;quot;Address Space Load Randomization&amp;quot;.&lt;/p&gt;</description></item><item><title>typo?</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262670</link><pubDate>Fri, 10 Jul 2009 12:27:15 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262670</guid><dc:creator>mingbo wan</dc:creator><description>&lt;p&gt;The 64-bit stack has a reserve of 256MB (except that on systems prior to Vista, the initial thread’s 64-bit stack is 1MB). &lt;/p&gt;
&lt;p&gt;32-bit Testlimit was able to create 3,204 threads on 64-bit Windows, which given that each thread uses 1MB+256MB of address space for stack &lt;/p&gt;
&lt;p&gt;should be 256KB?&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262709</link><pubDate>Fri, 10 Jul 2009 15:22:10 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262709</guid><dc:creator>markrussinovich</dc:creator><description>&lt;p&gt;@mingbo wan:&lt;/p&gt;
&lt;p&gt;No, because a 32-bit thread has both 32-bit and 64-bit stack reserves.&lt;/p&gt;
</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262711</link><pubDate>Fri, 10 Jul 2009 15:25:39 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262711</guid><dc:creator>markrussinovich</dc:creator><description>&lt;p&gt;@Tony:&lt;/p&gt;
&lt;p&gt;Good catch, I've fixed the text. ASLR in Vista originally stood for Address Space Load Randomization, so I accidentally use that sometimes. &lt;/p&gt;
</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262812</link><pubDate>Fri, 10 Jul 2009 20:40:36 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262812</guid><dc:creator>mlynch</dc:creator><description>&lt;p&gt;I just want to make sure you understood what mingbo wan is saying, because I'm confused as well:&lt;/p&gt;
&lt;p&gt;&amp;quot;The 64-bit stack has a reserve of *256MB* (except that on systems prior to Vista, the initial thread’s 64-bit stack is 1MB).&amp;quot;&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;&amp;quot;32-bit Testlimit was able to create 3,204 threads on 64-bit Windows, which given that each thread uses *1MB+256MB* of address space for stack (again, except the first on versions of Windows prior to Vista, which uses 1MB+1MB), is exactly what you’d expect.&amp;quot;&lt;/p&gt;
&lt;p&gt;mingbo wan was saying that these should read 256 *kilobytes* not megabytes. If you wrote MB deliberately, then I'm a bit confused because your accompanying VMMap output shows the 64-bit thread stack as 256 KB and mathematically 256 MB doesn't add up.&lt;/p&gt;
&lt;p&gt;3,204 threads * (1 MB + 256 MB stack) = 813 GB address space&lt;/p&gt;
&lt;p&gt;whereas&lt;/p&gt;
&lt;p&gt;3,204 threads * (1 MB + 256 KB stack) = 4,005 MB &amp;nbsp;= ~ 4 GB address space&lt;/p&gt;
&lt;p&gt;Which is roughly the expected address space size of a 32-bit process on 64-bit Windows. Is it really not a typo?&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3262817</link><pubDate>Fri, 10 Jul 2009 20:52:38 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3262817</guid><dc:creator>markrussinovich</dc:creator><description>&lt;p&gt;@mlynch &lt;/p&gt;
&lt;p&gt;Ah, I see, sorry! It was a typo. Fixed. &lt;/p&gt;
</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3263400</link><pubDate>Mon, 13 Jul 2009 15:28:52 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3263400</guid><dc:creator>Marcel</dc:creator><description>&lt;p&gt;Interessting article, but I've got one question regarding the guard page(s) you mentioned. How many are there usually and what's going on if I write&lt;/p&gt;
&lt;p&gt;char x[32768];&lt;/p&gt;
&lt;p&gt;x[32767] = 0xff;&lt;/p&gt;
&lt;p&gt;in my code while most of the stack area occupied by the x array was still uncommited? Potentially I think the x[32767] could point to memory AFTER the guard pages, but what happens then?&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3263490</link><pubDate>Mon, 13 Jul 2009 20:40:42 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3263490</guid><dc:creator>Michael Grier [MSFT]</dc:creator><description>&lt;p&gt;Marcel: the compiler emits instructions to touch all of the stack pages in the frame (if it's larger than one page) to address this issue. &amp;nbsp;One more reason not to have large stack allocated buffers if you can help it.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3263764</link><pubDate>Tue, 14 Jul 2009 14:05:47 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3263764</guid><dc:creator>Marcel</dc:creator><description>&lt;p&gt;@Micheal Grier: You're right, thanks a lot! I've disassembled and reverse engineered a good deal of code in my time, but never noticed this behaviour before. Weird, but very interesting.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3263805</link><pubDate>Tue, 14 Jul 2009 16:12:06 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3263805</guid><dc:creator>dave</dc:creator><description>&lt;p&gt;&amp;gt;Please forgive my amateur question, but is it possible for me to &amp;quot;Empty Working Set&amp;quot; directly in my program? &lt;/p&gt;
&lt;p&gt;Sure is. There is a Win32 function confusingly called &amp;quot;EmptyWorkingSet&amp;quot; which does what you want :-)&lt;/p&gt;
&lt;p&gt;This is a relatively newly-documented function, I think. You have always been able to achieve the same effect by SetProcessWorkingSetSize(hProc, -1, -1)&lt;/p&gt;
&lt;p&gt;(Side note: I just looked up the defn of SetProcessWorkingSetSize in the SDK doc. Who let the words &amp;quot;physical RAM memory&amp;quot; pass review? Bah...)&lt;/p&gt;
&lt;p&gt;Generally speaking, it may be useful for a service to trim its working set after once-only initialization, and possibly when it becomes idle, if it's a mostly-idle sort of service. But you have to take care to avoid pessimising performance: releasing real memory is not an automatic performance win.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3263960</link><pubDate>Tue, 14 Jul 2009 22:40:24 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3263960</guid><dc:creator>arnshea</dc:creator><description>&lt;p&gt;I've been eagerly following this series. &amp;nbsp;It's amazing.&lt;/p&gt;
&lt;p&gt;One minor issue, the article mentions that the PE specifies an initial commit size of 4k for the thread stack but I believe in hex 0x1000 = 8k? &amp;nbsp;BTW, VMMap shows 8k...&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3263981</link><pubDate>Tue, 14 Jul 2009 22:48:20 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3263981</guid><dc:creator>arnshea</dc:creator><description>&lt;p&gt;About my previous statement, it looks like dumpbin is showing the total initial memory committed for thread stack space - 4k for stack, 4k for guard page. &amp;nbsp;Sorry about that!&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Process and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3265719</link><pubDate>Fri, 17 Jul 2009 18:09:40 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3265719</guid><dc:creator>Scott Doty</dc:creator><description>&lt;p&gt;&amp;quot;Unlike some UNIX variants&amp;quot; -- &lt;/p&gt;
&lt;p&gt;Hahahaha, that UNIX(tm) stuff (and even Unix (no tm) stuff still gets under your skin, hmmmmm? ;)&lt;/p&gt;
&lt;p&gt;Thank the gawds of computing that we had Unixes to run, back when VMS/WNT/Windows/whatever were still trying to play catch up...&lt;/p&gt;
&lt;p&gt;Hope life has been good to ya these past 10 years -- and my condolences re: Microsoft Vista and Microsoft Windows Vista 7, but $MSFT richly-deserves to crumble after all the uncompetitive crap we've put up from them all these years...&lt;/p&gt;
&lt;p&gt;Sincerely,&lt;/p&gt;
&lt;p&gt;A Sincere Fedora Fanatic.&lt;/p&gt;
&lt;p&gt;p.s. btw, UNIX(r) is a registered trademark of The Open Group. &amp;nbsp;That sort of thing will become important, as $MSFT starts looking for UNIX(r) certification, hehe...&lt;/p&gt;
&lt;p&gt;Keep smiling! :)&lt;/p&gt;</description></item><item><title>Scotty doesn'</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3267040</link><pubDate>Wed, 22 Jul 2009 12:29:51 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3267040</guid><dc:creator>Yonah</dc:creator><description>&lt;p&gt;Scotty, I like the fact that in response to Mark's technical criticism of Linux, all you could really do is offer a &amp;quot;works better for me&amp;quot; citation and make fun of Mark's credentials and education. &amp;nbsp;Like most zealots you are heavy on dogma, light on substance. &amp;nbsp;From that Usenet posting, looks like the only thing that hasn't matured in those 10 years is you.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3267940</link><pubDate>Sat, 25 Jul 2009 01:56:47 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3267940</guid><dc:creator>Chuck Desylva</dc:creator><description>&lt;p&gt;Fantasitic post Mark. Thanks! Here is a crazy request: How about the same info for the XBox360? A close up architectural review like this should prove very insightful. &lt;/p&gt;
&lt;p&gt;I am particularly interested in how one can reduce the huge network footprint the 360 has. It literally cripples other PCs to a crawl in a home network when it is using the network like downloading content. &lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3268529</link><pubDate>Tue, 28 Jul 2009 04:04:08 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3268529</guid><dc:creator>Will</dc:creator><description>&lt;p&gt;Mark,&lt;/p&gt;
&lt;p&gt;I have one simple question related to paging. I have paging off because I have 8 GB of RAM and I figure that's enough for me to run without paging; however, I still get tons of page faults. Why? There's no page file, there shouldn't be anything to retrieve from disk back to memory.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3269404</link><pubDate>Thu, 30 Jul 2009 18:22:02 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3269404</guid><dc:creator>Ross Presser</dc:creator><description>&lt;p&gt;Now that VMMap can actually RUN on my 32-bit Windows XP, thanks to today's update, I can do as you asked and look at the stack resources.&lt;/p&gt;
&lt;p&gt;I ran testlimit -t and hit control-S after a few seconds; the thread count was already up to 7100. I started VMMap and attached to the testlimit process. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;The first thread stack was Size=256K, committed=12K; the remaining 7199 or so thread stacks were all size=64K, committed=8k. &amp;nbsp;Total stack shown in the upper summary area had size=461,056K, committed=57,612K; free showed Size=1,595,268K. &lt;/p&gt;
&lt;p&gt;If I let it run and it continues at this pace, I compute it should generate at least 30,000 threads. Letting it run ...&lt;/p&gt;
&lt;p&gt;Created 30645 threads. Lasterror: 8&lt;/p&gt;
&lt;p&gt;My recollection is that when I tried this right after your blog post, I got over 50,000 threads. Later today I am going to shut down all unnecessary programs and services and try this again.&lt;/p&gt;
&lt;p&gt;Given this result, do you think you should revise your blog entry? Like I said, I haven't done anything to tweak the system to get these results. It's a stock Dell system; 3GB of RAM; the processor is 64-bit capable but running 32-bit Windows XP; no /3GB or any other boot switches.&lt;/p&gt;
&lt;p&gt;(Since the last few times I've posted to this blog, my comment has been ignored, I am going to post this same comment as a blog entry on my LJ, rpresser.livejournal.com.)&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3270852</link><pubDate>Wed, 05 Aug 2009 16:40:09 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3270852</guid><dc:creator>Larry </dc:creator><description>&lt;p&gt;Thanks for the great post Dr. Russinovich&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3271191</link><pubDate>Thu, 06 Aug 2009 17:26:47 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3271191</guid><dc:creator>Brian</dc:creator><description>&lt;p&gt;Will,&lt;/p&gt;
&lt;p&gt;Techically you have the pagefile turned off, but paging is still very active. &lt;/p&gt;
&lt;p&gt;EXEs are not brought into memory in full, they are brought into memory as needed in pages. So if a program attempts to access code/data that is not resident in memory yet, then a page fault occurs and the system loads the page.&lt;/p&gt;
&lt;p&gt;Even with the pagefile disabled, if the system starts to see memory pressure, then it can take code/data and discard it (because it can just load it again from the exe/dll if needed).&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3271194</link><pubDate>Thu, 06 Aug 2009 17:49:18 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3271194</guid><dc:creator>Colomoto</dc:creator><description>&lt;p&gt;Great article to look behind the scenes of the different Windows flavors.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3272127</link><pubDate>Mon, 10 Aug 2009 18:38:55 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3272127</guid><dc:creator>Hex</dc:creator><description>&lt;p&gt;Hello Mark,&lt;/p&gt;
&lt;p&gt;I did my own test running multiple copies of IE 7 on Vista Enterprise SP2 (32-bit). And my result differs from your for 32-bit systems. I was running about 2150 threads when GDI died because of GDI objects limit. &lt;/p&gt;
&lt;p&gt;I can even show the video I've made from Vmware(it's russian locale):&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://s785.photobucket.com/albums/yy136/hexello/?action=view&amp;amp;current="&gt;http://s785.photobucket.com/albums/yy136/hexello/?action=view&amp;amp;current=&lt;/a&gt; VistaVMMovie.flv&lt;/p&gt;
&lt;p&gt;The better picture can be achieved if press &amp;quot;full size&amp;quot; and then resize the screen about 1.5 times. &lt;/p&gt;
&lt;p&gt;See the threads count shown by Task Manager.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3278081</link><pubDate>Sun, 30 Aug 2009 18:15:57 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3278081</guid><dc:creator>Yimin Chen</dc:creator><description>&lt;p&gt;Using VMMap to attach to a managed process, i saw there was one thread with 2 guard pages. What is that means?&lt;/p&gt;
&lt;p&gt;Here is the content copied from the saved .mmp file (lines 17A000 and 175000 are marked as Read/Write/Guard):&lt;/p&gt;
&lt;p&gt;1 80000 0 0 0 4096 0 0 2956 0 8192 1 Thread Stack;&lt;/p&gt;
&lt;p&gt;1 81000 0 0 0 995328 995328 0 2956 4 131072 1 Thread Stack;&lt;/p&gt;
&lt;p&gt;1 174000 0 0 0 4096 0 0 2956 0 8192 1 Thread Stack;&lt;/p&gt;
&lt;p&gt;1 175000 0 0 0 4096 4096 0 2956 260 131072 1 Thread Stack;&lt;/p&gt;
&lt;p&gt;1 176000 0 0 0 16384 16384 16384 2956 4 131072 1 Thread Stack;&lt;/p&gt;
&lt;p&gt;1 17a000 0 0 0 8192 8192 0 2956 260 131072 1 Thread Stack;&lt;/p&gt;
&lt;p&gt;1 17c000 0 0 0 16384 16384 16384 2956 4 131072 1 Thread Stack;&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3279301</link><pubDate>Sat, 05 Sep 2009 01:23:02 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3279301</guid><dc:creator>Cem PAYZIN</dc:creator><description>&lt;p&gt;What about Timer limits. I heard that Win32 has a limit of 10.000 per process and 32.000 for desktop. Do you know anyting about Timer limits on x64 Windows like Windows 2008 x64 ?&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3279326</link><pubDate>Sat, 05 Sep 2009 09:08:47 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3279326</guid><dc:creator>Hannan</dc:creator><description>&lt;p&gt;I love the VMMap utility too. &amp;nbsp;I'm a software developer myself, this article is useful for me to learn better about VM .I want to share it with more and more people by add this links in my foler/URL.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3281271</link><pubDate>Tue, 15 Sep 2009 23:41:31 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3281271</guid><dc:creator>Fred Swalef</dc:creator><description>&lt;p&gt;Appreciated the article and of course the tools you have provided. It really helps when your trying to work out issues/ troubleshooting the whys and wherefores. Remember when windows first came out and you could just monitor the resources you were using? Thanks again Mark you are an asset to IT community. &lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3284368</link><pubDate>Thu, 01 Oct 2009 17:51:55 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3284368</guid><dc:creator>Raymond Chen</dc:creator><description>&lt;p&gt;Note that strictly speaking, you can have more processes than threads if you use zombie processes (which have no threads). Mind you, zombie processes aren't runnable...&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3284387</link><pubDate>Thu, 01 Oct 2009 18:59:28 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3284387</guid><dc:creator>markrussinovich</dc:creator><description>&lt;p&gt;@Raymond: good point, you'll see that if the last thread in the process exits, but an application has a handle open to the process or a driver has a reference to the process object.&lt;/p&gt;
</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3284713</link><pubDate>Sun, 04 Oct 2009 01:31:08 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3284713</guid><dc:creator>Osvaldo D Santos</dc:creator><description>&lt;p&gt;Hi Mark,&lt;/p&gt;
&lt;p&gt;Could you please give me an example of a process and a thread in a simple program?&lt;/p&gt;
&lt;p&gt;Thank you very much.&lt;/p&gt;
&lt;p&gt;Regards.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3291781</link><pubDate>Thu, 05 Nov 2009 18:45:14 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3291781</guid><dc:creator>Tom Slavens</dc:creator><description>&lt;p&gt;Mark,&lt;/p&gt;
&lt;p&gt;Someone already asked about fiber limits, but I didn't see any response to it and didn't find a later article on fibers. &amp;nbsp;Could you shed any light on fiber limits? &amp;nbsp;Thanks.&lt;/p&gt;</description></item><item><title>re: Pushing the Limits of Windows: Processes and Threads</title><link>http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx#3293640</link><pubDate>Fri, 13 Nov 2009 12:55:52 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3293640</guid><dc:creator>jam</dc:creator><description>&lt;p&gt;Mark,&lt;/p&gt;
&lt;p&gt;I have an unusual problem with my OpenGL program regarding &amp;quot;Empty Working Set&amp;quot;. Maybe you can help. &lt;/p&gt;
&lt;p&gt;On a 8GB XP64 workstation and 4 core, if I use a large amount of memory with my application (lets say about 4GB) suddenly, the rendering performance is slowing down dramatically (is getting a sort of stalled). First, after minimizing the window (enforcing EmptyWorkingSet) the renderer performs quite well again as he initially did. &lt;/p&gt;
&lt;p&gt;What can be the reason for this phenomenon. In case the application only uses about 2 GB the performance level is unchanged. I switched of the swap memory file as well. &lt;/p&gt;
&lt;p&gt;Thax! &lt;/p&gt;</description></item></channel></rss>