D&C GLug - Home Page

[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]

Re: [LUG] Unusual activiy...

 

Grant Sewell wrote:
On Tue, 21 Jun 2005 09:39:11 +0100
John Daragon wrote:


I thought I'd just chip in here because a couple of preconceptions are getting in the way of finding out what's happening to your system :


Cheers.  The more the merrier!


1) nice. nice is a mechanism for decreasing task priority. This effectively decreases the probability that a task (if runnable) will be scheduled on return from interrupt. It's of marginal use in the control of tasks which perform much I/O. In this case, with low CPU usage on the machine, you can reduce the priority of this task as much as you like, and it'll still get run when it's not in iowait.


Yeah, got that. I think this had been established, but thanks anyway. (renice can also raise the scheduling priority of a task if run as root.)


2) Paging. If you have no swap space you will not be performing any page out operations. If you perform no page outs, then you will be performing no page ins, either (with the exception of loading executable code). So the I/O you are observing is not paging.

Of course, given that you can't page out, the amount of space you have for block buffers may be limited. What you *may* be observing is a (relative) failure of the block cache to perform efficiently because it has limited space to work with. The block/paging cache scheme varies from kernel to kernel, and I haven't looked at the Linux one for a while, so I'm disinclined to offer a concrete mechanism.

jd


Cheers John. One quick observation though: whenever this problem occurs, kswapd is *always* put quite near the top of the, erm, "top" output, so I would guess that it's a currently running daemon rather than a dormant one. Since I have no swap, is it possible that kswapd is actually doing something anyway, which is causing this problem?

Good question. I don't remember exactly what the kernel does these days, but most unices (UNIXs ??) use the paging mechanism to load executable code (when you refence a page that isn't yet in memory you get a page fault and the page is read from the executable....)


The kernel knows where executable code is, and it's not modifiable, so the page fault handler can just steal a frame in the page frame table and schedule a read from the executable file secure in the knowledge that the next time the stolen page is referenced, the whole operation will be repeated. So kswapd *could* be cycling executables through available memory, I guess. I don't think I've ever actually seen that happen before.

jd

--

John Daragon                                          john@xxxxxxxxxx
argv[0] limited
Lambs Lawn Cottage,  Staple Fitzpaine,  Taunton,  TA3 5SL,  UK
v +44 (0) 1460 234068   f +44 (0) 1460 234069   m +44 (0) 7836 576127



--
The Mailing List for the Devon & Cornwall LUG
Mail majordomo@xxxxxxxxxxxxx with "unsubscribe list" in the
message body to unsubscribe. FAQ: www.dcglug.org.uk/linux_adm/list-faq.html