Skip to contentSkip to conversation

new kmod.c - debuggers and testers needed

DISCUSSION Rik van Riel 5 participants 5 messages Apr 14, 1998 – Apr 20, 1998 1 message not in the archive Memory management

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw
Quoted 3 lines · Perry Harrington

Threads
are useful in their appropriate context, and kswapd, and kmod would benefit from them.

Hmm, maybe it would be useful for kswapd and bdflush to fork() off threads to do the actual disk I/O, so the main thread won't be blocked and paused... This could remove some bottlenecks.

Rik.

+-------------------------------------------+--------------------------+
| Linux: - LinuxHQ MM-patches page          | Scouting       webmaster |
|        - kswapd ask-him & complain-to guy | Vries    cubscout leader |
|     http://www.fys.ruu.nl/~riel/          | <[email protected]> |
+-------------------------------------------+--------------------------+
#2 lore raw
Quoted 10 lines · Perry Harrington
Quoted 4 lines

Threads
are useful in their appropriate context, and kswapd, and kmod would benefit from them.

Hmm, maybe it would be useful for kswapd and bdflush to fork() off threads to do the actual disk I/O, so the main thread won't be blocked and paused... This could remove some bottlenecks.

I was thinking that kswapd could use some of it's spare time to do an LRU paging scan, consolidate free space, and possibly do remapping of process memory spaces to make them more efficient (map pages to contiguous chunks of memory and swap).

Quoted 2 lines

Rik.

--Perry

Signature · 2 lines
Perry Harrington       Linux rules all OSes.    APSoft      ()
email: [email protected] 			Think Blue. /\
#3 lore raw

On Tue, 14 Apr 1998, Perry Harrington wrote:
...

Quoted 3 lines
Quoted 3 lines

Hmm, maybe it would be useful for kswapd and bdflush to fork() off threads to do the actual disk I/O, so the main thread won't be blocked and paused... This could remove some bottlenecks.

It's not bottlenecks so much as it is the need to do some things speculatively, but what I have in mind is too much to do for now.

Quoted 4 lines

I was thinking that kswapd could use some of it's spare time to do an LRU paging scan, consolidate free space, and possibly do remapping of process memory spaces to make them more efficient (map pages to contiguous chunks of memory and swap).

Two techniques that I think should help are:
1. make it easier to free contiguous pages (that's done and working for me)
2. change the allocation strategy to make our common cases not fragment memory all over the place - ie switch to a zone allocator for pages

It's far too late in 2.1 for any truely radical changes to combat fragmention to go into the mainstream kernel, hence we need to stick to tweaking the behaviour of our existing code. Perhaps get_free_page shouldn't break any of the higher memory order allocations for GFP_USER requests when such actions will leave insufficient high-order pages around. Couple that with kswapd now checking the available memory orders and normal systems shouldn't suffer swapout attacks (or at least those caused by a lack of free high-order page).

-ben

#4 lore raw

Kswapd future (was: Re: new kmod.c - debuggers and testers needed)

In reply to Perry Harrington
Quoted 6 lines · Perry Harrington
Quoted 6 lines · Perry Harrington
Quoted 4 lines

Threads
are useful in their appropriate context, and kswapd, and kmod would benefit from them.

Quoted 8 lines
Quoted 3 lines

Hmm, maybe it would be useful for kswapd and bdflush to fork() off threads to do the actual disk I/O, so the main thread won't be blocked and paused... This could remove some bottlenecks.

I was thinking that kswapd could use some of it's spare time to do an LRU paging scan, consolidate free space, and possibly do remapping of process memory spaces to make them more efficient (map pages to contiguous chunks of memory and swap).

Unfortunately, kswapd doesn't have such a thing as 'spare time'. It is a kernel daemon that does what's neccessary, but we want to keep it's CPU/IO footprint absolutely minimal since all other applications are more important...

Rik.

+-------------------------------------------+--------------------------+
| Linux: - LinuxHQ MM-patches page          | Scouting       webmaster |
|        - kswapd ask-him & complain-to guy | Vries    cubscout leader |
|     http://www.fys.ruu.nl/~riel/          | <[email protected]> |
+-------------------------------------------+--------------------------+
#5 lore raw
In reply to Rik van Riel

Hi,

Quoted 8 lines · Rik van Riel
Quoted 3 lines · Perry Harrington

Threads
are useful in their appropriate context, and kswapd, and kmod would benefit from them.

Hmm, maybe it would be useful for kswapd and bdflush to fork() off threads to do the actual disk I/O, so the main thread won't be blocked and paused... This could remove some bottlenecks.

bdflush does nothing except IO, so there's no real reason to twin-thread it. kswapd does indeed benefit from a separate IO thread, and I've already got patches which implement a kswiod for IO and a kswapd for page scanning. I'll post them once I've got them ready against the latest kernel: my current patches for this code are pretty old.

--Stephen