Re: [patch] my latest oom stuff

Andrea Arcangeli (andrea@e-mind.com)
Thu, 29 Oct 1998 01:38:05 +0100 (CET)


On Tue, 27 Oct 1998, Andrea Arcangeli wrote:

>If I change __get_free_pages this way (incremental patch against the last
>one) I can stress very better the memory. At the time one of the process
>get a segfault the free memory is down to 20kbyte against the ~1mbyte of
>the other (more similar to the stock kernel) __get_free_pages()
>implementation.

I understood why you want always some memory free (fragmentation). Best
late than never ;-).

[change topic]

I done a new patch completly different (and more aggressive in code
changed ;-) than the last ones. The nasty problem with checking
nr_free_pages is that doesn' t fix swapoff -a while all the swap is full
of my leak proggy running in background. Really I could do some other hack
to cause nr_free_pages to became the size without the swap included after
I run swapoff -a but it' s sure not the right thing to do...

So I mainly redesigned the whole page freeing code to return IMPOSSIBLE
POSSIBLE or DONE. These three symbols mean respecivly that there is no way
to free pages, that it' s possible but it' s not been done, that we have
just freed the page. This new patch really does the right thing. I also
left a printk("OOMOOM\n") that say you when my code has detected the total
OOM inside try_to_free_pages (IMPOSSIBLE). A msec after OOM is printed on
the console the faulting process get killed right. Now I can run swapoff
-a with 50mbyte of swap used by my evil proggy and swapoff kill one by one
all faulting process and exit succesfully. The reason I don' t like the
nr_free_pages is that it doesn' t automagically fix swapoff -a. If the mm
system would be well designed (as I think that does this my new patch)
swapoff -a should be automagically fixed. At first I thought to implement
a is_reall_oom() but I found myself reimplementing shrink_mmap() and
friends, and I realized that inside such functions we really have all info
we need but we was not used to use it ;-).

Here the patch:

begin 664 oom-21-pre-2.1.127-2.diff.gz
M'XL("$2U-S8"`V]O;2TR,2UP<F4M,BXQ+C$R-RTR+F1I9F8`K3OY6^-&LC^;
MOZ*';!@9R\;RP6$&$G8&$K[`P`.2><>^3Y^PVK86'8X.&#:9_=M?576U+LL,
MLV_GP%C=55U=77>USD-7?IX(WPNSSSM!L#/S?!DXR]YTP_5F,]'-&H8F5@__
M#M</P=]1;V^CV^V^`-ZZRZ2XFJ9BL"?Z^Y/18#+>%];!P?Y&I]-I@&O=+3(U
M_T#TK<G`FHPL-?_''T5W;.Z*SMBT+/'CCQM";.]LB`VQL[W1$=LB6[I.*NUD
MX<32M0'9T@OGB=$V"5R(D]"-I2-.XJD3SJ7O$=!'^23.KD4LTT?'%WXT]Z8B
MC823I5'@P!?']Y^%*U,)%`&T+ZZN+AEA$[Z=C<Y&!^@!TL3=PDL$[DLLG-#U
M92+2A11S&<H8%J&!`*@4"6P\3+UI(K)$NN+^F:"#*$G%9AC%@>-OTNSD.4EE
MD`CC/DO%<Y0)-PK?IF)GX3S*'20:P&$)+YD0`ESLX]EM"53AAXEN1/,$'KZ,
M99CZSZ:81;&0GYU@Z<LV\=H:CLT#T;%&??A`=K>2-,Z`#_<9@MD+Z;AB.PV6
MIMB^7QSB2;2\F3"NG;F\B*8/TC66\&N[O=%MM>81K!O*S^GA1H>_><$R2A+O
MWI>'#&G,9TLXN.1!;`G;_NGLVOYP>=(66UOB#2*%+]^"<6=;G'DQ<#&:"3A&
M$\Z/F`]"0LQ!5&\3>$H\F"+KO118I_]LBUD<!<()GWG'B?#"'!(6P.,F1HU'
MYAXP:GP`'\@H&,/5;^2,CB02R1.<<P3'!G0P,D*2D`2W://,U0Q4-;8#+S34
M-FO[;-KH%UH1%OPD!<@BR$2ZB*,GX3PYST*I@UK-%"@Z3Q(%('#B!T7]7M\<
MX#GOC?&3#IK(OR,D2'IWZDQYVXG"&D2Q%,Y\'DL@XU&"CJB-Y`)P"V#O$8I/
M3/Q!PRU7^J!,-G+61M3VM)AT2/MM@2YF<2@LM5^U81!UVFH+-\O+I#));=`L
M>^I+)[;A\(SKG^SB.$VQA6B[QS/?F2<%"6F431<V#E66O0=E?BBO66:Q7A?F
M5R`U+6HA?/8J9`0RIZVO'O@J</6XD4-!]"AM+XQ<N;*1*ONJW/O"DGF>@N"'
M$<BC*([6%$FDA`-%"$0$[%\X[R$(Z,+Y3'@I6+)$W$L9EK4FEE,V(0IR%DN)
M<PO1_M:3HGV4N%#G(.\"+)B'6V"%*G;R0UFM%F@_TOC93B,;2;/5=!B`9?''
M+B]8,*Z[NKIB8:.A@95<.7,R/YTP8:0=*5A]`5!H=>,),K:LFT@X*A*;D$'?
M,O=%9]#?-:V!TL&I`[:CKU'"82W@--3&OFQTT2!,@%`FN@^TE:B:`*4\`D;T
M_/+ZZO;V_*\7ISBK>4YY!NZU.OKAZB.,"#(T7IB"48F]\,%&]V7@]V7L1;&7
M@@C@-VW%E1L96'VTC@-+6T=P(PZX.Y&%B3</08#\"#8V]<%EB"/<B6A5AWPO
M`'8=B3`+[.7B.2$[=%CX(_P.$HH?>'9(PC3*PA2(^&SJ7[T0CV_=F)FSQ4;J
M)!."QZ!GPR.#*'GW;M`6Q\>@P;SKXV.+3$&.;?U4F$<\&5BFU0>F#/NFM5>R
MN7BL-BC9`H4;=#SV(\<%/J!S)K/ZX"VUJ:5M'PFE.3F@LA":FVH0CLD.8Q+?
M+QB@M%K)DY=.%P:?(YQW84;,XOS:./4/_$'"R((P(:VH"T=IDI8E-7&%L6R9
M"@W3<(6<3I2Q`CW$_ZC&7Z6TJL$`GA]<MWNHC8%B!]E-\>>?S!UV[FW%.'V&
M"$5'!5$0BN\8%90/BCD?R`##S-RR?A%/"XSJC$)FCD4?S4\A&?"`['1);PM-
MJ['JAS(SQ:2NRDH=(=@D+XXB!;&Q-1CNFWMC12FC#1[L9<HL>PR<[O%C0$RT
MEW&4MAE1A[7R,?)<'4HCMZOAM,$J!QC@L6/SUVTURU0^2X5/51UV7!=C!=`S
MP`LA6>S-D2B0,)2OY=R%A]OP@0*Q#-2W0'TC@&WXP&^\(,;,RP6:V6T*HFUX
M`">RI>B@'08!"#X/*2Z[T5-HZ$=M]0R61#6!]:/9+)&I4<%@:KK;9#S(:[MV
M"'PQD%BE(.01(+@K3[EW7)XA2']`_\/TP?CE].:C?7IS(S:;DY6)`$"D1AC?
M]_?]S^V_A9O$5`Y)$37D*8R:E`<?D5O%==N'=8*4O@,K<9=!ODN8V["W(-];
ML&YO@=X;S_@7=A>LW5V@=Q?DNPORW07K=T=F!>5$[RZH[DX3#S,0/WX&#X@V
MY-\AFP+91AEKPXF].0(`(N@K`+D4MU>X!5]G?I:H.!-#C]@)#&6Y</YA/JZ"
M0!IA):J<"VQ'*6\JE>YH.K9K>%+_?BT6\.E`%9KC;%E1`.)?@^+7<^@U6H])
M9*'SS0J?#S<J/D6'@(7TC:(_2/U^N[1O?SZY.?V0"Q@O2#GS-GXLX<`+.,]7
ML1EBP\'";VE(9?*W^?.(4$"X:;L0N<;/W6-7!=.'99CZ;CF54H?;:J%+9F8#
M0@('UT(QT6$Q59O#?&+)OI#/IN]$,%/,[DY-5[M4P^B<PM0+,R:S]8*5KLH`
M'P+1DA^`0O*%@P+\3_Z$I<$+?0]B5XR7N#1C)\_A5,LB6F0\4<C]UW`+'(VY
M$LGE7B!_3`M0U,]N#-P7NK'A8*3#Q55%0=PE^88I)3595O6$U21'D^M)#4DG
MYV==^,L3";="I\.O5$<D>L!)H\";@D!-C2T.$?[G\N3:_GBCTK3_[5$X0)._
M".E#\//'QGFM0A>L*<\%E0+<NN=8F+.JA;GJA-99[%&530R$=3`9#";#@X:J
M7,`E.5W"ZV-)KM^?]/>+DMSH8!_+1/BQJP\,,\`C2@1S03_4`ZX*`05&;.2C
ML0B`#,&(JYLGMWP*`*TDR@B6Q+,N'3>F`W@DXIW`Y[0*2&Z<0M!4>S"AB;2\
M#%V&Z_@R+#W"G\<%('[]H?IU@G-41#CNDXB.^V.NB^GH,@>(E@E&?>7OW>,L
MA)VJ(+-A@(!1F>"_]P_)7FN509VO,DC452;&\J2!P0QBAVTH,?T'H"7G5!WG
MU>OR2#,=']**)JDLC[*(C5X<A;_[/6M8%=$F+`WEXR9!+8.^7$$>XMD-V;8(
M5:D5[Z/E,]C%12J,]VV<:U&-=T`_A_1S),0%K):(NRB&F,!-%"36N40LHWCN
MA!Z65P<'/6O0.QB;XA9LT4*&XNX)A-Z35&[^M]:;=?W[.S`U?@9^[9WB![B)
MF3?O+8Y5`C,>F=8!9C!C<]AG#25/"<I(J71/)29AK.HC]$Q7R\@^H]:JO%(K
M<+F>0O/STBWL^Q,8N_<7O][>G=[8ER?_R74I2%3P`YAP$3WE%0-A8'FD+>CL
MP/-$82*"#/0[C%(]/\FF4UP6B,;RE.=B&06KWB#,439?8"(6Q<]ZN@/JBM66
M*/-IYERF5)'I]7C&#GTB"]ZH_6"!N5Q[-E3Q^?+T@_B3"]$_G__T,T=Y.GDF
MV++G7DV2RV6DYNP8V:(BI&_@BP9X+6/T_!<XPU-VBA!DI19_<?5)!R*J)AVI
MB@L]0C?&@PU[KF7V#0B^Y$DTUG7`\=I8P;"]^/<$]F-L%0I.`R8'#2B5-Y?_
M\>OIKZ<0C;LR-BN$ZQ8"S2.L6:CQ@CM/8>\OH=[H?`><Z%-QG>K]6`4%!LX<
M"(FHDS+S@*5.^$S%.1/&WOJ^X+3[XZ\7%[KB#H\5@B?G04*4+1ZP^.T*R+>>
M;#H7^0BFXMF3/N'U4CY4T'4X'=+CO0,T70.P33HP2L"\NYDOC;9N`W2^`_ON
MS3:8MY.B"-"G/+]NUJD$3]6&)K->'F6#/'AQE`*/0=6J-R%IW3JI,M$C88W)
MJEL-5KT,VOH$'"<0B#WV)^/^Q!H65MWJ#RALA`^NTE!F\;R4XO@(+1NBHDX8
M>6`2/TA&.740+<HG<':'&AX0O,TBG?.^,99<F0:)NOUT;7^Z.;\[O?JEE/,E
M3TO[*:9Z"AAN1*@R4<"*`%=G9[>G=P;E&FW=[.(90-X2??SG*F%J])`;<73R
MUHB*AK@[G)&%V,[#$ZZEWXAGDW;A9DL?7`JDQ\#N[_>7&,0`"8*R;PS"J2&(
M@H*9N."L%_[8]GWF^9!KV$IZ;`Y_C7[;%'H;G>JNT9Z5*?ET<O/Q_.-/R*-7
M44,]LB>P?5(P1NDJLL0WD25*:7B#Q$,TORZ*R8=6P^N5H9ZU6X^P5^:\,LC.
MX5Z.LZW]7>HRP@>+.&6@*+E;CX'O@6\X!)$/\,'VL@U?:`@>J.HP>W32"WQ&
MX?.1"H>UM]\F/=`0RF\_!N3E*;E3KOZWRY.+BZOW-GQ^^'!38(-#H-]U`/N-
MP.P^1(%$=,7UR4^G]NWY?Y]RL^T!\2%46[?"4!"X!+MZU@G:S\:C5B-\5..U
M(X,>&+3]^D%7@5\9HVJPE^/3/53U/<XL,&)D3P$\`FT7>[#@P:X0R315PS>4
M#;@\S9ZFONJ70*J*;J7H/$/\@*UL;N(F(H3(0;H*"1J=&-M+V-WFRP+WSO2!
M7%P>)BX@0IX(Y,C!GBENO`?QZ(3P*?V>"FXU+3=W11Q#/71%7$]\A`B']U/X
M+J(SSD*BRA'JRH-""(9@"OHM(.!:"/<Y=""Q+E!#U'I&49BMXIQV[Z6;'O_N
MT%N(WV2<0&`V$7\YAY/1QVL^"A0HA-OI#W8&0P&*;XTFX+?@T,3IYZ7XBP[=
M*7^V2*]'17\,^\P)UD<X4\X#ID3Z[%ZX.U(IAK;6M/QTWW=Y#Q$/*!9UW54V
MR10,QM2-&@WV]4V/%ET@<>BR@#--,^(-LOHMU@CAE*CZ0><%!CCS4VX3YVU7
M6@4(L_D(#5J]U+%!TV.U&SK6*UU'W"J5+RM=DW6;+3=%1N`X]V%?(QTRY<4M
M[&_;]23&J#8OR2:6($J-0=5D](YV]:\02BYU?Q$>F_1@?5-Q9UN<^$_.<P*)
ME!>(VXN3OZKV-8@ZIHQ*GC$^3T!0GWJ*L0]83>*<7CK+/-#EIN)H;)D#"[8[
M'IC#L0X1@8YBW=(]$VPNVO=1'$=/H(+8#./[")4!.J!*M[=TA(>J-%O9F<J-
MX/SQ,;L5-U*?NJ/=;55Z>BMXVTWW0*H=RP:8%_.PAF[ENH1L7;_R:WE-,W"_
ME-ZT2A@U.ZPR.]25F&_@12/`-S.B2MR@(&Y0(H[U^?7$-0/\/XD;%L0-52K)
M`N$JX56*4Y-24HZ](5G9_7T=0\.^N#.<]VT-#R(.U)@VAN5]SJJJ9H<:2953
M;JNB7,--BCPK?HVM.E!W&ZVA.58$ZJX8Q=3"V+S%<B8Z:?:@C]_WMA.*D&&[
M2;V/2_5V#@JTQS1T-4<[3-6$H:EZ#C6=6(FK4^G<M`ZKKI_RPT?BP^F9?7US
M?@6)T7^)=^]8%'*%T<+T`M#Q<1THOU.S'HI;@'G[O-@"-;:^`Q1>*%O,A5B&
MWE32IF!/;0HV_P;0!H^G("W=X])2=>YIR'8#<KPS4T6M</,C]'8#K#-5;_DY
MGPVZWEB["X:/FQ8I8B9&CY8U7XM$L[(7#/%@VP365G/*-0,%QM(/.52]&<BX
M9#@'&@Q\Q`)#B<?A8=Z>JXE5WHMK\K%]\OP536C7[H.44'$7@;_9SJ/C^<Z]
MJGA4=YP?@!;8.M95*=`SR\/ED@HWQ3JDH^I&KZ2P>!Y'<%(4`V%H[3J`)^S1
M%%)2"($I-'J0<2A]O/&%5V4I$L8`VPN]5(>VJK8SMD:F-03MW]O5310J4RD$
M1EM'#6"+<`V9$IY[5*M<7C$^C`*IKHDEF%/*6%U"<Q18+.>9[\3YRGA=],GS
M?0A+'9^*4G2WE?$I&(ZY.31>8G$)L$>A6$`D'V1376+$.!&EK4=@6&"=9C'>
M+*XHE%%1^6TQ:(L=-.E=F*\K;'?2]XD01@Q)"[`Y`%0Z('V+5T_%)H]S@32*
M-TV%`+,)FJD*:$B5NI!74)HLL`)*Y4]G2@D&E=P4/+#)B?&Z=@)>3TJQN5KK
M;F]"JK&I)&:3L:ES'.Z9D+QWQ@<#T^*#Q--65UU3+Y"QJM65U!3XPKS"`?9$
M%H9.X%RK[5-J:!$:Q;."R=H_WIW<_F*??[P[O;GY]?J.W1!$F^#E(,.B]>S?
M,YE)8RO]W78]](\<M:N6$2[G^(G!F%7M?BTH*HXJ8`N\[AS(>Y2Y2,@0E52+
M%.6@8%4>Q+V<X4G,(Y)6'Q++G@*FNC/QQX9TPWN4XD\(D]Z]HU["W?GEZ8VZ
M*?::_:X41EM(`$(D/2R_9LNDTV$&%AP%9'_W9C,/;Q9V.6;%Z*;9AAWF@=$:
M\R2.=7:C35"W%&CP2N+-4>E,*W:(C:XN[%+&D.B:,$FOA#B=1'@A8ZR4!,[S
MO<3A)P=U!6]X/ZCW`<0#:#D=B$HC*K*'56KN:^[NFR,P0KN0B>[K%RR4A?@[
M=AX2(!WO^>KZ]B:U'Y)D$Q=+M=JJN_&HAUHQ*<F&F4MEM8J.1D^EP;F7*SQ"
MRRJ>YL\&Q3,,#UNMD;J,NJJ?E=L%16,JO_Q)N9U*W+@:P%$^W65MS-FZ*P:9
M:\.Y2.H*\?69?7FJBESZSGEM#HAV:5)5W')ZFN2N%-/F'2P%0,ZN1B$\*=]'
M['95GZNVORUA%'S_,W?)I;N?ND4EZ`4#O.,MTES(``D<O*[3D-UU(YF$;U,-
MHPPP&VMZ`Z+'0ZK9A+O(&52)6%124/7(>7[Q(G^^DF?46`#G4>0;_TJ:!PAJ
M!9>RUK?*MQNJ=T3Y.NCKLU$4G5)^424WO\O3XBY765KK0KAU)/Y9D4*5ZJQ`
MYMF/$C1X@%E&%V,1%(AJ.PO4/(HI1$"34(DFQ':K#U8JC(2RP?3$@B>Z(T81
MDQ\]=?.`@:6*9@[J,U69L#)G6)L#D8]/KU%A-:]+1KXTG>BG=[26/E9B`B]T
MNW,GD%QN1/(WYU'DAEB^:F_2_%D63M%T8>U1\6B'Y+,W[>$X!#[5^U/E.%KM
MNW)?'CP$&:)9Z8:X,@1\C8J\KKY2M2QR$GQ^J.]&+QFFM>P>DUB!8Z"N4LY)
M2,F*Y`AG(BUVMBRJ<\JD?-$MKX8,-_?S8`0<\#BQ!(E*\*P-L/%*G(\P:\;7
M2%*.S)ZXJ,R@9=M?^/W5M)\N1:UFVF"LJEG#'\V$4;AZ=779PQ==1%)Z,4(7
MM,L189D4;F!M`K#Z!_EU^W!]"J_RS_7D5E*<,J$+2`CH!9PR447\[F92O7YC
M4@4VU@Q$D&)_P%EL\S?SLEZ':"80.=Y`W&/.1G5#0ATOOT0VAZ'TS4L'6&L%
MTIW@%3<]H9<8.1;'C>E@YHUF^@I>8/9WF"//2K%"_FCE`0*5<MJ757*U+/(J
M%>2"4'$5^JL5A$K6V:2'%/!]X=K\KC4TAQ"4[?7SC(*B.-H%9Q73!T[.R0Q4
M@A]^54;%.NBS><L8_G;J>?M+R79Q!>*6_3&]DZ*PH6BE%(9ZZ/G!BJ>)FAS-
M6-W4`@!1F@IR'U$2F<^%O)A:THA:OW,)OW)Y1"67*C'=+&UFDUZ6R>+<QDU$
M'U9TPD3-1=E*E=_)[VJ`CS#9%0_+<W6.Z4*NDJ(AG6,RHMT;*04Z$C59K]?C
MET&[K1)5>:>@5G-719]ZP9UK/MU6#06]C:9Z=D?5&UH:MQI\5^O3K4/5#`&&
MN@%@L!X`G&4#`*?R5>4J36FK\7J>9U02O?QUA+)DOL'R&?#LU8PL,BDFHZYZ
MNC3[56)TE594V\M\YVY'MW=[BUJ7>75"[6;DV@ETN:#\7OUZ5*NMY]&PWGI>
MA:YWH`<3O(>3WY`<4"4:/ZP161Q.N_1UJE8K?SF[]/K]V;4Z,L'W!W.7JP+'
MGHJU2)TR?)-ZA@$<Q5+./5;1J%*`7HFP1;-2$:@GNDX\=?@%>YT$5EQQJU\9
M:$HDV8VT,)',7]+_(*>>*SFQ9E^$P8MZ2QX=,EE9(+#'Z:J0G\$NA*)F/$OF
/DHSQX<;_`77JW7%U00``
`
end

I hope to be not spamming... people tell me (privately) if you want the
ftp site next times... (I think it' s not a problem for Linus to get via
email instead).

And if I am going really out tell me so I' ll not wast my time continuing
this way. In practice everything is great so far though.

Andrea Arcangeli

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/