Giving more CPU time to a swapping process?

Bill Moran wmoran at
Thu Apr 6 14:01:02 UTC 2006

"Karl Ma" <freunden at> wrote:
> Hi,
> I have a python program in freebsd, doing a heavey indexing job involving a
> mega size array.
> The process is so memory-hungry that it starts swap after the physical RAM
> max out. (To be exact, I've lowered the per-process limitation to make this
> possible).

Why would you do this?  I dare you to lower the per-process limitation on
Window XP and see how the run times compare.  If you lower the amount of
resources, of course the process will perform badly.

Any time a process has to swap, performance will suffer _greatly_.  Either
invest in more RAM or optimize the process to be more RAM efficient.

> However, when I use top to monitor the status, the STATE of the process
> started to stay as "swread" for most of the time (instead of RUN before
> using swap) and its priority has dropped to -20; and the corresponding WCPU
> drops to around 1% only. And the CPU consumption time in total (for the
> whole job) would only increase a minute or two even the process has been
> running for more than a few hours.

Yes.  That is the system automatically doing what you are asking how to
do.  Since the process is spending so much time waiting for data to
swap in/out, the kernel lowers the priority (lower priority # on Unix
systems means the process has a higher priority) so the process will
be the first into the run queue when it has it's data.  However, it
can't run when it doesn't have the data it needs, and swapping takes

> In Windows XP, which has less per-task resource restriction (I guess?), I
> did successfully complete the task on the same hardware machine; although it
> takes more than 30 mins.

Did you lower the per-process limit on XP to match what you did on FreeBSD?
If not, then why are you trying to compare apples to elephants?

> How can I push up the priority of the whole paging task?

If you want to change the priority of the paging task, you'll need to
hack the kernel.

> How can I
> allocate more CPU attention to this process? I've tried using "nice"
> but it does not help.

nice is the correct command to allocate more CPU attention to the process.
However, the process can't use the CPU if it doesn't have it's data in

Bill Moran
Potential Technologies

More information about the freebsd-questions mailing list