Wednesday, March 21, 2012
Nonpaged pool ? What is it ?
pool was empty .
We keep seeing the above errors and our server crashes. I am trying to
understand the basics here as to what is the nonpaged pool ?
And how does the pool become empty and what does it want to allocate ?
Whats a paged pool if theres a nonpaged pool ?
Thanks
Hello,
In article <#ThJVX#VFHA.3076@.TK2MSFTNGP12.phx.gbl>,
fatima_ja@.hotmail.com says...
> The server was unable to allocate from the system nonpaged pool because the
> pool was empty .
Yeah...
What you are running? Win2K3 on a 8 MB machine?! ;)
> We keep seeing the above errors and our server crashes. I am trying to
> understand the basics here as to what is the nonpaged pool ?
Kernel mode components can choose between paged- and nonpaged pool
memory pool, depends on there needs. User mode applications use always
the paged pool, except they lock memory to keep them resident. Paged
memory can be paged out, this means that your hard drive will be used as
memory. Nonpaged pool memory can't be paged out.
> And how does the pool become empty and what does it want to allocate ?
AFAIK if more nonpaged memory is required than available.
h.wulff
[dont send me an email]
|||Hi
Nonpaged pool. The portion of shared system memory that cannot be paged to
the disk paging file. Nonpaged pool memory can be accessed at any time
without causing a page fault.
Page fault. A page fault occurs when a thread accesses a page that is not
in memory. For more information about paging and other memory management
topics, see "Evaluating Memory and Cache Usage" in the Server Operations
Guide of the Microsoft? Windows 2000 Server Resource
Try this link for Windows 2000 Non-Paged Pool Is Exhausted ?
http://support.microsoft.com/default.aspx?kbid=296265
Regards
Ramki
Nonpaged pool ? What is it ?
pool was empty .
We keep seeing the above errors and our server crashes. I am trying to
understand the basics here as to what is the nonpaged pool ?
And how does the pool become empty and what does it want to allocate ?
Whats a paged pool if theres a nonpaged pool ?
ThanksHello,
In article <#ThJVX#VFHA.3076@.TK2MSFTNGP12.phx.gbl>,
fatima_ja@.hotmail.com says...
> The server was unable to allocate from the system nonpaged pool because th
e
> pool was empty .
Yeah...
What you are running? Win2K3 on a 8 MB machine?! ;)
> We keep seeing the above errors and our server crashes. I am trying to
> understand the basics here as to what is the nonpaged pool ?
Kernel mode components can choose between paged- and nonpaged pool
memory pool, depends on there needs. User mode applications use always
the paged pool, except they lock memory to keep them resident. Paged
memory can be paged out, this means that your hard drive will be used as
memory. Nonpaged pool memory can't be paged out.
> And how does the pool become empty and what does it want to allocate ?
AFAIK if more nonpaged memory is required than available.
h.wulff
[dont send me an email]|||Hi
Nonpaged pool. The portion of shared system memory that cannot be paged to
the disk paging file. Nonpaged pool memory can be accessed at any time
without causing a page fault.
Page fault. A page fault occurs when a thread accesses a page that is not
in memory. For more information about paging and other memory management
topics, see "Evaluating Memory and Cache Usage" in the Server Operations
Guide of the Microsoft? Windows 2000 Server Resource
Try this link for Windows 2000 Non-Paged Pool Is Exhausted ?
http://support.microsoft.com/default.aspx?kbid=296265
Regards
Ramki
Nonpaged pool ? What is it ?
pool was empty .
We keep seeing the above errors and our server crashes. I am trying to
understand the basics here as to what is the nonpaged pool ?
And how does the pool become empty and what does it want to allocate ?
Whats a paged pool if theres a nonpaged pool ?
ThanksHello,
In article <#ThJVX#VFHA.3076@.TK2MSFTNGP12.phx.gbl>,
fatima_ja@.hotmail.com says...
> The server was unable to allocate from the system nonpaged pool because the
> pool was empty .
Yeah...
What you are running? Win2K3 on a 8 MB machine?! ;)
> We keep seeing the above errors and our server crashes. I am trying to
> understand the basics here as to what is the nonpaged pool ?
Kernel mode components can choose between paged- and nonpaged pool
memory pool, depends on there needs. User mode applications use always
the paged pool, except they lock memory to keep them resident. Paged
memory can be paged out, this means that your hard drive will be used as
memory. Nonpaged pool memory can't be paged out.
> And how does the pool become empty and what does it want to allocate ?
AFAIK if more nonpaged memory is required than available.
--
h.wulff
[dont send me an email]|||Hi
Nonpaged pool. The portion of shared system memory that cannot be paged to
the disk paging file. Nonpaged pool memory can be accessed at any time
without causing a page fault.
Page fault. A page fault occurs when a thread accesses a page that is not
in memory. For more information about paging and other memory management
topics, see "Evaluating Memory and Cache Usage" in the Server Operations
Guide of the Microsoft® Windows 2000 Server Resource
Try this link for Windows 2000 Non-Paged Pool Is Exhausted ?
http://support.microsoft.com/default.aspx?kbid=296265
Regards
Ramki|||Hello
We have this same problem. Our sql reports in about once in two month
this in to system log
The server was unable to allocate from the system nonpaged poo
because the pool was empty.
After that SQL server stopts responding as well as other networ
related services. We are not using anything else on that server, n
IIS, no nothing just SQLserver 2000 SP3a, win2000 server sp4. Onl
thing we can do is to restart server.
What should I do to stopt this happening every two months...
Could this be caused becouse our server has 3gb of memory an
win2000server standard can't handel over 2 gb|||Hi Timolous,
This does not seems to be caused by the 3gb of RAM as Windows 2000 Server
supports 4 GB of RAM. May be the following link is helpful to you.
Regards,
Syed Zulfiqar
"timolous" <timo@.suorakanava-dot-fi.no-spam.invalid> wrote in message
news:Z96dneK4_ayZJS7fRVn_vg@.giganews.com...
> Hello!
> We have this same problem. Our sql reports in about once in two months
> this in to system log:
> The server was unable to allocate from the system nonpaged pool
> because the pool was empty.
> After that SQL server stopts responding as well as other network
> related services. We are not using anything else on that server, no
> IIS, no nothing just SQLserver 2000 SP3a, win2000 server sp4. Only
> thing we can do is to restart server.
> What should I do to stopt this happening every two months...?
> Could this be caused becouse our server has 3gb of memory and
> win2000server standard can't handel over 2 gb?
>|||Hi,
Here is the link
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q272568
Regards,
Syed Zulfiqar
Nonfatal Errors after Adding WindowsNT Event Log as Logging Provider
How do you keep the non-fatal error dialog box from coming up after you enable logging and specify the Windows NT Event Log as the log provider? I know the problem is that the "configuration" for a log provider is expected to have some value and none is needed for the Windows NT Event Log, but the message box is annoying when it comes up.
I could probably hack the XML for the package, but I have a customer who wants to add the Windows NT Event Log as a provider to a lot of packages, so hacking the XML for each package after adding the logging options doesn't sound like a great idea.
Anyone?
Thanks,
Dave Fackler
Hi Dave,
this was a problem with CTP15 and has been addressed since then. I'm afraid you'll have to wait until the next CTP is available.
regards,
ashsql
Tuesday, March 20, 2012
non-conflict errors
in merge replication using sql server 2005 and sql server compact, what happens when rows or columns cannot be inserted/updated/deleted because of some error other than a conflict? Are they handled differently tan change conflicts?
thanks,
bryan
The rows are retried and are still logged into the conflict table.|||what happens to the conflict table? does it just stay on the server for logging purposes? does it go back to the client? if so, what does the client do with it? is the client notified that entries are in the conflict table? can it be queried programmically and the conflict fixed and resubmitted?
thanks,
bryan
Friday, March 9, 2012
NoLock vs ReadPast
I have been experiencing deadlock errors with two stored procs that I am using.
SP1 is a read query that gets all unprocessed orders (status = 0)
SP2 is an insert query that inserts new orders (Status = 0) uses a transaction.
I have a multithreaded application and once in a while the read query (SP1) will try to read a new row that has just been inserted but not committed yet hence the deadlock arises.
If i use a hint "With(NoLocks)" this will be a dirty read and still read the uncommitted insert from SP2 - is this correct?
Where as if I use hint "With(ReadPast)" this will now only read committed rows and hence the deadlock should not arise - it will not read any uncommitted rows - Correct?
So I think that it is better to use READPAST than NOLOCK. Any orders that have status = 0 not picked up will get picked up on the next round when SP1 is executed again.
Any thougths or suggestions are always appreciated.
Jawahar
I have a lot of experience with NOLOCK. The basic different in NOLOCK and READPAST is that NOLOCK will read the uncommitted data, preventing blocking because of that specific read. However, READPAST skips those rows. If you are updating a row, then NOLOCK reads the uncommitted data if the transaction is still open. If you use READPAST, it doesn't read the row at all, as I understand it.
Since I have a lot of experience with NOLOCK, I would suggest NOLOCK because I understand it a lot better.
I'm not all that convinced that your reads are causing DEADLOCKS however. I wonder if you are getting multiple inserts or updates that are blocking each other. The read locks (READ COMMITTED), by default, will just wait until the insert is done and then read the new inserted row. NOLOCK just tells it not to wait and reads UNCOMMITTED.
To test this, I would use NOLOCK and see if you still have the same problem.
|||I would almost never suggest you use NOLOCK in a production environment. You don't want to have any chance that you have two users fetching the same row to process. So I would suggest you use readpast to read only committed rows, but skip those that are being inserted, in case that row fails.
As for deadlocks, I can't exactly fathom why this is occurring from the limited information. It is possible that you have indexing problems, causing full table scans to occur on selects... Can you post the table structure and queries.
|||I disagree about the production comment. If you are pulling reports, you want to be able to pull the same record quickly--regardless of locks. As for selecting the same record by two users at the same time, that would occur anyway whether you use NOLOCK or not--assuming that there is not an open transaction modifying the situation.|||There is a possibility for rows to show up twice when using NOLOCK because of page splitting so beware of the hint unless you know exactly how your data is used. This does not mean you should never use NOLOCK of course, there are many situations in which it is completely sane to use it but just remember the consequences.|||Chris:
I think you have misunderstood what Louis means. I think here when he says "production" he means as part of a record-updating process -- in which case if you are reading a record for update you would never want a dirty read -- using a NOLOCK hint -- but always want a "clean" read of the data.
|||Dave
Dave,
I think you are correct. I agree with the statement in that case :)
|||
All thank you for your insight
Here are my two sp that cause the Deadlock to occur sometims - I have poseted the queries ony not the whole SP with input paramters etc but the queries are the guts of the SP. I did tunr on Deadlock tracing and these SP were identified as the cause of the deadlock situtation - Many thanks -Jawahar
SP 1 - Read (currently there are no hints) - PLEASE note the queries are not optimized and do not follow good coding standards)
BEGIN
set rowcount @.nMaxMessages
select A.* from MsgRequest A
where ProcessingCode = 0
and RequestID = ( select Min(RequestID) from MsgRequest B where A.ClientID= B.ClientID and B.ProcessingCode = 0 )
and A.ClientID NOT IN (select ClientID from MsgRequest where ProcessingCode = 1)
order by ReceiveDT ASC
END
SP 2 Insert (currently there are no hints) - PLEASE note the queries are not optimized and do not follow good coding standards)
BEGIN
BEGIN TRAN
insert into MsgRequest ( ReceiveDT, ClientID, CommandCode, ProcessingCode, MessageLen, QueryParameterString,
MessageData, ServiceOrderID, NewServiceOrderFlag, ClientVersionNumber)
Values ( getdate(), @.ClientID, @.CommandCode, @.ProcessingCode, @.MessageLen, @.QueryParameterString,
@.MessageData, @.ServiceOrderID, @.NewServiceOrderFlag, @.ClientVersionNumber)
if (@.@.error != 0)
BEGIN
RAISERROR 20001 'Error in csp_MsgRequestInsert'
ROLLBACK TRAN
RETURN(1)
END
COMMIT
return (0)
END
Jawahar:
Is the RequestID column unique in the MsgRequest table? That is, is the RequestID a key to this table? Also, is the data returned by this procedure used as a select list or is this potentially used as the basis for a record update?
|||Dave
Dave,
Yes the RequestID is the Primary key
The data from the select is processed row by row using a multithreaded system. We run a windows service (multithreaded) to process the data (new orders).
Jawahar
|||Jawahar:
There are a few other things that I need to know:
How many rows are in the MsgRequest table ?|||
You need to first determine the cause of the deadlock before trying to use locking hints. What version of SQL Server are you using? Did you enable trace flag # 1204? In SQL Server 2005, there is a new trace flag# 1222 and trace events that will help identify the cause. See link below for troubleshooting steps for SQL Server 2000:
http://support.microsoft.com/default.aspx/kb/832524/
|||Jawahar:
Umachandar is right about the need to fully understand your deadlock. But I went ahead and attempted to mock up your select query.
First, I created an index on the MsgRequest table based on (1) ProcessingCode, (2) ClientID and (3) requestID. I figured that the requestID component was not completely necessary but I wanted to avoid some bookmark lookups so I included. When I got all done testing I tried recreating the index without the requestID component and found that when I removed the requestID component from the index my logical reads increased from 38 to 4007 so I left it in.
I was able to improve on the performance of your select query by eliminating one of the scans through the MsgRequest table. The query I used was:
select A.*
from msgRequest A
inner join
( select clientId,
max (processingCode) as max_processingCode,
min (requestID) as min_requestID
from msgRequest p
where processingCode between 0 and 1
group by clientId
) b
on a.requestID = b.min_requestID
and max_processingCode = 0
order by ReceiveDT ASC
This query returned for me the same rows as your original query was returning and ran with far less logical IO. I don't like the A.* syntax, but like you said ... Sometimes you got what you you got. Hopefully, this query will provide (1) a smaller lock profile and (2) a much smaller IO profile.
|||Dave
Jawahar:
One thing that I failed to point out is that my test was based on a relatively low cardinality of the '0' and '1' processing codes compared to all other processing codes. I used a 1000000 row test table with 8000 rows in the 1 process state and 800 rows in the 0 process state because it looks to me like we are talking about a "new record" process.
|||Dave
Dave
Thanks for your new suggestion on the Selection query - sorry for the late reply
I am using SQL Sever 2000
I did run the trace DBCC Trace 1204 and 3605 and found that the two SP I have listed are the ones that are involved in the Deadlock. The Select SP being the victim each time. Currently I only have an index on the RequestID column, but adding the ClientID and Processing code is a good Idea.
Out table at present has 600, 000 records. 99.33 % of the records have already been processed and have a Processing code of = 2 and we never touch those records. At any given time we should not have more than 15 to 20 records of the Processing code = 0 and 15 to 20 records Processing code = 1.
would the DBCC trace be helpful to you?
Thanks again for your suggestions I will try yor revised query. Another process that I might add is to archive Rows that have already been processd to an archive table to help reduce the size of the request table.
-jawahar
Wednesday, March 7, 2012
Noise Words
without quotes - so we removed all single-letter words from the noise
word files (.eng, .enu and .dat). We then started Microsoft Search
again and did a full population - "rebuild" was grayed out.
This stopped the error but now we get no results.
Questions:
1) Why are we getting no results?
2) Is "&" a word breaker? Can we change this?
Are there any messages in the event log from MSSearch or MSSCI?
Hilary Cotter
Director of Text Mining and Database Strategy
RelevantNOISE.Com - Dedicated to mining blogs for business intelligence.
This posting is my own and doesn't necessarily represent RelevantNoise's
positions, strategies or opinions.
Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html
Looking for a FAQ on Indexing Services/SQL FTS
http://www.indexserverfaq.com
<s.cawood@.gmail.com> wrote in message
news:1143716799.014202.246690@.i39g2000cwa.googlegr oups.com...
> We were getting errors when users searched for the term "r&d" - with or
> without quotes - so we removed all single-letter words from the noise
> word files (.eng, .enu and .dat). We then started Microsoft Search
> again and did a full population - "rebuild" was grayed out.
> This stopped the error but now we get no results.
> Questions:
> 1) Why are we getting no results?
> 2) Is "&" a word breaker? Can we change this?
>