lkml.org 
[lkml]   [1997]   [Jun]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: buffers vs. pages vs. kernel speed
Date
From
David S. Miller wrote:
>
> What this patch does is to try all methods of freeing memory in turn,
> instead of trying one until it fails.
>
>Funny, that seems to be the intention of the code, but it was not
>coded that way perfectly ;-)

It was once coded the "right" way, but somebody apparently thought it
should be optimized, because in my version GCC doesn't remove the redundant
assignments to 'state'... not that that is necessary, as I think this
gets lost in the noise -- for the terminally greedy, below is a version
that's guaranteed to yield between 0.00001% and 0.01% better performance. ;-)

>But, firstly I want to get a new revision of my buffer cache and low
>memory fixes for 2.0.x out to people for testing, I will do that when
>I next wake up in the evening EST time.
>
Do both. I suspect that the two may not be entirely unrelated.

Index: mm/vmscan.c
===================================================================
RCS file: /usr/src/cvs/kernel/linux/mm/vmscan.c,v
retrieving revision 1.8
diff -u -r1.8 vmscan.c
--- vmscan.c 1997/05/19 21:23:07 1.8
+++ vmscan.c 1997/06/11 09:15:17
@@ -344,19 +344,23 @@
switch (state) {
do {
case 0:
- if (shrink_mmap(i, dma))
+ if (shrink_mmap(i, dma)) {
+ state = 1;
return 1;
- state = 1;
+ }
case 1:
- if (shm_swap(i, dma))
+ if (shm_swap(i, dma)) {
+ state = 2;
return 1;
- state = 2;
+ }
default:
- if (swap_out(i, dma, wait))
+ if (swap_out(i, dma, wait)) {
+ state = 0;
return 1;
- state = 0;
+ }
i--;
} while ((i - stop) >= 0);
+ state = 0;
}
/* This should never return failure, instead it should sleep
* and try again.

--
When pleasure remains, does it remain a pleasure?
--
Matthias Urlichs \ noris network GmbH / Xlink-POP Nürnberg
Schleiermacherstraße 12 \ Linux+Internet / EMail: urlichs@noris.de
90491 Nürnberg (Germany) \ Consulting+Programming+Networking+etc'ing
PGP: 1024/4F578875 1B 89 E2 1C 43 EA 80 44 15 D2 29 CF C6 C7 E0 DE
Click <A HREF="http://info.noris.de/~smurf/finger">here</A>. 42

\
 
 \ /
  Last update: 2005-03-22 13:39    [W:0.170 / U:0.248 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site